diff --git a/src/main/java/com/example/project/dto/TipoReclamoDTO.java b/src/main/java/com/example/project/dto/TipoReclamoDTO.java new file mode 100644 index 0000000..da0584e --- /dev/null +++ b/src/main/java/com/example/project/dto/TipoReclamoDTO.java @@ -0,0 +1,15 @@ +package com.example.project.dto; + +import lombok.Data; + +@Data +public class TipoReclamoDTO { + private Long id; + private String nombre; + + public TipoReclamoDTO(Long id, String nombre) { + this.id = id; + this.nombre = nombre; + } + +} diff --git a/src/main/java/com/example/project/dto/reclamo/CrearReclamoDTO.java b/src/main/java/com/example/project/dto/reclamo/CrearReclamoDTO.java new file mode 100644 index 0000000..524b5df --- /dev/null +++ b/src/main/java/com/example/project/dto/reclamo/CrearReclamoDTO.java @@ -0,0 +1,17 @@ +package com.example.project.dto.reclamo; + +import lombok.Data; + +@Data +public class CrearReclamoDTO { + + private Long tipoReclamoId; + private String descripcion; + private boolean critico; + + public CrearReclamoDTO(Long tipoReclamoId, String descripcion, boolean critico) { + this.tipoReclamoId = tipoReclamoId; + this.descripcion = descripcion; + this.critico = critico; + } +} diff --git a/src/main/java/com/example/project/dto/reclamo/ResponseReclamoDTO.java b/src/main/java/com/example/project/dto/reclamo/ResponseReclamoDTO.java new file mode 100644 index 0000000..9eda78d --- /dev/null +++ b/src/main/java/com/example/project/dto/reclamo/ResponseReclamoDTO.java @@ -0,0 +1,30 @@ +package com.example.project.dto.reclamo; + + + +import com.example.project.models.TipoReclamo; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class ResponseReclamoDTO { + private Long id; + + private TipoReclamo tipoReclamo; + + private String descripcion; + + private boolean critico; + + + + public ResponseReclamoDTO(Long id, TipoReclamo tipoReclamo, String descripcion, boolean critico) { + this.id = id; + this.tipoReclamo = tipoReclamo; + this.descripcion = descripcion; + this.critico = critico; + + } +} \ No newline at end of file diff --git a/src/main/java/com/example/project/mapper/ReclamoMapper.java b/src/main/java/com/example/project/mapper/ReclamoMapper.java new file mode 100644 index 0000000..114d98e --- /dev/null +++ b/src/main/java/com/example/project/mapper/ReclamoMapper.java @@ -0,0 +1,35 @@ +package com.example.project.mapper; + +import java.util.List; + +import com.example.project.dto.reclamo.CrearReclamoDTO; +import com.example.project.dto.reclamo.ResponseReclamoDTO; +import com.example.project.models.Reclamo; +import com.example.project.models.TipoReclamo; + +public class ReclamoMapper { + + public static ResponseReclamoDTO toDto(Reclamo reclamo){ + return ResponseReclamoDTO.builder() + .id(reclamo.getId()) + .tipoReclamo(reclamo.getTipoReclamo()) + .descripcion(reclamo.getDescripcion()) + .critico(reclamo.isCritico()) + .build(); + } + + public static Reclamo toEntity(CrearReclamoDTO reclamoDto, TipoReclamo tipoReclamo){ + return Reclamo.builder() + .tipoReclamo(tipoReclamo) + .descripcion(reclamoDto.getDescripcion()) + .critico(reclamoDto.isCritico()) + .build(); + } + + public static List toDtoList(List reclamos){ + return reclamos + .stream() + .map(ReclamoMapper::toDto) + .toList(); + } +} diff --git a/src/main/java/com/example/project/models/Reclamo.java b/src/main/java/com/example/project/models/Reclamo.java new file mode 100644 index 0000000..52252b1 --- /dev/null +++ b/src/main/java/com/example/project/models/Reclamo.java @@ -0,0 +1,44 @@ +package com.example.project.models; + + + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; + +import lombok.Builder; +import lombok.Data; + +@Data +@Entity +@Builder +public class Reclamo { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne + @JoinColumn(name = "tipo_reclamo_id") + private TipoReclamo tipoReclamo; + + private String descripcion; + + private boolean critico; + + public Reclamo() { + + } + + public Reclamo(Long id, TipoReclamo tipoReclamo, String descripcion, boolean critico) { + this.id = id; + this.tipoReclamo = tipoReclamo; + this.descripcion = descripcion; + this.critico = critico; + } + + +} diff --git a/src/main/java/com/example/project/models/TipoReclamo.java b/src/main/java/com/example/project/models/TipoReclamo.java new file mode 100644 index 0000000..8da5a46 --- /dev/null +++ b/src/main/java/com/example/project/models/TipoReclamo.java @@ -0,0 +1,29 @@ +package com.example.project.models; + + + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; + +import lombok.Data; + +@Data +@Entity +public class TipoReclamo { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String nombre; + + public TipoReclamo() { + + } + + public TipoReclamo(String nombre) { + this.nombre = nombre; + } +} diff --git a/src/main/java/com/example/project/repositories/IReclamoRepository.java b/src/main/java/com/example/project/repositories/IReclamoRepository.java new file mode 100644 index 0000000..2f71ae1 --- /dev/null +++ b/src/main/java/com/example/project/repositories/IReclamoRepository.java @@ -0,0 +1,9 @@ +package com.example.project.repositories; + +import org.springframework.data.repository.CrudRepository; + +import com.example.project.models.Reclamo; + +public interface IReclamoRepository extends CrudRepository{ + +} diff --git a/src/main/java/com/example/project/services/reclamoServices/BuscarReclamoService.java b/src/main/java/com/example/project/services/reclamoServices/BuscarReclamoService.java new file mode 100644 index 0000000..cc2df9a --- /dev/null +++ b/src/main/java/com/example/project/services/reclamoServices/BuscarReclamoService.java @@ -0,0 +1,46 @@ +package com.example.project.services.reclamoServices; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; + +import com.example.project.mapper.ReclamoMapper; +import com.example.project.models.Reclamo; +import com.example.project.models.TipoReclamo; +import com.example.project.repositories.IReclamoRepository; +import com.example.project.services.reclamoServices.interfaces.IBuscarReclamoService; + +public class BuscarReclamoService implements IBuscarReclamoService{ + + @Autowired + private IReclamoRepository repository; + + @Override + public ResponseEntity buscarReclamo(Long id) { + + Optional optionalReclamo = repository.findById(id); + if (optionalReclamo.isEmpty()) { + return ResponseEntity.notFound().build(); + } + return ResponseEntity.ok(ReclamoMapper.toDto(optionalReclamo.get())); + + } + + @Override + public ResponseEntity buscarReclamos() { + return ResponseEntity + .ok() + .body( + ReclamoMapper.toDtoList((List) repository.findAll()) + ); + } + + @Override + public ResponseEntity buscarReclamosPorTipo(TipoReclamo tipoReclamo) { + //Metodo no implementado + return null; + } + +} diff --git a/src/main/java/com/example/project/services/reclamoServices/interfaces/IBuscarReclamoService.java b/src/main/java/com/example/project/services/reclamoServices/interfaces/IBuscarReclamoService.java new file mode 100644 index 0000000..65fe948 --- /dev/null +++ b/src/main/java/com/example/project/services/reclamoServices/interfaces/IBuscarReclamoService.java @@ -0,0 +1,14 @@ +package com.example.project.services.reclamoServices.interfaces; + +import org.springframework.http.ResponseEntity; + +import com.example.project.models.TipoReclamo; + +public interface IBuscarReclamoService { + + ResponseEntity buscarReclamo(Long id); + + ResponseEntity buscarReclamos(); + + ResponseEntity buscarReclamosPorTipo(TipoReclamo tipoReclamo); +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 516d34b..b9fc0c2 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,8 @@ spring.application.name=project.management + +spring.datasource.url = jdbc:mysql://localhost:3306/e_commerce_db +spring.datasource.username = root +spring.datasource.password = admin +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.jpa.hibernate.ddl-auto=update +spring.jpa.show-sql=true \ No newline at end of file