Search in sources :

Example 1 with TemplateManager

use of alfio.util.TemplateManager in project alf.io by alfio-event.

the class CustomMessageManager method preview.

private List<MessageModification> preview(Event event, List<MessageModification> input, String username) {
    Model model = new ExtendedModelMap();
    Organization organization = eventManager.loadOrganizer(event, username);
    model.addAttribute("eventName", event.getDisplayName());
    model.addAttribute("fullName", "John Doe");
    model.addAttribute("organizationName", organization.getName());
    model.addAttribute("organizationEmail", organization.getEmail());
    model.addAttribute("reservationURL", "https://this-is-the-reservation-url");
    model.addAttribute("ticketURL", "https://this-is-the-ticket-url");
    model.addAttribute("reservationID", "RESID");
    return input.stream().map(m -> MessageModification.preview(m, renderResource(m.getSubject(), model, m.getLocale(), templateManager), renderResource(m.getText(), model, m.getLocale(), templateManager), m.isAttachTicket())).collect(Collectors.toList());
}
Also used : java.util(java.util) TicketCategoryRepository(alfio.repository.TicketCategoryRepository) MessageModification(alfio.model.modification.MessageModification) Autowired(org.springframework.beans.factory.annotation.Autowired) Mailer(alfio.manager.system.Mailer) Json(alfio.util.Json) Model(org.springframework.ui.Model) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Triple(org.apache.commons.lang3.tuple.Triple) TicketRepository(alfio.repository.TicketRepository) Executor(java.util.concurrent.Executor) Organization(alfio.model.user.Organization) TemplateManager(alfio.util.TemplateManager) Collectors(java.util.stream.Collectors) Executors(java.util.concurrent.Executors) TicketReservationManager(alfio.manager.TicketReservationManager) TicketCategory(alfio.model.TicketCategory) Component(org.springframework.stereotype.Component) EventManager(alfio.manager.EventManager) StringUtils.isNotBlank(org.apache.commons.lang3.StringUtils.isNotBlank) Ticket(alfio.model.Ticket) NotificationManager(alfio.manager.NotificationManager) TicketReservation(alfio.model.TicketReservation) Log4j2(lombok.extern.log4j.Log4j2) Event(alfio.model.Event) ExtendedModelMap(org.springframework.ui.ExtendedModelMap) ExtendedModelMap(org.springframework.ui.ExtendedModelMap) Organization(alfio.model.user.Organization) Model(org.springframework.ui.Model)

Example 2 with TemplateManager

use of alfio.util.TemplateManager in project alf.io by alfio-event.

the class CustomMessageManager method sendMessages.

public void sendMessages(String eventName, Optional<Integer> categoryId, List<MessageModification> input, String username) {
    Event event = eventManager.getSingleEvent(eventName, username);
    // dry run for checking the syntax
    preview(event, input, username);
    Organization organization = eventManager.loadOrganizer(event, username);
    AtomicInteger counter = new AtomicInteger();
    Map<String, List<MessageModification>> byLanguage = input.stream().collect(Collectors.groupingBy(m -> m.getLocale().getLanguage()));
    sendMessagesExecutor.execute(() -> {
        categoryId.map(id -> ticketRepository.findConfirmedByCategoryId(event.getId(), id)).orElseGet(() -> ticketRepository.findAllConfirmed(event.getId())).stream().filter(t -> isNotBlank(t.getFullName()) && isNotBlank(t.getEmail())).parallel().map(t -> {
            Model model = new ExtendedModelMap();
            model.addAttribute("eventName", eventName);
            model.addAttribute("fullName", t.getFullName());
            model.addAttribute("organizationName", organization.getName());
            model.addAttribute("organizationEmail", organization.getEmail());
            model.addAttribute("reservationURL", ticketReservationManager.reservationUrl(t.getTicketsReservationId(), event));
            model.addAttribute("reservationID", ticketReservationManager.getShortReservationID(event, t.getTicketsReservationId()));
            model.addAttribute("ticketURL", ticketReservationManager.ticketUpdateUrl(event, t.getUuid()));
            return Triple.of(t, t.getEmail(), model);
        }).forEach(triple -> {
            Ticket ticket = triple.getLeft();
            MessageModification m = Optional.ofNullable(byLanguage.get(ticket.getUserLanguage())).orElseGet(() -> byLanguage.get(byLanguage.keySet().stream().findFirst().orElseThrow(IllegalStateException::new))).get(0);
            Model model = triple.getRight();
            String subject = renderResource(m.getSubject(), model, m.getLocale(), templateManager);
            String text = renderResource(m.getText(), model, m.getLocale(), templateManager);
            List<Mailer.Attachment> attachments = new ArrayList<>();
            if (m.isAttachTicket()) {
                ticketReservationManager.findById(ticket.getTicketsReservationId()).ifPresent(reservation -> {
                    ticketCategoryRepository.getByIdAndActive(ticket.getCategoryId()).ifPresent(ticketCategory -> {
                        attachments.add(generateTicketAttachment(ticket, reservation, ticketCategory, organization));
                    });
                });
            }
            counter.incrementAndGet();
            notificationManager.sendSimpleEmail(event, triple.getMiddle(), subject, () -> text, attachments);
        });
    });
}
Also used : java.util(java.util) TicketCategoryRepository(alfio.repository.TicketCategoryRepository) MessageModification(alfio.model.modification.MessageModification) Autowired(org.springframework.beans.factory.annotation.Autowired) Mailer(alfio.manager.system.Mailer) Json(alfio.util.Json) Model(org.springframework.ui.Model) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Triple(org.apache.commons.lang3.tuple.Triple) TicketRepository(alfio.repository.TicketRepository) Executor(java.util.concurrent.Executor) Organization(alfio.model.user.Organization) TemplateManager(alfio.util.TemplateManager) Collectors(java.util.stream.Collectors) Executors(java.util.concurrent.Executors) TicketReservationManager(alfio.manager.TicketReservationManager) TicketCategory(alfio.model.TicketCategory) Component(org.springframework.stereotype.Component) EventManager(alfio.manager.EventManager) StringUtils.isNotBlank(org.apache.commons.lang3.StringUtils.isNotBlank) Ticket(alfio.model.Ticket) NotificationManager(alfio.manager.NotificationManager) TicketReservation(alfio.model.TicketReservation) Log4j2(lombok.extern.log4j.Log4j2) Event(alfio.model.Event) ExtendedModelMap(org.springframework.ui.ExtendedModelMap) Ticket(alfio.model.Ticket) Organization(alfio.model.user.Organization) ExtendedModelMap(org.springframework.ui.ExtendedModelMap) MessageModification(alfio.model.modification.MessageModification) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Model(org.springframework.ui.Model) Event(alfio.model.Event)

Example 3 with TemplateManager

use of alfio.util.TemplateManager in project alf.io by alfio-event.

the class ReservationFlowIntegrationTest method ensureConfiguration.

@Before
public void ensureConfiguration() {
    IntegrationTestUtil.ensureMinimalConfiguration(configurationRepository);
    List<TicketCategoryModification> categories = Collections.singletonList(new TicketCategoryModification(null, "default", AVAILABLE_SEATS, new DateTimeModification(LocalDate.now().minusDays(1), LocalTime.now()), new DateTimeModification(LocalDate.now().plusDays(1), LocalTime.now()), DESCRIPTION, BigDecimal.TEN, false, "", false, null, null, null, null, null));
    Pair<Event, String> eventAndUser = initEvent(categories, organizationRepository, userManager, eventManager, eventRepository);
    event = eventAndUser.getKey();
    user = eventAndUser.getValue() + "_owner";
    // 
    TemplateManager templateManager = Mockito.mock(TemplateManager.class);
    reservationApiController = new ReservationApiController(eventRepository, ticketHelper, templateManager, i18nManager, euVatChecker, ticketReservationRepository, ticketReservationManager);
}
Also used : DateTimeModification(alfio.model.modification.DateTimeModification) TicketCategoryModification(alfio.model.modification.TicketCategoryModification) TemplateManager(alfio.util.TemplateManager) ReservationApiController(alfio.controller.api.ReservationApiController) Before(org.junit.Before)

Aggregations

TemplateManager (alfio.util.TemplateManager)3 EventManager (alfio.manager.EventManager)2 NotificationManager (alfio.manager.NotificationManager)2 TicketReservationManager (alfio.manager.TicketReservationManager)2 Mailer (alfio.manager.system.Mailer)2 Event (alfio.model.Event)2 Ticket (alfio.model.Ticket)2 TicketCategory (alfio.model.TicketCategory)2 TicketReservation (alfio.model.TicketReservation)2 MessageModification (alfio.model.modification.MessageModification)2 Organization (alfio.model.user.Organization)2 TicketCategoryRepository (alfio.repository.TicketCategoryRepository)2 TicketRepository (alfio.repository.TicketRepository)2 Json (alfio.util.Json)2 java.util (java.util)2 Executor (java.util.concurrent.Executor)2 Executors (java.util.concurrent.Executors)2 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)2 Collectors (java.util.stream.Collectors)2 Log4j2 (lombok.extern.log4j.Log4j2)2