Skip to content
Snippets Groups Projects
Select Git revision
  • c2881041ab21832b41b02a03430952f908632512
  • main default protected
  • variant
3 results

Board.class

Blame
  • Forked from COUETOUX Basile / FirefighterStarter
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    MedicalFileController.java 5.28 KiB
    package com.projet.projetIndu.controllers;
    
    import com.projet.projetIndu.entities.MedicalDocument;
    import com.projet.projetIndu.entities.MedicalFile;
    import com.projet.projetIndu.repositories.MedicalDocumentRepository;
    import com.projet.projetIndu.services.MedicalFileService;
    import org.springframework.http.*;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.*;
    import org.springframework.web.multipart.MultipartFile;
    import org.springframework.web.servlet.mvc.support.RedirectAttributes;
    
    import java.io.IOException;
    import java.time.LocalDate;
    import java.util.List;
    import java.util.Optional;
    
    @Controller
    @RequestMapping("/medical-files")
    public class MedicalFileController {
    
        private final MedicalFileService medicalFileService;
        private final MedicalDocumentRepository medicalDocumentRepository;
    
        public MedicalFileController(MedicalFileService medicalFileService, MedicalDocumentRepository medicalDocumentRepository) {
            this.medicalFileService = medicalFileService;
            this.medicalDocumentRepository = medicalDocumentRepository;
        }
    
        // Afficher tous les dossiers médicaux
        @GetMapping
        public String listMedicalFiles(Model model) {
            List<MedicalFile> medicalFiles = medicalFileService.getAllMedicalFiles();
            System.out.println("Dossiers médicaux récupérés : " + medicalFiles.size());
            model.addAttribute("medicalFiles", medicalFiles);
            return "medical-files";
        }
    
    
        // Afficher un dossier médical spécifique
        @GetMapping("/{id}")
        public String viewMedicalFile(@PathVariable Long id, Model model) {
            return medicalFileService.getMedicalFileById(id)
                    .map(medicalFile -> {
                        model.addAttribute("medicalFile", medicalFile);
                        return "view-medical-file";
                    })
                    .orElse("error");
        }
    
        // Créer un dossier médical
        @PostMapping("/create")
        public String createMedicalFile(@ModelAttribute MedicalFile medicalFile) {
            medicalFileService.saveMedicalFiles(medicalFile);
            return "redirect:/medical-files";
        }
    
        // Mettre à jour l'historique médical
        @PostMapping("/{id}/history")
        public String updateMedicalFileHistory(@PathVariable Long id,
                                               @RequestParam String antecedent,
                                               @RequestParam String notes,
                                               @RequestParam LocalDate consultationDate) {
            medicalFileService.updateMedicalFileHistory(id, antecedent, notes, consultationDate);
            return "redirect:/medical-files/" + id;
        }
    
    
        // Ajouter un document à un dossier médical
        @PostMapping("/{id}/documents")
        public String uploadMedicalFileDocument(@PathVariable Long id, @RequestParam("document") MultipartFile document, RedirectAttributes redirectAttributes) {
            try {
                medicalFileService.uploadMedicalFileDocument(id, document);
            } catch (IOException e) {
                e.printStackTrace();
                redirectAttributes.addFlashAttribute("errorMessage", "Erreur lors de l'upload du document.");
                return "redirect:/medical-files/" + id;
            }
            return "redirect:/medical-files/" + id;
        }
    
    
        // Télécharger un document médical
        @GetMapping("/{id}/documents/{docId}")
        @ResponseBody
        public ResponseEntity<byte[]> getMedicalFileDocument(@PathVariable Long id, @PathVariable Long docId) {
            try {
                MedicalDocument document = medicalFileService.getMedicalFileDocument(id, docId);
    
                HttpHeaders headers = new HttpHeaders();
                headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
                headers.setContentDisposition(ContentDisposition.attachment()
                        .filename(document.getFileName())
                        .build());
    
                return new ResponseEntity<>(document.getFileData(), headers, HttpStatus.OK);
            } catch (RuntimeException e) {
                return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
            }
        }
    
    
        // Supprimer un document médical
        @DeleteMapping("/{id}/documents/{docId}")
        public String deleteDocument(@PathVariable Long id, @PathVariable Long docId, RedirectAttributes redirectAttributes) {
            Optional<MedicalDocument> document = medicalDocumentRepository.findById(docId);
    
            if (document.isPresent()) {
                medicalDocumentRepository.delete(document.get());
                redirectAttributes.addFlashAttribute("successMessage", "Document supprimé avec succès.");
            } else {
                redirectAttributes.addFlashAttribute("errorMessage", "Document introuvable.");
            }
    
            return "redirect:/medical-files/" + id;
        }
    
    
        // Supprimer un dossier médical
        @DeleteMapping("/{id}")
        public String deleteMedicalFile(@PathVariable Long id, RedirectAttributes redirectAttributes) {
            try {
                medicalFileService.deleteMedicalFileById(id);
                redirectAttributes.addFlashAttribute("successMessage", "Dossier médical supprimé avec succès.");
            } catch (Exception e) {
                redirectAttributes.addFlashAttribute("errorMessage", "Erreur lors de la suppression du dossier médical.");
            }
            return "redirect:/medical-files";
        }
    
    }