57 lines
2.7 KiB
Java
57 lines
2.7 KiB
Java
package com.voidsoftware.map02.controllers;
|
|
|
|
import com.voidsoftware.map02.config.CurrentUser;
|
|
import com.voidsoftware.map02.entities.AppUser;
|
|
import com.voidsoftware.map02.entities.Professional;
|
|
import com.voidsoftware.map02.services.DataConversionService;
|
|
import com.voidsoftware.map02.services.PatientDetailService;
|
|
import com.voidsoftware.map02.services.PermissionsValidatorService;
|
|
import org.springframework.format.annotation.DateTimeFormat;
|
|
import org.springframework.stereotype.Controller;
|
|
import org.springframework.ui.Model;
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
import org.springframework.web.bind.annotation.PathVariable;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
import java.time.LocalDate;
|
|
import java.util.Optional;
|
|
import java.util.UUID;
|
|
|
|
@Controller
|
|
public class PatientDetailController {
|
|
|
|
private final PatientDetailService patientDetailService;
|
|
private final PermissionsValidatorService permissionsValidatorService;
|
|
private final DataConversionService dataConversionService;
|
|
|
|
public PatientDetailController(PatientDetailService patientDetailService,
|
|
PermissionsValidatorService permissionsValidatorService,
|
|
DataConversionService dataConversionService) {
|
|
this.patientDetailService = patientDetailService;
|
|
this.permissionsValidatorService = permissionsValidatorService;
|
|
this.dataConversionService = dataConversionService;
|
|
}
|
|
|
|
@GetMapping("/patients/{id}")
|
|
public String patientDetail(@CurrentUser AppUser sessionUser, @PathVariable UUID id,
|
|
@RequestParam(defaultValue = "weekly") String view,
|
|
@RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date,
|
|
Model model) {
|
|
Optional<Professional> professional = permissionsValidatorService.validateProfessional(sessionUser);
|
|
if (professional.isEmpty()) {
|
|
return "redirect:/login";
|
|
}
|
|
|
|
return patientDetailService.build(id, professional.get(), view, date)
|
|
.map(patient -> {
|
|
model.addAttribute("pageTitle", patient.getName());
|
|
model.addAttribute("patient", patient);
|
|
model.addAttribute("professionalName", professional.get().getName());
|
|
model.addAttribute("professionalPhoto", professional.get().getResourceId() == null ? null
|
|
: dataConversionService.getImageResource(professional.get().getResourceId()).orElse(null));
|
|
return "patient-detail";
|
|
})
|
|
.orElse("redirect:/dashboard");
|
|
}
|
|
}
|