Se modifican el servicio de editar de ServiceUzyTavConvoca

parent c07eca0f
...@@ -2,11 +2,11 @@ package ec.edu.espe.movilidad.MovilidadWS.Controller; ...@@ -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.Dto.DtoUzyTavConvoca;
import ec.edu.espe.movilidad.MovilidadWS.Service.UzyTavConvoca.IServiceUzyTavConvoca; import ec.edu.espe.movilidad.MovilidadWS.Service.UzyTavConvoca.IServiceUzyTavConvoca;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.*; import org.springframework.http.*;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.validation.Valid;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
...@@ -18,10 +18,8 @@ import static ec.edu.espe.movilidad.MovilidadWS.Constant.GlobalConstants.V1_API_ ...@@ -18,10 +18,8 @@ import static ec.edu.espe.movilidad.MovilidadWS.Constant.GlobalConstants.V1_API_
@RequestMapping(V1_API_VERSION+"/convoca") @RequestMapping(V1_API_VERSION+"/convoca")
public class UzyTavConvocaController { public class UzyTavConvocaController {
private final IServiceUzyTavConvoca serviceUzyTavConvoca; private final IServiceUzyTavConvoca serviceUzyTavConvoca;
@Autowired
public UzyTavConvocaController(IServiceUzyTavConvoca serviceUzyTavConvoca) { public UzyTavConvocaController(IServiceUzyTavConvoca serviceUzyTavConvoca) {
this.serviceUzyTavConvoca = serviceUzyTavConvoca; this.serviceUzyTavConvoca = serviceUzyTavConvoca;
} }
...@@ -42,7 +40,7 @@ public class UzyTavConvocaController { ...@@ -42,7 +40,7 @@ public class UzyTavConvocaController {
} }
} }
@PutMapping("editar/{uzytavconvoca_id}") @PutMapping("editarconPDF/{uzytavconvoca_id}")
public ResponseEntity<DtoUzyTavConvoca> edit( public ResponseEntity<DtoUzyTavConvoca> edit(
@PathVariable("uzytavconvoca_id") Long uzytavconvocaId, @PathVariable("uzytavconvoca_id") Long uzytavconvocaId,
@ModelAttribute DtoUzyTavConvoca dtoUzyTavConvoca) { @ModelAttribute DtoUzyTavConvoca dtoUzyTavConvoca) {
...@@ -60,6 +58,10 @@ public class UzyTavConvocaController { ...@@ -60,6 +58,10 @@ public class UzyTavConvocaController {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); 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}") @GetMapping("/exampleFindId/{id}")
public ResponseEntity<DtoUzyTavConvoca> listarPorID(@PathVariable("id") Long id) { public ResponseEntity<DtoUzyTavConvoca> listarPorID(@PathVariable("id") Long id) {
......
...@@ -12,6 +12,7 @@ public interface DaoUzyTavConvoca extends JpaRepository<ModelUzyTavConvoca, Long ...@@ -12,6 +12,7 @@ public interface DaoUzyTavConvoca extends JpaRepository<ModelUzyTavConvoca, Long
@Query("SELECT c FROM ModelUzyTavConvoca c ORDER BY c.uzytavconvoca_id DESC") @Query("SELECT c FROM ModelUzyTavConvoca c ORDER BY c.uzytavconvoca_id DESC")
List<ModelUzyTavConvoca> findAll(); 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 { ...@@ -19,7 +19,7 @@ public class DtoUzyTavConvoca {
@Size(max = 150) @Size(max = 150)
private String uzytavconvoca_observacion; private String uzytavconvoca_observacion;
@Size(max = 1) @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 String uzytavconvoca_estado;
private Date uzytavconvoca_fecha_inicio; private Date uzytavconvoca_fecha_inicio;
private Date uzytavconvoca_fecha_fin; private Date uzytavconvoca_fecha_fin;
......
package ec.edu.espe.movilidad.MovilidadWS.Exceptions.Configuration; 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.ErrorResponse;
import ec.edu.espe.movilidad.MovilidadWS.Exceptions.InvalidArgumentException; import ec.edu.espe.movilidad.MovilidadWS.Exceptions.InvalidArgumentException;
import ec.edu.espe.movilidad.MovilidadWS.Exceptions.ResourceNotFoundException; import ec.edu.espe.movilidad.MovilidadWS.Exceptions.ResourceNotFoundException;
...@@ -116,6 +117,10 @@ public class GlobalExceptionHandler { ...@@ -116,6 +117,10 @@ public class GlobalExceptionHandler {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body("Error de entrada/salida: " + ex.getMessage()); .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 //Se maneja la excepcion para se intenta acceder a un objeto nullo
@ExceptionHandler(NullPointerException.class) @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 { ...@@ -13,8 +13,11 @@ public interface IServiceUzyTavConvoca {
DtoUzyTavConvoca save(DtoUzyTavConvoca convocatoriaDTO)throws IOException; DtoUzyTavConvoca save(DtoUzyTavConvoca convocatoriaDTO)throws IOException;
DtoUzyTavConvoca edit(Long uzytavconvocaId, DtoUzyTavConvoca convocatoriaDTO)throws IOException; DtoUzyTavConvoca edit(Long uzytavconvocaId, DtoUzyTavConvoca convocatoriaDTO)throws IOException;
DtoUzyTavConvoca guardar(DtoUzyTavConvoca dtoUzyTavConvoca); DtoUzyTavConvoca guardar(DtoUzyTavConvoca dtoUzyTavConvoca);
DtoUzyTavConvoca editar(Long id, DtoUzyTavConvoca dtoUzyTavConvoca);
void eliminar(Long id); void eliminar(Long id);
byte[] obtenerContenidoPDF(Long convocaId); byte[] obtenerContenidoPDF(Long convocaId);
String obtenerUrlPDF(Long uzytavconvocaId); String obtenerUrlPDF(Long uzytavconvocaId);
......
...@@ -2,6 +2,8 @@ package ec.edu.espe.movilidad.MovilidadWS.Service.UzyTavConvoca; ...@@ -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.Dao.DaoUzyTavConvoca;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavConvoca; 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.Mapper.Components_Class.UzyTavConvocaMapper;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTavConvoca; import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTavConvoca;
import ec.edu.espe.movilidad.MovilidadWS.Service.FileStorage.IFileStorageService; import ec.edu.espe.movilidad.MovilidadWS.Service.FileStorage.IFileStorageService;
...@@ -9,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -9,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.transaction.Transactional;
import java.io.IOException; import java.io.IOException;
import java.nio.file.*; import java.nio.file.*;
import java.util.*; import java.util.*;
...@@ -195,9 +198,61 @@ public class ServiceUzyTavConvoca implements IServiceUzyTavConvoca{ ...@@ -195,9 +198,61 @@ public class ServiceUzyTavConvoca implements IServiceUzyTavConvoca{
} }
@Override @Override
public DtoUzyTavConvoca guardar(DtoUzyTavConvoca dtoUzyTavConvoca) { public DtoUzyTavConvoca guardar(DtoUzyTavConvoca dtoUzyTavConvoca) {
ModelUzyTavConvoca entityw = modelMapper.dtoToEntity(dtoUzyTavConvoca); boolean existsWithStateAorI = daoUzyTavConvoca.existsByUzytavconvocaEstadoAorI();
ModelUzyTavConvoca nuevoEntity = daoUzyTavConvoca.save(entityw); if (existsWithStateAorI) {
return modelMapper.entityToDto(nuevoEntity); 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