use of alfio.model.api.v1.admin.EventCreationRequest 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;
}
use of alfio.model.api.v1.admin.EventCreationRequest in project alf.io by alfio-event.
the class EventApiV1Controller method updateEvent.
private Optional<Event> updateEvent(String slug, EventCreationRequest request, Principal user, String imageRef) {
Organization organization = userManager.findUserOrganizations(user.getName()).get(0);
EventWithAdditionalInfo original = eventStatisticsManager.getEventWithAdditionalInfo(slug, user.getName());
Event event = original.getEvent();
EventModification em = request.toEventModificationUpdate(original, organization, imageRef);
eventManager.updateEventHeader(event, em, user.getName());
eventManager.updateEventPrices(event, em, user.getName());
if (em.getTicketCategories() != null && !em.getTicketCategories().isEmpty()) {
em.getTicketCategories().forEach(c -> findCategoryByName(event, c.getName()).ifPresent(originalCategory -> eventManager.updateCategory(originalCategory.getId(), event.getId(), c, user.getName())));
}
return eventManager.getOptionalByName(slug, user.getName());
}
use of alfio.model.api.v1.admin.EventCreationRequest in project alf.io by alfio-event.
the class EventApiV1IntegrationTest method createTest.
@Test
public void createTest() {
EventCreationRequest eventCreationRequest = creationRequest();
String shortName = controller.create(eventCreationRequest, mockPrincipal).getBody();
Event event = eventManager.getSingleEvent(shortName, username);
List<TicketCategory> tickets = ticketCategoryRepository.findAllTicketCategories(event.getId());
assertEquals(eventCreationRequest.getTitle(), event.getDisplayName());
assertEquals(eventCreationRequest.getSlug(), event.getShortName());
assertEquals(eventCreationRequest.getTickets().getCurrency(), event.getCurrency());
assertEquals(eventCreationRequest.getWebsiteUrl(), event.getWebsiteUrl());
assertEquals(eventCreationRequest.getTickets().getPaymentMethods(), event.getAllowedPaymentProxies());
Assertions.assertTrue(event.getFileBlobIdIsPresent());
assertEquals(eventCreationRequest.getTickets().getCategories().size(), tickets.size());
tickets.forEach((t) -> {
List<EventCreationRequest.CategoryRequest> requestCategories = eventCreationRequest.getTickets().getCategories().stream().filter((rt) -> rt.getName().equals(t.getName())).collect(Collectors.toList());
assertEquals(1, requestCategories.size());
requestCategories.forEach((rtc) -> {
assertEquals(t.getMaxTickets(), rtc.getMaxTickets().intValue());
assertEquals(0, t.getPrice().compareTo(rtc.getPrice()));
});
});
}
use of alfio.model.api.v1.admin.EventCreationRequest in project alf.io by alfio-event.
the class EventApiV1IntegrationTest method updateTest.
@Test
public void updateTest() {
controller.create(creationRequest(), mockPrincipal);
String newTitle = "new title";
EventCreationRequest updateRequest = new EventCreationRequest(newTitle, null, null, null, null, null, null, null, null, null, null, null, new EventCreationRequest.TicketRequest(null, 10, null, null, null, null, null, null), null, null);
controller.update(shortName, updateRequest, mockPrincipal);
Event event = eventManager.getSingleEvent(shortName, username);
assertEquals(newTitle, event.getDisplayName());
}
Aggregations