Se modifica el servicio de ServiceUzyTavProyec para obtener los proyectos de acuerdo al perfil

parent bad18a22
...@@ -26,6 +26,10 @@ public class UzyTavProyecController { ...@@ -26,6 +26,10 @@ public class UzyTavProyecController {
return new ResponseEntity<>(serviceUzyTavProyec.ListarPorID(id), HttpStatus.OK); return new ResponseEntity<>(serviceUzyTavProyec.ListarPorID(id), HttpStatus.OK);
} }
@GetMapping("/findAllByUserIdAndRole/{userId}")
public ResponseEntity<List<DtoUzyTavProyec>> findAllByUserIdAndRole(@PathVariable Long userId) {
return new ResponseEntity<>(serviceUzyTavProyec.findAllByUserIdAndRole(userId), HttpStatus.OK);
}
@GetMapping("/findCabcomcaIdConparaevaIdByProyecId/{idProyect}") @GetMapping("/findCabcomcaIdConparaevaIdByProyecId/{idProyect}")
public ResponseEntity<List<DtoCabcomcaIdConparaevaID>> findCabcomcaIdConparaevaIdByProyecId(@PathVariable Long idProyect) { public ResponseEntity<List<DtoCabcomcaIdConparaevaID>> findCabcomcaIdConparaevaIdByProyecId(@PathVariable Long idProyect) {
......
...@@ -2,10 +2,16 @@ package ec.edu.espe.movilidad.MovilidadWS.Dao; ...@@ -2,10 +2,16 @@ package ec.edu.espe.movilidad.MovilidadWS.Dao;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTPerfil; import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTPerfil;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.Optional;
@Repository @Repository
public interface DaoUzyTPerfil extends JpaRepository<ModelUzyTPerfil, Long> { public interface DaoUzyTPerfil extends JpaRepository<ModelUzyTPerfil, Long> {
@Query("SELECT p FROM ModelUzyTPerfil p JOIN p.uzytusuarios u WHERE p.uzytperfil_nombre = :nombre" +
" AND u.uzytusuario_id = :userID")
Optional<ModelUzyTPerfil> findByUzytperfilNombre(String nombre, Long userID);
} }
\ No newline at end of file
...@@ -20,4 +20,11 @@ public interface DaoUzyTavProyec extends JpaRepository<ModelUzyTavProyec, Long> ...@@ -20,4 +20,11 @@ public interface DaoUzyTavProyec extends JpaRepository<ModelUzyTavProyec, Long>
@Query("SELECT p FROM ModelUzyTavProyec p ORDER BY p.uzytavproyec_id DESC") @Query("SELECT p FROM ModelUzyTavProyec p ORDER BY p.uzytavproyec_id DESC")
List<ModelUzyTavProyec> findAll(); List<ModelUzyTavProyec> findAll();
@Query("SELECT p FROM ModelUzyTavProyec p " +
"JOIN p.uzytusuario ur " +
"JOIN ur.uzytperfils perfil " +
"WHERE (:userId is null OR p.uzytusuario.uzytusuario_id = :userId) " +
"AND (perfil.uzytperfil_nombre = 'Director de Proyecto' OR :userId is null)")
List<ModelUzyTavProyec> findAllByUserIdAndRole(@Param("userId") Long userId);
} }
...@@ -4,13 +4,14 @@ import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoCabcomcaIdConparaevaID; ...@@ -4,13 +4,14 @@ import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoCabcomcaIdConparaevaID;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavProyec; import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavProyec;
import java.util.List; import java.util.List;
public interface IServiceUzyTavProyec { public interface IServiceUzyTavProyec {
DtoUzyTavProyec ListarPorID(Long id); DtoUzyTavProyec ListarPorID(Long id);
List<DtoUzyTavProyec> ListarRegistros(); List<DtoUzyTavProyec> ListarRegistros();
List<DtoUzyTavProyec> findAllByUserIdAndRole(Long userId);
DtoUzyTavProyec guardar(DtoUzyTavProyec dtoUzyTavProyec); DtoUzyTavProyec guardar(DtoUzyTavProyec dtoUzyTavProyec);
......
package ec.edu.espe.movilidad.MovilidadWS.Service.UzyTavProyec; package ec.edu.espe.movilidad.MovilidadWS.Service.UzyTavProyec;
import ec.edu.espe.movilidad.MovilidadWS.Dao.DaoUzyTPerfil;
import ec.edu.espe.movilidad.MovilidadWS.Dao.DaoUzyTavCabComca; import ec.edu.espe.movilidad.MovilidadWS.Dao.DaoUzyTavCabComca;
import ec.edu.espe.movilidad.MovilidadWS.Dao.DaoUzyTavConparaEva; import ec.edu.espe.movilidad.MovilidadWS.Dao.DaoUzyTavConparaEva;
import ec.edu.espe.movilidad.MovilidadWS.Dao.DaoUzyTavProyec; import ec.edu.espe.movilidad.MovilidadWS.Dao.DaoUzyTavProyec;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoCabcomcaIdConparaevaID; import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoCabcomcaIdConparaevaID;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavProyec; import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavProyec;
import ec.edu.espe.movilidad.MovilidadWS.Exceptions.InvalidArgumentException;
import ec.edu.espe.movilidad.MovilidadWS.Exceptions.ResourceNotFoundException; import ec.edu.espe.movilidad.MovilidadWS.Exceptions.ResourceNotFoundException;
import ec.edu.espe.movilidad.MovilidadWS.Mapper.Components_Class.UzyTavProyecMapper; import ec.edu.espe.movilidad.MovilidadWS.Mapper.Components_Class.UzyTavProyecMapper;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTPerfil;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTavCabComca; import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTavCabComca;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTavConparaEva; import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTavConparaEva;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTavProyec; import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTavProyec;
...@@ -15,6 +18,7 @@ import org.springframework.stereotype.Service; ...@@ -15,6 +18,7 @@ import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import java.util.List; import java.util.List;
import java.util.Optional;
@Service @Service
...@@ -24,14 +28,18 @@ public class ServiceUzyTavProyec implements IServiceUzyTavProyec { ...@@ -24,14 +28,18 @@ public class ServiceUzyTavProyec implements IServiceUzyTavProyec {
private final UzyTavProyecMapper mapper; private final UzyTavProyecMapper mapper;
private final DaoUzyTavCabComca daoUzyTavCabComca; private final DaoUzyTavCabComca daoUzyTavCabComca;
private final DaoUzyTavConparaEva daoUzyTavConparaEva; private final DaoUzyTavConparaEva daoUzyTavConparaEva;
private final DaoUzyTPerfil daoUzyTPerfil;
public static final String MESSAGE = "No se encontró el registro con ID: "; public static final String MESSAGE = "No se encontró el registro con ID: ";
public ServiceUzyTavProyec(DaoUzyTavProyec daoUzyTavProyec, UzyTavProyecMapper mapper, DaoUzyTavCabComca daoUzyTavCabComca, DaoUzyTavConparaEva daoUzyTavConparaEva) {
public ServiceUzyTavProyec(DaoUzyTavProyec daoUzyTavProyec, UzyTavProyecMapper mapper, DaoUzyTavCabComca daoUzyTavCabComca, DaoUzyTavConparaEva daoUzyTavConparaEva, DaoUzyTPerfil daoUzyTPerfil) {
this.daoUzyTavProyec = daoUzyTavProyec; this.daoUzyTavProyec = daoUzyTavProyec;
this.mapper = mapper; this.mapper = mapper;
this.daoUzyTavCabComca = daoUzyTavCabComca; this.daoUzyTavCabComca = daoUzyTavCabComca;
this.daoUzyTavConparaEva = daoUzyTavConparaEva; this.daoUzyTavConparaEva = daoUzyTavConparaEva;
this.daoUzyTPerfil = daoUzyTPerfil;
} }
@Override @Override
public DtoUzyTavProyec ListarPorID(Long id) { public DtoUzyTavProyec ListarPorID(Long id) {
ModelUzyTavProyec entity = daoUzyTavProyec.findById(id) ModelUzyTavProyec entity = daoUzyTavProyec.findById(id)
...@@ -50,6 +58,29 @@ public class ServiceUzyTavProyec implements IServiceUzyTavProyec { ...@@ -50,6 +58,29 @@ public class ServiceUzyTavProyec implements IServiceUzyTavProyec {
List<ModelUzyTavProyec> entities = daoUzyTavProyec.findAll(); List<ModelUzyTavProyec> entities = daoUzyTavProyec.findAll();
return mapper.entitiesToDtos(entities); return mapper.entitiesToDtos(entities);
} }
@Override
public List<DtoUzyTavProyec> findAllByUserIdAndRole(Long userId) {
Optional<ModelUzyTPerfil> directorProyecto = daoUzyTPerfil.findByUzytperfilNombre("Director de Proyecto", userId);
Optional<ModelUzyTPerfil> administradorSistema = daoUzyTPerfil.findByUzytperfilNombre("Administrador del Sistema", userId);
List<ModelUzyTavProyec> entities;
try {
if (directorProyecto.isPresent()) {
entities = daoUzyTavProyec.findAllByUserIdAndRole(userId);
} else if (administradorSistema.isPresent()) {
entities = daoUzyTavProyec.findAll();
} else {
throw new RuntimeException(" El usuario no tiene los roles requeridos");
}
} catch (Exception e) {
throw new InvalidArgumentException("Error al obtener los roles del usuario-> " + e.getMessage());
}
return mapper.entitiesToDtos(entities);
}
@Override @Override
public DtoUzyTavProyec guardar(DtoUzyTavProyec dtoUzyTavProyec) { public DtoUzyTavProyec guardar(DtoUzyTavProyec dtoUzyTavProyec) {
ModelUzyTavProyec entity = mapper.dtoToEntity(dtoUzyTavProyec); ModelUzyTavProyec entity = mapper.dtoToEntity(dtoUzyTavProyec);
...@@ -95,7 +126,7 @@ public class ServiceUzyTavProyec implements IServiceUzyTavProyec { ...@@ -95,7 +126,7 @@ public class ServiceUzyTavProyec implements IServiceUzyTavProyec {
if (dtoUzyTavProyec.getUzytavproyec_nombre() != null) { if (dtoUzyTavProyec.getUzytavproyec_nombre() != null) {
entity.setUzytavproyec_nombre(dtoUzyTavProyec.getUzytavproyec_nombre()); entity.setUzytavproyec_nombre(dtoUzyTavProyec.getUzytavproyec_nombre());
} }
if(dtoUzyTavProyec.getUzytavproyec_cierre_imp() !=null){ if (dtoUzyTavProyec.getUzytavproyec_cierre_imp() != null) {
entity.setUzytavproyec_cierre_imp(dtoUzyTavProyec.getUzytavproyec_cierre_imp()); entity.setUzytavproyec_cierre_imp(dtoUzyTavProyec.getUzytavproyec_cierre_imp());
} }
if (dtoUzyTavProyec.getUzytavproyec_aporuni() != null) { if (dtoUzyTavProyec.getUzytavproyec_aporuni() != null) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment