Files
release11-tools-mocked-serv…/src/main/java/com/release11/klaus/controller/EventController.java
2021-01-20 08:49:10 +01:00

75 lines
2.4 KiB
Java

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<Event> 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<Event> eventList() {
return eventList;
}
}