diff --git a/backend/src/main/java/com/petshop/backend/dto/service/ServiceRequest.java b/backend/src/main/java/com/petshop/backend/dto/service/ServiceRequest.java index 6b4550ec..c84ac5f7 100644 --- a/backend/src/main/java/com/petshop/backend/dto/service/ServiceRequest.java +++ b/backend/src/main/java/com/petshop/backend/dto/service/ServiceRequest.java @@ -4,7 +4,9 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Positive; import java.math.BigDecimal; +import java.util.HashSet; import java.util.Objects; +import java.util.Set; public class ServiceRequest { @NotBlank(message = "Service name is required") @@ -19,6 +21,8 @@ public class ServiceRequest { @Positive(message = "Duration must be positive") private Integer serviceDuration; + private Set species = new HashSet<>(); + public String getServiceName() { return serviceName; } @@ -51,6 +55,14 @@ public class ServiceRequest { this.serviceDuration = serviceDuration; } + public Set getSpecies() { + return species; + } + + public void setSpecies(Set species) { + this.species = species; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -59,12 +71,13 @@ public class ServiceRequest { return Objects.equals(serviceName, that.serviceName) && Objects.equals(serviceDesc, that.serviceDesc) && Objects.equals(servicePrice, that.servicePrice) && - Objects.equals(serviceDuration, that.serviceDuration); + Objects.equals(serviceDuration, that.serviceDuration) && + Objects.equals(species, that.species); } @Override public int hashCode() { - return Objects.hash(serviceName, serviceDesc, servicePrice, serviceDuration); + return Objects.hash(serviceName, serviceDesc, servicePrice, serviceDuration, species); } @Override @@ -74,6 +87,7 @@ public class ServiceRequest { ", serviceDesc='" + serviceDesc + '\'' + ", servicePrice=" + servicePrice + ", serviceDuration=" + serviceDuration + + ", species=" + species + '}'; } } diff --git a/backend/src/main/java/com/petshop/backend/dto/service/ServiceResponse.java b/backend/src/main/java/com/petshop/backend/dto/service/ServiceResponse.java index 53a2be5b..4f0300ab 100644 --- a/backend/src/main/java/com/petshop/backend/dto/service/ServiceResponse.java +++ b/backend/src/main/java/com/petshop/backend/dto/service/ServiceResponse.java @@ -3,6 +3,7 @@ package com.petshop.backend.dto.service; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Objects; +import java.util.Set; public class ServiceResponse { private Long serviceId; @@ -10,18 +11,20 @@ public class ServiceResponse { private String serviceDesc; private BigDecimal servicePrice; private Integer serviceDuration; + private Set species; private LocalDateTime createdAt; private LocalDateTime updatedAt; public ServiceResponse() { } - public ServiceResponse(Long serviceId, String serviceName, String serviceDesc, BigDecimal servicePrice, Integer serviceDuration, LocalDateTime createdAt, LocalDateTime updatedAt) { + public ServiceResponse(Long serviceId, String serviceName, String serviceDesc, BigDecimal servicePrice, Integer serviceDuration, Set species, LocalDateTime createdAt, LocalDateTime updatedAt) { this.serviceId = serviceId; this.serviceName = serviceName; this.serviceDesc = serviceDesc; this.servicePrice = servicePrice; this.serviceDuration = serviceDuration; + this.species = species; this.createdAt = createdAt; this.updatedAt = updatedAt; } @@ -66,6 +69,14 @@ public class ServiceResponse { this.serviceDuration = serviceDuration; } + public Set getSpecies() { + return species; + } + + public void setSpecies(Set species) { + this.species = species; + } + public LocalDateTime getCreatedAt() { return createdAt; } @@ -87,12 +98,12 @@ public class ServiceResponse { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; ServiceResponse that = (ServiceResponse) o; - return Objects.equals(serviceId, that.serviceId) && Objects.equals(serviceName, that.serviceName) && Objects.equals(serviceDesc, that.serviceDesc) && Objects.equals(servicePrice, that.servicePrice) && Objects.equals(serviceDuration, that.serviceDuration) && Objects.equals(createdAt, that.createdAt) && Objects.equals(updatedAt, that.updatedAt); + return Objects.equals(serviceId, that.serviceId) && Objects.equals(serviceName, that.serviceName) && Objects.equals(serviceDesc, that.serviceDesc) && Objects.equals(servicePrice, that.servicePrice) && Objects.equals(serviceDuration, that.serviceDuration) && Objects.equals(species, that.species) && Objects.equals(createdAt, that.createdAt) && Objects.equals(updatedAt, that.updatedAt); } @Override public int hashCode() { - return Objects.hash(serviceId, serviceName, serviceDesc, servicePrice, serviceDuration, createdAt, updatedAt); + return Objects.hash(serviceId, serviceName, serviceDesc, servicePrice, serviceDuration, species, createdAt, updatedAt); } @Override @@ -103,6 +114,7 @@ public class ServiceResponse { ", serviceDesc='" + serviceDesc + '\'' + ", servicePrice=" + servicePrice + ", serviceDuration=" + serviceDuration + + ", species=" + species + ", createdAt=" + createdAt + ", updatedAt=" + updatedAt + '}'; diff --git a/backend/src/main/java/com/petshop/backend/entity/Service.java b/backend/src/main/java/com/petshop/backend/entity/Service.java index a73387c8..77223922 100644 --- a/backend/src/main/java/com/petshop/backend/entity/Service.java +++ b/backend/src/main/java/com/petshop/backend/entity/Service.java @@ -6,7 +6,9 @@ import org.hibernate.annotations.UpdateTimestamp; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.HashSet; import java.util.Objects; +import java.util.Set; @Entity @Table(name = "service") @@ -28,6 +30,11 @@ public class Service { @Column(nullable = false) private Integer serviceDuration; + @ElementCollection + @CollectionTable(name = "service_species", joinColumns = @JoinColumn(name = "serviceId")) + @Column(name = "species", length = 50) + private Set species = new HashSet<>(); + @CreationTimestamp @Column(name = "created_at", updatable = false) private LocalDateTime createdAt; @@ -89,6 +96,14 @@ public class Service { this.serviceDuration = serviceDuration; } + public Set getSpecies() { + return species; + } + + public void setSpecies(Set species) { + this.species = species; + } + public LocalDateTime getCreatedAt() { return createdAt; } diff --git a/backend/src/main/java/com/petshop/backend/service/ServiceService.java b/backend/src/main/java/com/petshop/backend/service/ServiceService.java index 5243f101..e2395392 100644 --- a/backend/src/main/java/com/petshop/backend/service/ServiceService.java +++ b/backend/src/main/java/com/petshop/backend/service/ServiceService.java @@ -42,6 +42,9 @@ public class ServiceService { service.setServiceDesc(request.getServiceDesc()); service.setServicePrice(request.getServicePrice()); service.setServiceDuration(request.getServiceDuration()); + if (request.getSpecies() != null) { + service.setSpecies(request.getSpecies()); + } service = serviceRepository.save(service); return mapToResponse(service); @@ -56,6 +59,9 @@ public class ServiceService { service.setServiceDesc(request.getServiceDesc()); service.setServicePrice(request.getServicePrice()); service.setServiceDuration(request.getServiceDuration()); + if (request.getSpecies() != null) { + service.setSpecies(request.getSpecies()); + } service = serviceRepository.save(service); return mapToResponse(service); @@ -81,6 +87,7 @@ public class ServiceService { service.getServiceDesc(), service.getServicePrice(), service.getServiceDuration(), + service.getSpecies(), service.getCreatedAt(), service.getUpdatedAt() );