Se modifican el servicio de editar de ServiceUzyTavConvoca

parent c07eca0f
......@@ -2,11 +2,11 @@ package ec.edu.espe.movilidad.MovilidadWS.Controller;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavConvoca;
import ec.edu.espe.movilidad.MovilidadWS.Service.UzyTavConvoca.IServiceUzyTavConvoca;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import java.util.NoSuchElementException;
......@@ -18,10 +18,8 @@ import static ec.edu.espe.movilidad.MovilidadWS.Constant.GlobalConstants.V1_API_
@RequestMapping(V1_API_VERSION+"/convoca")
public class UzyTavConvocaController {
private final IServiceUzyTavConvoca serviceUzyTavConvoca;
@Autowired
public UzyTavConvocaController(IServiceUzyTavConvoca serviceUzyTavConvoca) {
this.serviceUzyTavConvoca = serviceUzyTavConvoca;
}
......@@ -42,7 +40,7 @@ public class UzyTavConvocaController {
}
}
@PutMapping("editar/{uzytavconvoca_id}")
@PutMapping("editarconPDF/{uzytavconvoca_id}")
public ResponseEntity<DtoUzyTavConvoca> edit(
@PathVariable("uzytavconvoca_id") Long uzytavconvocaId,
@ModelAttribute DtoUzyTavConvoca dtoUzyTavConvoca) {
......@@ -60,6 +58,10 @@ public class UzyTavConvocaController {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}
@PutMapping("/editar/{id}")
public DtoUzyTavConvoca editar(@PathVariable Long id, @Valid @RequestBody DtoUzyTavConvoca dtoUzyTavConvoca) {
return serviceUzyTavConvoca.editar(id, dtoUzyTavConvoca);
}
@GetMapping("/exampleFindId/{id}")
public ResponseEntity<DtoUzyTavConvoca> listarPorID(@PathVariable("id") Long id) {
......
......@@ -12,6 +12,7 @@ public interface DaoUzyTavConvoca extends JpaRepository<ModelUzyTavConvoca, Long
@Query("SELECT c FROM ModelUzyTavConvoca c ORDER BY c.uzytavconvoca_id DESC")
List<ModelUzyTavConvoca> findAll();
@Query("SELECT CASE WHEN COUNT(c) > 0 THEN true ELSE false END FROM ModelUzyTavConvoca c WHERE c.uzytavconvoca_estado IN ('A', 'I')")
boolean existsByUzytavconvocaEstadoAorI();
}
......@@ -19,7 +19,7 @@ public class DtoUzyTavConvoca {
@Size(max = 150)
private String uzytavconvoca_observacion;
@Size(max = 1)
@Pattern(regexp = "[AI]", message = "El campo uzytavconvoca_estado solo puede ser A=Activoa; I= Inactiva")
@Pattern(regexp = "[AI]", message = "El campo uzytavconvoca_estado solo puede ser A=Activa; I= Inactiva")
private String uzytavconvoca_estado;
private Date uzytavconvoca_fecha_inicio;
private Date uzytavconvoca_fecha_fin;
......
package ec.edu.espe.movilidad.MovilidadWS.Exceptions.Configuration;
import ec.edu.espe.movilidad.MovilidadWS.Exceptions.DuplicateStateException;
import ec.edu.espe.movilidad.MovilidadWS.Exceptions.ErrorResponse;
import ec.edu.espe.movilidad.MovilidadWS.Exceptions.InvalidArgumentException;
import ec.edu.espe.movilidad.MovilidadWS.Exceptions.ResourceNotFoundException;
......@@ -116,6 +117,10 @@ public class GlobalExceptionHandler {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body("Error de entrada/salida: " + ex.getMessage());
}
@ExceptionHandler(DuplicateStateException.class)
public ResponseEntity<String> handleDuplicateStateException(DuplicateStateException ex) {
return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage());
}
//Se maneja la excepcion para se intenta acceder a un objeto nullo
@ExceptionHandler(NullPointerException.class)
......
package ec.edu.espe.movilidad.MovilidadWS.Exceptions;
public class DuplicateStateException extends RuntimeException {
public DuplicateStateException(String message) {
super(message);
}
}
\ No newline at end of file
......@@ -13,8 +13,11 @@ public interface IServiceUzyTavConvoca {
DtoUzyTavConvoca save(DtoUzyTavConvoca convocatoriaDTO)throws IOException;
DtoUzyTavConvoca edit(Long uzytavconvocaId, DtoUzyTavConvoca convocatoriaDTO)throws IOException;
DtoUzyTavConvoca guardar(DtoUzyTavConvoca dtoUzyTavConvoca);
DtoUzyTavConvoca editar(Long id, DtoUzyTavConvoca dtoUzyTavConvoca);
void eliminar(Long id);
byte[] obtenerContenidoPDF(Long convocaId);
String obtenerUrlPDF(Long uzytavconvocaId);
......
......@@ -2,6 +2,8 @@ package ec.edu.espe.movilidad.MovilidadWS.Service.UzyTavConvoca;
import ec.edu.espe.movilidad.MovilidadWS.Dao.DaoUzyTavConvoca;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavConvoca;
import ec.edu.espe.movilidad.MovilidadWS.Exceptions.DuplicateStateException;
import ec.edu.espe.movilidad.MovilidadWS.Exceptions.ResourceNotFoundException;
import ec.edu.espe.movilidad.MovilidadWS.Mapper.Components_Class.UzyTavConvocaMapper;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTavConvoca;
import ec.edu.espe.movilidad.MovilidadWS.Service.FileStorage.IFileStorageService;
......@@ -9,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.transaction.Transactional;
import java.io.IOException;
import java.nio.file.*;
import java.util.*;
......@@ -195,9 +198,61 @@ public class ServiceUzyTavConvoca implements IServiceUzyTavConvoca{
}
@Override
public DtoUzyTavConvoca guardar(DtoUzyTavConvoca dtoUzyTavConvoca) {
ModelUzyTavConvoca entityw = modelMapper.dtoToEntity(dtoUzyTavConvoca);
ModelUzyTavConvoca nuevoEntity = daoUzyTavConvoca.save(entityw);
return modelMapper.entityToDto(nuevoEntity);
boolean existsWithStateAorI = daoUzyTavConvoca.existsByUzytavconvocaEstadoAorI();
if (existsWithStateAorI) {
throw new DuplicateStateException("Solo puede haber un registro con un estado A o I");
}
try {
ModelUzyTavConvoca entityw = modelMapper.dtoToEntity(dtoUzyTavConvoca);
ModelUzyTavConvoca nuevoEntity = daoUzyTavConvoca.save(entityw);
return modelMapper.entityToDto(nuevoEntity);
}
catch (Exception ex) {
throw new RuntimeException("Error al guardar el registro: " + ex.getMessage());
}
}
@Override
@Transactional
public DtoUzyTavConvoca editar(Long id, DtoUzyTavConvoca dtoUzyTavConvoca) {
if (id <= 0) {
throw new IllegalArgumentException("El ID del registro debe ser válido y mayor que cero.");
}
try {
ModelUzyTavConvoca entity = daoUzyTavConvoca.findById(id).get();
if (entity != null) {
if(dtoUzyTavConvoca.getUzytavconvoca_nombre()!=null){
entity.setUzytavconvoca_nombre(dtoUzyTavConvoca.getUzytavconvoca_nombre());
}
if(dtoUzyTavConvoca.getUzytavconvoca_observacion()!=null){
entity.setUzytavconvoca_observacion(dtoUzyTavConvoca.getUzytavconvoca_observacion());
}
if(dtoUzyTavConvoca.getUzytavconvoca_estado()!=null){
entity.setUzytavconvoca_estado(dtoUzyTavConvoca.getUzytavconvoca_estado());
}
if(dtoUzyTavConvoca.getUzytavconvoca_fecha_inicio()!=null){
entity.setUzytavconvoca_fecha_inicio(dtoUzyTavConvoca.getUzytavconvoca_fecha_inicio());
}
if(dtoUzyTavConvoca.getUzytavconvoca_fecha_fin()!=null){
entity.setUzytavconvoca_fecha_fin(dtoUzyTavConvoca.getUzytavconvoca_fecha_fin());
}
if(dtoUzyTavConvoca.getUzytavconvoca_digital_nombre()!=null){
entity.setUzytavconvoca_digital_nombre(dtoUzyTavConvoca.getUzytavconvoca_digital_nombre());
}
if(dtoUzyTavConvoca.getUzytavconvoca_digital_url()!=null){
entity.setUzytavconvoca_digital_url(dtoUzyTavConvoca.getUzytavconvoca_digital_url());
}
ModelUzyTavConvoca updatedEntity = daoUzyTavConvoca.save(entity);
return modelMapper.entityToDto(updatedEntity);
}else {
throw new ResourceNotFoundException("No se encontró el registro con ID: " + id);
}
}
catch (Exception e) {
throw new ResourceNotFoundException("Error al editar el registro: " + e.getMessage());
}
}
......
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