From 2c9022ed267b8c84e1e817418a3d73632a1d9709 Mon Sep 17 00:00:00 2001
From: Jessie Ragot <jessie.ragot@hotmail.com>
Date: Thu, 20 Mar 2025 15:05:18 +0100
Subject: [PATCH] Adding an empty medical record to a patient's registration

---
 .../projetIndu/services/UserService.java      | 23 +++++++++++--------
 1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/projet/projetIndu/services/UserService.java b/src/main/java/com/projet/projetIndu/services/UserService.java
index 3d883a1..a65d15f 100644
--- a/src/main/java/com/projet/projetIndu/services/UserService.java
+++ b/src/main/java/com/projet/projetIndu/services/UserService.java
@@ -1,11 +1,9 @@
 package com.projet.projetIndu.services;
 
 import com.projet.projetIndu.dto.UserRegistrationDTO;
-import com.projet.projetIndu.entities.Doctor;
-import com.projet.projetIndu.entities.Patient;
-import com.projet.projetIndu.entities.Role;
-import com.projet.projetIndu.entities.User;
+import com.projet.projetIndu.entities.*;
 import com.projet.projetIndu.repositories.UserRepository;
+import jakarta.transaction.Transactional;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;
@@ -22,11 +20,13 @@ import java.util.Optional;
 public class UserService implements UserDetailsService {
     private final UserRepository userRepository;
     private final BCryptPasswordEncoder passwordEncoder;
+    private final MedicalFileService medicalFileService;
 
     @Autowired
-    public UserService(UserRepository userRepository, BCryptPasswordEncoder passwordEncoder) {
+    public UserService(UserRepository userRepository, BCryptPasswordEncoder passwordEncoder, MedicalFileService medicalFileService) {
         this.userRepository = userRepository;
         this.passwordEncoder = passwordEncoder;
+        this.medicalFileService = medicalFileService;
     }
 
     public List<User> getAllUsers() {
@@ -49,6 +49,7 @@ public class UserService implements UserDetailsService {
         userRepository.deleteById(id);
     }
 
+    @Transactional
     public User registerUser(UserRegistrationDTO userDTO) {
         if (userRepository.existsByEmail(userDTO.getEmail())) {
             throw new IllegalArgumentException("Email already taken");
@@ -87,9 +88,15 @@ public class UserService implements UserDetailsService {
         user.setPassword(encodedPassword);
         user.setRole(userDTO.getRole());
 
-        return userRepository.save(user);
-    }
+        User savedUser = userRepository.save(user);
 
+        if (savedUser instanceof Patient) {
+            MedicalFile medicalFile = new MedicalFile((Patient) savedUser, "", "");
+            medicalFileService.saveMedicalFiles(medicalFile);
+        }
+
+        return savedUser;
+    }
 
     @Override
     public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
@@ -102,6 +109,4 @@ public class UserService implements UserDetailsService {
                 .authorities(user.getClass().getSimpleName())
                 .build();
     }
-
 }
-
-- 
GitLab