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

parent bad18a22
......@@ -26,6 +26,10 @@ public class UzyTavProyecController {
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}")
public ResponseEntity<List<DtoCabcomcaIdConparaevaID>> findCabcomcaIdConparaevaIdByProyecId(@PathVariable Long idProyect) {
......
......@@ -2,10 +2,16 @@ package ec.edu.espe.movilidad.MovilidadWS.Dao;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTPerfil;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.Optional;
@Repository
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>
@Query("SELECT p FROM ModelUzyTavProyec p ORDER BY p.uzytavproyec_id DESC")
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;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavProyec;
import java.util.List;
public interface IServiceUzyTavProyec {
DtoUzyTavProyec ListarPorID(Long id);
List<DtoUzyTavProyec> ListarRegistros();
List<DtoUzyTavProyec> findAllByUserIdAndRole(Long userId);
DtoUzyTavProyec guardar(DtoUzyTavProyec dtoUzyTavProyec);
......
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.DaoUzyTavConparaEva;
import ec.edu.espe.movilidad.MovilidadWS.Dao.DaoUzyTavProyec;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoCabcomcaIdConparaevaID;
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.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.ModelUzyTavConparaEva;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTavProyec;
......@@ -15,6 +18,7 @@ import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.PathVariable;
import java.util.List;
import java.util.Optional;
@Service
......@@ -24,14 +28,18 @@ public class ServiceUzyTavProyec implements IServiceUzyTavProyec {
private final UzyTavProyecMapper mapper;
private final DaoUzyTavCabComca daoUzyTavCabComca;
private final DaoUzyTavConparaEva daoUzyTavConparaEva;
private final DaoUzyTPerfil daoUzyTPerfil;
public static final String MESSAGE = "No se encontró el registro con ID: ";
public ServiceUzyTavProyec(DaoUzyTavProyec daoUzyTavProyec, UzyTavProyecMapper mapper, DaoUzyTavCabComca daoUzyTavCabComca, DaoUzyTavConparaEva daoUzyTavConparaEva) {
public static final String MESSAGE = "No se encontró el registro con ID: ";
public ServiceUzyTavProyec(DaoUzyTavProyec daoUzyTavProyec, UzyTavProyecMapper mapper, DaoUzyTavCabComca daoUzyTavCabComca, DaoUzyTavConparaEva daoUzyTavConparaEva, DaoUzyTPerfil daoUzyTPerfil) {
this.daoUzyTavProyec = daoUzyTavProyec;
this.mapper = mapper;
this.daoUzyTavCabComca = daoUzyTavCabComca;
this.daoUzyTavConparaEva = daoUzyTavConparaEva;
this.daoUzyTPerfil = daoUzyTPerfil;
}
@Override
public DtoUzyTavProyec ListarPorID(Long id) {
ModelUzyTavProyec entity = daoUzyTavProyec.findById(id)
......@@ -50,6 +58,29 @@ public class ServiceUzyTavProyec implements IServiceUzyTavProyec {
List<ModelUzyTavProyec> entities = daoUzyTavProyec.findAll();
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
public DtoUzyTavProyec guardar(DtoUzyTavProyec dtoUzyTavProyec) {
ModelUzyTavProyec entity = mapper.dtoToEntity(dtoUzyTavProyec);
......@@ -95,7 +126,7 @@ public class ServiceUzyTavProyec implements IServiceUzyTavProyec {
if (dtoUzyTavProyec.getUzytavproyec_nombre() != null) {
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());
}
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