medmap-ios/src/main/java/com/voidsoftware/map02/controllers/PatientDetailController.java
2026-09-15 14:14:54 +01:00

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");
}
}