package com.release11.klaus.controller; import com.release11.klaus.model.Event; import com.release11.klaus.model.EventRequestDto; import com.release11.klaus.service.EtrackService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.util.LinkedList; import java.util.List; import java.util.UUID; /** * Class responds to request asking about history of messages. */ @Slf4j @Controller @RequestMapping @AllArgsConstructor public class EventController { private final EtrackService etrackService; private final List eventList = new LinkedList<>(); @GetMapping("/etrack/{uuid}") public String showEtrack(@Valid EventRequestDto eventRequestDto, @PathVariable UUID uuid, final Model model, BindingResult bindingResult){ model.addAttribute("clientUUID", uuid); model.addAttribute("eventRequestDto", eventRequestDto); return "etrack"; } @PostMapping("/etrack/{uuid}") public String getLogs(@Valid EventRequestDto eventRequestDto, final Model model, BindingResult bindingResult, @PathVariable UUID uuid){ model.addAttribute("clientUUID", uuid); populateModelWithLists(model, eventRequestDto, true); return "etrack"; } private void populateModelWithLists(Model model, EventRequestDto eventRequestDto, boolean updateList){ if (updateList){ eventList.clear(); eventList.addAll(etrackService.getEventsByDateTimeAndBusinessKeys(eventRequestDto)); } model.addAttribute("eventList", eventList); } @ModelAttribute("eventRequestDto") public EventRequestDto eventRequestDto() { return EventRequestDto.builder() .mockedResponseId(1) .localDateTimeFrom(LocalDateTime.of(LocalDate.now(), LocalTime.MIN)) .localDateTimeTo(LocalDateTime.of(LocalDate.now().plusDays(1), LocalTime.MIDNIGHT)) .build(); } @ModelAttribute("eventList") public List eventList() { return eventList; } }