Search in sources :

Example 1 with LinkedGroupModification

use of alfio.model.modification.LinkedGroupModification in project alf.io by alfio-event.

the class EventApiV1Controller method insertEvent.

private Optional<Event> insertEvent(EventCreationRequest request, Principal user, String imageRef) {
    Organization organization = userManager.findUserOrganizations(user.getName()).get(0);
    EventModification em = request.toEventModification(organization, eventNameManager::generateShortName, imageRef);
    eventManager.createEvent(em, user.getName());
    Optional<Event> event = eventManager.getOptionalByName(em.getShortName(), user.getName());
    event.ifPresent(e -> {
        Optional.ofNullable(request.getTickets().getPromoCodes()).ifPresent(promoCodes -> promoCodes.forEach(// TODO add ref to categories
        pc -> eventManager.addPromoCode(pc.getName(), e.getId(), organization.getId(), ZonedDateTime.of(pc.getValidFrom(), e.getZoneId()), ZonedDateTime.of(pc.getValidTo(), e.getZoneId()), pc.getDiscount(), pc.getDiscountType(), Collections.emptyList(), null, null, null, PromoCodeDiscount.CodeType.DISCOUNT, null)));
        // link categories to groups, if any
        request.getTickets().getCategories().stream().filter(cr -> cr.getGroupLink() != null && cr.getGroupLink().getGroupId() != null).map(cr -> Pair.of(cr, groupManager.findById(cr.getGroupLink().getGroupId(), organization.getId()))).forEach(link -> {
            if (link.getRight().isPresent()) {
                Group group = link.getRight().get();
                EventCreationRequest.CategoryRequest categoryRequest = link.getLeft();
                findCategoryByName(e, categoryRequest.getName()).ifPresent(category -> {
                    EventCreationRequest.GroupLinkRequest groupLinkRequest = categoryRequest.getGroupLink();
                    LinkedGroupModification modification = new LinkedGroupModification(null, group.getId(), e.getId(), category.getId(), groupLinkRequest.getType(), groupLinkRequest.getMatchType(), groupLinkRequest.getMaxAllocation());
                    groupManager.createLink(group.getId(), e.getId(), modification);
                });
            }
        });
        if (!CollectionUtils.isEmpty(request.getExtensionSettings())) {
            request.getExtensionSettings().stream().collect(Collectors.groupingBy(EventCreationRequest.ExtensionSetting::getExtensionId)).forEach((id, settings) -> {
                List<ExtensionSupport.ExtensionMetadataIdAndName> metadata = extensionService.getSingle(organization, e, id).map(es -> extensionRepository.findAllParametersForExtension(es.getId())).orElseGet(Collections::emptyList);
                List<ExtensionMetadataValue> values = settings.stream().map(es -> Pair.of(es, metadata.stream().filter(mm -> mm.getName().equals(es.getKey())).findFirst())).filter(pair -> {
                    if (pair.getRight().isEmpty()) {
                        log.warn("ignoring non-existent extension setting key {}", pair.getLeft().getKey());
                    }
                    return pair.getRight().isPresent();
                }).map(pair -> new ExtensionMetadataValue(pair.getRight().get().getId(), pair.getLeft().getValue())).collect(Collectors.toList());
                extensionService.bulkUpdateEventSettings(organization, e, values);
            });
        }
    });
    return event;
}
Also used : ValidationResult(alfio.model.result.ValidationResult) EventApiController.validateEvent(alfio.controller.api.admin.EventApiController.validateEvent) alfio.manager(alfio.manager) Group(alfio.model.group.Group) Errors(org.springframework.validation.Errors) ConfigurationLevel(alfio.manager.system.ConfigurationLevel) ZonedDateTime(java.time.ZonedDateTime) ConfigurationManager(alfio.manager.system.ConfigurationManager) ExtensionRepository(alfio.repository.ExtensionRepository) EventModification(alfio.model.modification.EventModification) AtomicReference(java.util.concurrent.atomic.AtomicReference) Json(alfio.util.Json) ErrorCode(alfio.model.result.ErrorCode) Pair(org.apache.commons.lang3.tuple.Pair) CollectionUtils(org.apache.commons.collections.CollectionUtils) ExtensionMetadataValue(alfio.model.ExtensionSupport.ExtensionMetadataValue) BeanPropertyBindingResult(org.springframework.validation.BeanPropertyBindingResult) Organization(alfio.model.user.Organization) EventCreationRequest(alfio.model.api.v1.admin.EventCreationRequest) Collectors(java.util.stream.Collectors) LinkedGroupModification(alfio.model.modification.LinkedGroupModification) Result(alfio.model.result.Result) List(java.util.List) ExtensionService(alfio.extension.ExtensionService) Principal(java.security.Principal) StringUtils.isNotBlank(org.apache.commons.lang3.StringUtils.isNotBlank) StringUtils.isBlank(org.apache.commons.lang3.StringUtils.isBlank) alfio.model(alfio.model) UserManager(alfio.manager.user.UserManager) Log4j2(lombok.extern.log4j.Log4j2) org.springframework.web.bind.annotation(org.springframework.web.bind.annotation) Optional(java.util.Optional) ResponseEntity(org.springframework.http.ResponseEntity) AllArgsConstructor(lombok.AllArgsConstructor) ConfigurationKeys(alfio.model.system.ConfigurationKeys) Collections(java.util.Collections) Transactional(org.springframework.transaction.annotation.Transactional) Group(alfio.model.group.Group) Organization(alfio.model.user.Organization) EventCreationRequest(alfio.model.api.v1.admin.EventCreationRequest) LinkedGroupModification(alfio.model.modification.LinkedGroupModification) EventModification(alfio.model.modification.EventModification) ExtensionMetadataValue(alfio.model.ExtensionSupport.ExtensionMetadataValue) EventApiController.validateEvent(alfio.controller.api.admin.EventApiController.validateEvent) Collections(java.util.Collections)

Aggregations

EventApiController.validateEvent (alfio.controller.api.admin.EventApiController.validateEvent)1 ExtensionService (alfio.extension.ExtensionService)1 alfio.manager (alfio.manager)1 ConfigurationLevel (alfio.manager.system.ConfigurationLevel)1 ConfigurationManager (alfio.manager.system.ConfigurationManager)1 UserManager (alfio.manager.user.UserManager)1 alfio.model (alfio.model)1 ExtensionMetadataValue (alfio.model.ExtensionSupport.ExtensionMetadataValue)1 EventCreationRequest (alfio.model.api.v1.admin.EventCreationRequest)1 Group (alfio.model.group.Group)1 EventModification (alfio.model.modification.EventModification)1 LinkedGroupModification (alfio.model.modification.LinkedGroupModification)1 ErrorCode (alfio.model.result.ErrorCode)1 Result (alfio.model.result.Result)1 ValidationResult (alfio.model.result.ValidationResult)1 ConfigurationKeys (alfio.model.system.ConfigurationKeys)1 Organization (alfio.model.user.Organization)1 ExtensionRepository (alfio.repository.ExtensionRepository)1 Json (alfio.util.Json)1 Principal (java.security.Principal)1