Align backend schema with desktop application
This commit is contained in:
@@ -2,7 +2,6 @@ package com.petshop.backend.controller;
|
||||
|
||||
import com.petshop.backend.dto.auth.LoginRequest;
|
||||
import com.petshop.backend.dto.auth.LoginResponse;
|
||||
import com.petshop.backend.dto.auth.RegisterRequest;
|
||||
import com.petshop.backend.dto.auth.UserInfoResponse;
|
||||
import com.petshop.backend.entity.User;
|
||||
import com.petshop.backend.repository.UserRepository;
|
||||
@@ -39,40 +38,6 @@ public class AuthController {
|
||||
this.passwordEncoder = passwordEncoder;
|
||||
}
|
||||
|
||||
@PostMapping("/register")
|
||||
public ResponseEntity<?> register(@Valid @RequestBody RegisterRequest request) {
|
||||
if (userRepository.findByUsername(request.getEmail()).isPresent()) {
|
||||
Map<String, String> error = new HashMap<>();
|
||||
error.put("message", "Email already registered");
|
||||
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(error);
|
||||
}
|
||||
|
||||
User user = new User();
|
||||
user.setUsername(request.getEmail());
|
||||
user.setEmail(request.getEmail());
|
||||
user.setPassword(passwordEncoder.encode(request.getPassword()));
|
||||
user.setFullName(request.getFirstName() + " " + request.getLastName());
|
||||
user.setRole(User.Role.CUSTOMER);
|
||||
user.setActive(true);
|
||||
|
||||
user = userRepository.save(user);
|
||||
|
||||
UserDetails userDetails = new org.springframework.security.core.userdetails.User(
|
||||
user.getUsername(),
|
||||
user.getPassword(),
|
||||
java.util.Collections.emptyList()
|
||||
);
|
||||
|
||||
String token = jwtUtil.generateToken(userDetails);
|
||||
|
||||
return ResponseEntity.status(HttpStatus.CREATED).body(new LoginResponse(
|
||||
token,
|
||||
user.getUsername(),
|
||||
user.getFullName(),
|
||||
user.getRole().name()
|
||||
));
|
||||
}
|
||||
|
||||
@PostMapping("/login")
|
||||
public ResponseEntity<?> login(@Valid @RequestBody LoginRequest request) {
|
||||
try {
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
package com.petshop.backend.controller;
|
||||
|
||||
import com.petshop.backend.dto.refund.RefundRequest;
|
||||
import com.petshop.backend.dto.refund.RefundResponse;
|
||||
import com.petshop.backend.service.RefundService;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/sales")
|
||||
public class RefundController {
|
||||
|
||||
private final RefundService refundService;
|
||||
|
||||
public RefundController(RefundService refundService) {
|
||||
this.refundService = refundService;
|
||||
}
|
||||
|
||||
@PostMapping("/{saleId}/refunds")
|
||||
public ResponseEntity<RefundResponse> createRefund(
|
||||
@PathVariable Long saleId,
|
||||
@Valid @RequestBody RefundRequest request) {
|
||||
return ResponseEntity.status(HttpStatus.CREATED).body(refundService.createRefund(saleId, request));
|
||||
}
|
||||
}
|
||||
@@ -1,91 +0,0 @@
|
||||
package com.petshop.backend.dto.auth;
|
||||
|
||||
import jakarta.validation.constraints.Email;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import java.util.Objects;
|
||||
|
||||
public class RegisterRequest {
|
||||
@NotBlank(message = "First name is required")
|
||||
private String firstName;
|
||||
|
||||
@NotBlank(message = "Last name is required")
|
||||
private String lastName;
|
||||
|
||||
@NotBlank(message = "Email is required")
|
||||
@Email(message = "Email must be valid")
|
||||
private String email;
|
||||
|
||||
@NotBlank(message = "Phone is required")
|
||||
private String phone;
|
||||
|
||||
@NotBlank(message = "Password is required")
|
||||
private String password;
|
||||
|
||||
public String getFirstName() {
|
||||
return firstName;
|
||||
}
|
||||
|
||||
public void setFirstName(String firstName) {
|
||||
this.firstName = firstName;
|
||||
}
|
||||
|
||||
public String getLastName() {
|
||||
return lastName;
|
||||
}
|
||||
|
||||
public void setLastName(String lastName) {
|
||||
this.lastName = lastName;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getPhone() {
|
||||
return phone;
|
||||
}
|
||||
|
||||
public void setPhone(String phone) {
|
||||
this.phone = phone;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
RegisterRequest that = (RegisterRequest) o;
|
||||
return Objects.equals(firstName, that.firstName) &&
|
||||
Objects.equals(lastName, that.lastName) &&
|
||||
Objects.equals(email, that.email) &&
|
||||
Objects.equals(phone, that.phone) &&
|
||||
Objects.equals(password, that.password);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(firstName, lastName, email, phone, password);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "RegisterRequest{" +
|
||||
"firstName='" + firstName + '\'' +
|
||||
", lastName='" + lastName + '\'' +
|
||||
", email='" + email + '\'' +
|
||||
", phone='" + phone + '\'' +
|
||||
", password='[PROTECTED]'" +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -1,52 +0,0 @@
|
||||
package com.petshop.backend.dto.refund;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.Positive;
|
||||
import java.util.Objects;
|
||||
|
||||
public class RefundItemRequest {
|
||||
@NotNull(message = "Sale item ID is required")
|
||||
private Long saleItemId;
|
||||
|
||||
@NotNull(message = "Quantity is required")
|
||||
@Positive(message = "Quantity must be positive")
|
||||
private Integer quantity;
|
||||
|
||||
public Long getSaleItemId() {
|
||||
return saleItemId;
|
||||
}
|
||||
|
||||
public void setSaleItemId(Long saleItemId) {
|
||||
this.saleItemId = saleItemId;
|
||||
}
|
||||
|
||||
public Integer getQuantity() {
|
||||
return quantity;
|
||||
}
|
||||
|
||||
public void setQuantity(Integer quantity) {
|
||||
this.quantity = quantity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
RefundItemRequest that = (RefundItemRequest) o;
|
||||
return Objects.equals(saleItemId, that.saleItemId) &&
|
||||
Objects.equals(quantity, that.quantity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(saleItemId, quantity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "RefundItemRequest{" +
|
||||
"saleItemId=" + saleItemId +
|
||||
", quantity=" + quantity +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -1,52 +0,0 @@
|
||||
package com.petshop.backend.dto.refund;
|
||||
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
public class RefundRequest {
|
||||
@NotEmpty(message = "At least one item is required")
|
||||
@Valid
|
||||
private List<RefundItemRequest> items;
|
||||
|
||||
private String refundReason;
|
||||
|
||||
public List<RefundItemRequest> getItems() {
|
||||
return items;
|
||||
}
|
||||
|
||||
public void setItems(List<RefundItemRequest> items) {
|
||||
this.items = items;
|
||||
}
|
||||
|
||||
public String getRefundReason() {
|
||||
return refundReason;
|
||||
}
|
||||
|
||||
public void setRefundReason(String refundReason) {
|
||||
this.refundReason = refundReason;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
RefundRequest that = (RefundRequest) o;
|
||||
return Objects.equals(items, that.items) &&
|
||||
Objects.equals(refundReason, that.refundReason);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(items, refundReason);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "RefundRequest{" +
|
||||
"items=" + items +
|
||||
", refundReason='" + refundReason + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -1,227 +0,0 @@
|
||||
package com.petshop.backend.dto.refund;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
public class RefundResponse {
|
||||
private Long id;
|
||||
private Long saleId;
|
||||
private LocalDateTime refundDate;
|
||||
private BigDecimal refundAmount;
|
||||
private String refundReason;
|
||||
private Long processedBy;
|
||||
private String processedByName;
|
||||
private List<RefundItemResponse> items;
|
||||
private LocalDateTime createdAt;
|
||||
|
||||
public RefundResponse() {
|
||||
}
|
||||
|
||||
public RefundResponse(Long id, Long saleId, LocalDateTime refundDate, BigDecimal refundAmount, String refundReason, Long processedBy, String processedByName, List<RefundItemResponse> items, LocalDateTime createdAt) {
|
||||
this.id = id;
|
||||
this.saleId = saleId;
|
||||
this.refundDate = refundDate;
|
||||
this.refundAmount = refundAmount;
|
||||
this.refundReason = refundReason;
|
||||
this.processedBy = processedBy;
|
||||
this.processedByName = processedByName;
|
||||
this.items = items;
|
||||
this.createdAt = createdAt;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getSaleId() {
|
||||
return saleId;
|
||||
}
|
||||
|
||||
public void setSaleId(Long saleId) {
|
||||
this.saleId = saleId;
|
||||
}
|
||||
|
||||
public LocalDateTime getRefundDate() {
|
||||
return refundDate;
|
||||
}
|
||||
|
||||
public void setRefundDate(LocalDateTime refundDate) {
|
||||
this.refundDate = refundDate;
|
||||
}
|
||||
|
||||
public BigDecimal getRefundAmount() {
|
||||
return refundAmount;
|
||||
}
|
||||
|
||||
public void setRefundAmount(BigDecimal refundAmount) {
|
||||
this.refundAmount = refundAmount;
|
||||
}
|
||||
|
||||
public String getRefundReason() {
|
||||
return refundReason;
|
||||
}
|
||||
|
||||
public void setRefundReason(String refundReason) {
|
||||
this.refundReason = refundReason;
|
||||
}
|
||||
|
||||
public Long getProcessedBy() {
|
||||
return processedBy;
|
||||
}
|
||||
|
||||
public void setProcessedBy(Long processedBy) {
|
||||
this.processedBy = processedBy;
|
||||
}
|
||||
|
||||
public String getProcessedByName() {
|
||||
return processedByName;
|
||||
}
|
||||
|
||||
public void setProcessedByName(String processedByName) {
|
||||
this.processedByName = processedByName;
|
||||
}
|
||||
|
||||
public List<RefundItemResponse> getItems() {
|
||||
return items;
|
||||
}
|
||||
|
||||
public void setItems(List<RefundItemResponse> items) {
|
||||
this.items = items;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreatedAt() {
|
||||
return createdAt;
|
||||
}
|
||||
|
||||
public void setCreatedAt(LocalDateTime createdAt) {
|
||||
this.createdAt = createdAt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
RefundResponse that = (RefundResponse) o;
|
||||
return Objects.equals(id, that.id) && Objects.equals(saleId, that.saleId) && Objects.equals(refundDate, that.refundDate) && Objects.equals(refundAmount, that.refundAmount) && Objects.equals(refundReason, that.refundReason) && Objects.equals(processedBy, that.processedBy) && Objects.equals(processedByName, that.processedByName) && Objects.equals(items, that.items) && Objects.equals(createdAt, that.createdAt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id, saleId, refundDate, refundAmount, refundReason, processedBy, processedByName, items, createdAt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "RefundResponse{" +
|
||||
"id=" + id +
|
||||
", saleId=" + saleId +
|
||||
", refundDate=" + refundDate +
|
||||
", refundAmount=" + refundAmount +
|
||||
", refundReason='" + refundReason + '\'' +
|
||||
", processedBy=" + processedBy +
|
||||
", processedByName='" + processedByName + '\'' +
|
||||
", items=" + items +
|
||||
", createdAt=" + createdAt +
|
||||
'}';
|
||||
}
|
||||
|
||||
public static class RefundItemResponse {
|
||||
private Long id;
|
||||
private Long saleItemId;
|
||||
private Long productId;
|
||||
private String productName;
|
||||
private Integer quantity;
|
||||
private BigDecimal refundAmount;
|
||||
|
||||
public RefundItemResponse() {
|
||||
}
|
||||
|
||||
public RefundItemResponse(Long id, Long saleItemId, Long productId, String productName, Integer quantity, BigDecimal refundAmount) {
|
||||
this.id = id;
|
||||
this.saleItemId = saleItemId;
|
||||
this.productId = productId;
|
||||
this.productName = productName;
|
||||
this.quantity = quantity;
|
||||
this.refundAmount = refundAmount;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getSaleItemId() {
|
||||
return saleItemId;
|
||||
}
|
||||
|
||||
public void setSaleItemId(Long saleItemId) {
|
||||
this.saleItemId = saleItemId;
|
||||
}
|
||||
|
||||
public Long getProductId() {
|
||||
return productId;
|
||||
}
|
||||
|
||||
public void setProductId(Long productId) {
|
||||
this.productId = productId;
|
||||
}
|
||||
|
||||
public String getProductName() {
|
||||
return productName;
|
||||
}
|
||||
|
||||
public void setProductName(String productName) {
|
||||
this.productName = productName;
|
||||
}
|
||||
|
||||
public Integer getQuantity() {
|
||||
return quantity;
|
||||
}
|
||||
|
||||
public void setQuantity(Integer quantity) {
|
||||
this.quantity = quantity;
|
||||
}
|
||||
|
||||
public BigDecimal getRefundAmount() {
|
||||
return refundAmount;
|
||||
}
|
||||
|
||||
public void setRefundAmount(BigDecimal refundAmount) {
|
||||
this.refundAmount = refundAmount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
RefundItemResponse that = (RefundItemResponse) o;
|
||||
return Objects.equals(id, that.id) && Objects.equals(saleItemId, that.saleItemId) && Objects.equals(productId, that.productId) && Objects.equals(productName, that.productName) && Objects.equals(quantity, that.quantity) && Objects.equals(refundAmount, that.refundAmount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id, saleItemId, productId, productName, quantity, refundAmount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "RefundItemResponse{" +
|
||||
"id=" + id +
|
||||
", saleItemId=" + saleItemId +
|
||||
", productId=" + productId +
|
||||
", productName='" + productName + '\'' +
|
||||
", quantity=" + quantity +
|
||||
", refundAmount=" + refundAmount +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
}
|
||||
90
src/main/java/com/petshop/backend/entity/ActivityLog.java
Normal file
90
src/main/java/com/petshop/backend/entity/ActivityLog.java
Normal file
@@ -0,0 +1,90 @@
|
||||
package com.petshop.backend.entity;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name = "activityLog")
|
||||
public class ActivityLog {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long logId;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "employeeId", nullable = false)
|
||||
private Employee employee;
|
||||
|
||||
@Column(nullable = false, columnDefinition = "TEXT")
|
||||
private String activity;
|
||||
|
||||
@Column(nullable = false)
|
||||
private LocalDateTime logTimestamp = LocalDateTime.now();
|
||||
|
||||
public ActivityLog() {
|
||||
}
|
||||
|
||||
public ActivityLog(Long logId, Employee employee, String activity, LocalDateTime logTimestamp) {
|
||||
this.logId = logId;
|
||||
this.employee = employee;
|
||||
this.activity = activity;
|
||||
this.logTimestamp = logTimestamp;
|
||||
}
|
||||
|
||||
public Long getLogId() {
|
||||
return logId;
|
||||
}
|
||||
|
||||
public void setLogId(Long logId) {
|
||||
this.logId = logId;
|
||||
}
|
||||
|
||||
public Employee getEmployee() {
|
||||
return employee;
|
||||
}
|
||||
|
||||
public void setEmployee(Employee employee) {
|
||||
this.employee = employee;
|
||||
}
|
||||
|
||||
public String getActivity() {
|
||||
return activity;
|
||||
}
|
||||
|
||||
public void setActivity(String activity) {
|
||||
this.activity = activity;
|
||||
}
|
||||
|
||||
public LocalDateTime getLogTimestamp() {
|
||||
return logTimestamp;
|
||||
}
|
||||
|
||||
public void setLogTimestamp(LocalDateTime logTimestamp) {
|
||||
this.logTimestamp = logTimestamp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
ActivityLog that = (ActivityLog) o;
|
||||
return Objects.equals(logId, that.logId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(logId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ActivityLog{" +
|
||||
"logId=" + logId +
|
||||
", employee=" + employee +
|
||||
", activity='" + activity + '\'' +
|
||||
", logTimestamp=" + logTimestamp +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -10,29 +10,26 @@ import java.time.LocalDateTime;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name = "adoptions")
|
||||
@Table(name = "adoption")
|
||||
public class Adoption {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
private Long adoptionId;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "pet_id", nullable = false)
|
||||
@JoinColumn(name = "petId", nullable = false)
|
||||
private Pet pet;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "customer_id", nullable = false)
|
||||
@JoinColumn(name = "customerId", nullable = false)
|
||||
private Customer customer;
|
||||
|
||||
@Column(name = "adoption_date", nullable = false)
|
||||
@Column(nullable = false)
|
||||
private LocalDate adoptionDate;
|
||||
|
||||
@Column(name = "adoption_fee", nullable = false, precision = 10, scale = 2)
|
||||
private BigDecimal adoptionFee;
|
||||
|
||||
@Column(columnDefinition = "TEXT")
|
||||
private String notes;
|
||||
@Column(nullable = false, length = 20)
|
||||
private String adoptionStatus;
|
||||
|
||||
@CreationTimestamp
|
||||
@Column(name = "created_at", updatable = false)
|
||||
@@ -45,23 +42,22 @@ public class Adoption {
|
||||
public Adoption() {
|
||||
}
|
||||
|
||||
public Adoption(Long id, Pet pet, Customer customer, LocalDate adoptionDate, BigDecimal adoptionFee, String notes, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.id = id;
|
||||
public Adoption(Long adoptionId, Pet pet, Customer customer, LocalDate adoptionDate, String adoptionStatus, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.adoptionId = adoptionId;
|
||||
this.pet = pet;
|
||||
this.customer = customer;
|
||||
this.adoptionDate = adoptionDate;
|
||||
this.adoptionFee = adoptionFee;
|
||||
this.notes = notes;
|
||||
this.adoptionStatus = adoptionStatus;
|
||||
this.createdAt = createdAt;
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
public Long getAdoptionId() {
|
||||
return adoptionId;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
public void setAdoptionId(Long adoptionId) {
|
||||
this.adoptionId = adoptionId;
|
||||
}
|
||||
|
||||
public Pet getPet() {
|
||||
@@ -88,20 +84,12 @@ public class Adoption {
|
||||
this.adoptionDate = adoptionDate;
|
||||
}
|
||||
|
||||
public BigDecimal getAdoptionFee() {
|
||||
return adoptionFee;
|
||||
public String getAdoptionStatus() {
|
||||
return adoptionStatus;
|
||||
}
|
||||
|
||||
public void setAdoptionFee(BigDecimal adoptionFee) {
|
||||
this.adoptionFee = adoptionFee;
|
||||
}
|
||||
|
||||
public String getNotes() {
|
||||
return notes;
|
||||
}
|
||||
|
||||
public void setNotes(String notes) {
|
||||
this.notes = notes;
|
||||
public void setAdoptionStatus(String adoptionStatus) {
|
||||
this.adoptionStatus = adoptionStatus;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreatedAt() {
|
||||
@@ -125,23 +113,22 @@ public class Adoption {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Adoption adoption = (Adoption) o;
|
||||
return Objects.equals(id, adoption.id);
|
||||
return Objects.equals(adoptionId, adoption.adoptionId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
return Objects.hash(adoptionId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Adoption{" +
|
||||
"id=" + id +
|
||||
"adoptionId=" + adoptionId +
|
||||
", pet=" + pet +
|
||||
", customer=" + customer +
|
||||
", adoptionDate=" + adoptionDate +
|
||||
", adoptionFee=" + adoptionFee +
|
||||
", notes='" + notes + '\'' +
|
||||
", adoptionStatus='" + adoptionStatus + '\'' +
|
||||
", createdAt=" + createdAt +
|
||||
", updatedAt=" + updatedAt +
|
||||
'}';
|
||||
|
||||
@@ -12,39 +12,35 @@ import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
@Entity
|
||||
@Table(name = "appointments")
|
||||
@Table(name = "appointment")
|
||||
public class Appointment {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
private Long appointmentId;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "customer_id", nullable = false)
|
||||
@JoinColumn(name = "customerId", nullable = false)
|
||||
private Customer customer;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "service_id", nullable = false)
|
||||
@JoinColumn(name = "serviceId", nullable = false)
|
||||
private Service service;
|
||||
|
||||
@Column(name = "appointment_date", nullable = false)
|
||||
@Column(nullable = false)
|
||||
private LocalDate appointmentDate;
|
||||
|
||||
@Column(name = "appointment_time", nullable = false)
|
||||
@Column(nullable = false)
|
||||
private LocalTime appointmentTime;
|
||||
|
||||
@Enumerated(EnumType.STRING)
|
||||
@Column(nullable = false)
|
||||
private AppointmentStatus status = AppointmentStatus.Scheduled;
|
||||
|
||||
@Column(columnDefinition = "TEXT")
|
||||
private String notes;
|
||||
@Column(nullable = false, length = 20)
|
||||
private String appointmentStatus;
|
||||
|
||||
@ManyToMany
|
||||
@JoinTable(
|
||||
name = "appointment_pets",
|
||||
joinColumns = @JoinColumn(name = "appointment_id"),
|
||||
inverseJoinColumns = @JoinColumn(name = "pet_id")
|
||||
name = "appointmentPet",
|
||||
joinColumns = @JoinColumn(name = "appointmentId"),
|
||||
inverseJoinColumns = @JoinColumn(name = "petId")
|
||||
)
|
||||
private Set<Pet> pets = new HashSet<>();
|
||||
|
||||
@@ -56,32 +52,27 @@ public class Appointment {
|
||||
@Column(name = "updated_at")
|
||||
private LocalDateTime updatedAt;
|
||||
|
||||
public enum AppointmentStatus {
|
||||
Scheduled, Completed, Cancelled
|
||||
}
|
||||
|
||||
public Appointment() {
|
||||
}
|
||||
|
||||
public Appointment(Long id, Customer customer, Service service, LocalDate appointmentDate, LocalTime appointmentTime, AppointmentStatus status, String notes, Set<Pet> pets, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.id = id;
|
||||
public Appointment(Long appointmentId, Customer customer, Service service, LocalDate appointmentDate, LocalTime appointmentTime, String appointmentStatus, Set<Pet> pets, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.appointmentId = appointmentId;
|
||||
this.customer = customer;
|
||||
this.service = service;
|
||||
this.appointmentDate = appointmentDate;
|
||||
this.appointmentTime = appointmentTime;
|
||||
this.status = status;
|
||||
this.notes = notes;
|
||||
this.appointmentStatus = appointmentStatus;
|
||||
this.pets = pets;
|
||||
this.createdAt = createdAt;
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
public Long getAppointmentId() {
|
||||
return appointmentId;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
public void setAppointmentId(Long appointmentId) {
|
||||
this.appointmentId = appointmentId;
|
||||
}
|
||||
|
||||
public Customer getCustomer() {
|
||||
@@ -116,20 +107,12 @@ public class Appointment {
|
||||
this.appointmentTime = appointmentTime;
|
||||
}
|
||||
|
||||
public AppointmentStatus getStatus() {
|
||||
return status;
|
||||
public String getAppointmentStatus() {
|
||||
return appointmentStatus;
|
||||
}
|
||||
|
||||
public void setStatus(AppointmentStatus status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public String getNotes() {
|
||||
return notes;
|
||||
}
|
||||
|
||||
public void setNotes(String notes) {
|
||||
this.notes = notes;
|
||||
public void setAppointmentStatus(String appointmentStatus) {
|
||||
this.appointmentStatus = appointmentStatus;
|
||||
}
|
||||
|
||||
public Set<Pet> getPets() {
|
||||
@@ -161,24 +144,23 @@ public class Appointment {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Appointment that = (Appointment) o;
|
||||
return Objects.equals(id, that.id);
|
||||
return Objects.equals(appointmentId, that.appointmentId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
return Objects.hash(appointmentId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Appointment{" +
|
||||
"id=" + id +
|
||||
"appointmentId=" + appointmentId +
|
||||
", customer=" + customer +
|
||||
", service=" + service +
|
||||
", appointmentDate=" + appointmentDate +
|
||||
", appointmentTime=" + appointmentTime +
|
||||
", status=" + status +
|
||||
", notes='" + notes + '\'' +
|
||||
", appointmentStatus='" + appointmentStatus + '\'' +
|
||||
", pets=" + pets +
|
||||
", createdAt=" + createdAt +
|
||||
", updatedAt=" + updatedAt +
|
||||
|
||||
@@ -8,18 +8,18 @@ import java.time.LocalDateTime;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name = "categories")
|
||||
@Table(name = "category")
|
||||
public class Category {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
private Long categoryId;
|
||||
|
||||
@Column(name = "category_name", nullable = false, unique = true, length = 100)
|
||||
@Column(nullable = false, length = 100)
|
||||
private String categoryName;
|
||||
|
||||
@Column(name = "category_description", columnDefinition = "TEXT")
|
||||
private String categoryDescription;
|
||||
@Column(nullable = false, length = 50)
|
||||
private String categoryType;
|
||||
|
||||
@CreationTimestamp
|
||||
@Column(name = "created_at", updatable = false)
|
||||
@@ -32,20 +32,20 @@ public class Category {
|
||||
public Category() {
|
||||
}
|
||||
|
||||
public Category(Long id, String categoryName, String categoryDescription, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.id = id;
|
||||
public Category(Long categoryId, String categoryName, String categoryType, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.categoryId = categoryId;
|
||||
this.categoryName = categoryName;
|
||||
this.categoryDescription = categoryDescription;
|
||||
this.categoryType = categoryType;
|
||||
this.createdAt = createdAt;
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
public Long getCategoryId() {
|
||||
return categoryId;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
public void setCategoryId(Long categoryId) {
|
||||
this.categoryId = categoryId;
|
||||
}
|
||||
|
||||
public String getCategoryName() {
|
||||
@@ -56,12 +56,12 @@ public class Category {
|
||||
this.categoryName = categoryName;
|
||||
}
|
||||
|
||||
public String getCategoryDescription() {
|
||||
return categoryDescription;
|
||||
public String getCategoryType() {
|
||||
return categoryType;
|
||||
}
|
||||
|
||||
public void setCategoryDescription(String categoryDescription) {
|
||||
this.categoryDescription = categoryDescription;
|
||||
public void setCategoryType(String categoryType) {
|
||||
this.categoryType = categoryType;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreatedAt() {
|
||||
@@ -85,20 +85,20 @@ public class Category {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Category category = (Category) o;
|
||||
return Objects.equals(id, category.id);
|
||||
return Objects.equals(categoryId, category.categoryId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
return Objects.hash(categoryId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Category{" +
|
||||
"id=" + id +
|
||||
"categoryId=" + categoryId +
|
||||
", categoryName='" + categoryName + '\'' +
|
||||
", categoryDescription='" + categoryDescription + '\'' +
|
||||
", categoryType='" + categoryType + '\'' +
|
||||
", createdAt=" + createdAt +
|
||||
", updatedAt=" + updatedAt +
|
||||
'}';
|
||||
|
||||
@@ -8,24 +8,24 @@ import java.time.LocalDateTime;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name = "customers")
|
||||
@Table(name = "customer")
|
||||
public class Customer {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
private Long customerId;
|
||||
|
||||
@Column(name = "customer_name", nullable = false, length = 100)
|
||||
private String customerName;
|
||||
@Column(nullable = false, length = 50)
|
||||
private String firstName;
|
||||
|
||||
@Column(name = "customer_email", length = 100)
|
||||
private String customerEmail;
|
||||
@Column(nullable = false, length = 50)
|
||||
private String lastName;
|
||||
|
||||
@Column(name = "customer_phone", length = 20)
|
||||
private String customerPhone;
|
||||
@Column(nullable = false, length = 100)
|
||||
private String email;
|
||||
|
||||
@Column(name = "customer_address", columnDefinition = "TEXT")
|
||||
private String customerAddress;
|
||||
@Column(nullable = false, length = 20)
|
||||
private String phone;
|
||||
|
||||
@CreationTimestamp
|
||||
@Column(name = "created_at", updatable = false)
|
||||
@@ -38,54 +38,54 @@ public class Customer {
|
||||
public Customer() {
|
||||
}
|
||||
|
||||
public Customer(Long id, String customerName, String customerEmail, String customerPhone, String customerAddress, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.id = id;
|
||||
this.customerName = customerName;
|
||||
this.customerEmail = customerEmail;
|
||||
this.customerPhone = customerPhone;
|
||||
this.customerAddress = customerAddress;
|
||||
public Customer(Long customerId, String firstName, String lastName, String email, String phone, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.customerId = customerId;
|
||||
this.firstName = firstName;
|
||||
this.lastName = lastName;
|
||||
this.email = email;
|
||||
this.phone = phone;
|
||||
this.createdAt = createdAt;
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
public Long getCustomerId() {
|
||||
return customerId;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
public void setCustomerId(Long customerId) {
|
||||
this.customerId = customerId;
|
||||
}
|
||||
|
||||
public String getCustomerName() {
|
||||
return customerName;
|
||||
public String getFirstName() {
|
||||
return firstName;
|
||||
}
|
||||
|
||||
public void setCustomerName(String customerName) {
|
||||
this.customerName = customerName;
|
||||
public void setFirstName(String firstName) {
|
||||
this.firstName = firstName;
|
||||
}
|
||||
|
||||
public String getCustomerEmail() {
|
||||
return customerEmail;
|
||||
public String getLastName() {
|
||||
return lastName;
|
||||
}
|
||||
|
||||
public void setCustomerEmail(String customerEmail) {
|
||||
this.customerEmail = customerEmail;
|
||||
public void setLastName(String lastName) {
|
||||
this.lastName = lastName;
|
||||
}
|
||||
|
||||
public String getCustomerPhone() {
|
||||
return customerPhone;
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setCustomerPhone(String customerPhone) {
|
||||
this.customerPhone = customerPhone;
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getCustomerAddress() {
|
||||
return customerAddress;
|
||||
public String getPhone() {
|
||||
return phone;
|
||||
}
|
||||
|
||||
public void setCustomerAddress(String customerAddress) {
|
||||
this.customerAddress = customerAddress;
|
||||
public void setPhone(String phone) {
|
||||
this.phone = phone;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreatedAt() {
|
||||
@@ -109,22 +109,22 @@ public class Customer {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Customer customer = (Customer) o;
|
||||
return Objects.equals(id, customer.id);
|
||||
return Objects.equals(customerId, customer.customerId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
return Objects.hash(customerId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Customer{" +
|
||||
"id=" + id +
|
||||
", customerName='" + customerName + '\'' +
|
||||
", customerEmail='" + customerEmail + '\'' +
|
||||
", customerPhone='" + customerPhone + '\'' +
|
||||
", customerAddress='" + customerAddress + '\'' +
|
||||
"customerId=" + customerId +
|
||||
", firstName='" + firstName + '\'' +
|
||||
", lastName='" + lastName + '\'' +
|
||||
", email='" + email + '\'' +
|
||||
", phone='" + phone + '\'' +
|
||||
", createdAt=" + createdAt +
|
||||
", updatedAt=" + updatedAt +
|
||||
'}';
|
||||
|
||||
158
src/main/java/com/petshop/backend/entity/Employee.java
Normal file
158
src/main/java/com/petshop/backend/entity/Employee.java
Normal file
@@ -0,0 +1,158 @@
|
||||
package com.petshop.backend.entity;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import org.hibernate.annotations.CreationTimestamp;
|
||||
import org.hibernate.annotations.UpdateTimestamp;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name = "employee")
|
||||
public class Employee {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long employeeId;
|
||||
|
||||
@Column(nullable = false, length = 50)
|
||||
private String firstName;
|
||||
|
||||
@Column(nullable = false, length = 50)
|
||||
private String lastName;
|
||||
|
||||
@Column(nullable = false, length = 100)
|
||||
private String email;
|
||||
|
||||
@Column(nullable = false, length = 20)
|
||||
private String phone;
|
||||
|
||||
@Column(nullable = false, length = 50)
|
||||
private String role;
|
||||
|
||||
@Column(nullable = false)
|
||||
private Boolean isActive = true;
|
||||
|
||||
@CreationTimestamp
|
||||
@Column(name = "created_at", updatable = false)
|
||||
private LocalDateTime createdAt;
|
||||
|
||||
@UpdateTimestamp
|
||||
@Column(name = "updated_at")
|
||||
private LocalDateTime updatedAt;
|
||||
|
||||
public Employee() {
|
||||
}
|
||||
|
||||
public Employee(Long employeeId, String firstName, String lastName, String email, String phone, String role, Boolean isActive, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.employeeId = employeeId;
|
||||
this.firstName = firstName;
|
||||
this.lastName = lastName;
|
||||
this.email = email;
|
||||
this.phone = phone;
|
||||
this.role = role;
|
||||
this.isActive = isActive;
|
||||
this.createdAt = createdAt;
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
public Long getEmployeeId() {
|
||||
return employeeId;
|
||||
}
|
||||
|
||||
public void setEmployeeId(Long employeeId) {
|
||||
this.employeeId = employeeId;
|
||||
}
|
||||
|
||||
public String getFirstName() {
|
||||
return firstName;
|
||||
}
|
||||
|
||||
public void setFirstName(String firstName) {
|
||||
this.firstName = firstName;
|
||||
}
|
||||
|
||||
public String getLastName() {
|
||||
return lastName;
|
||||
}
|
||||
|
||||
public void setLastName(String lastName) {
|
||||
this.lastName = lastName;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getPhone() {
|
||||
return phone;
|
||||
}
|
||||
|
||||
public void setPhone(String phone) {
|
||||
this.phone = phone;
|
||||
}
|
||||
|
||||
public String getRole() {
|
||||
return role;
|
||||
}
|
||||
|
||||
public void setRole(String role) {
|
||||
this.role = role;
|
||||
}
|
||||
|
||||
public Boolean getIsActive() {
|
||||
return isActive;
|
||||
}
|
||||
|
||||
public void setIsActive(Boolean isActive) {
|
||||
this.isActive = isActive;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreatedAt() {
|
||||
return createdAt;
|
||||
}
|
||||
|
||||
public void setCreatedAt(LocalDateTime createdAt) {
|
||||
this.createdAt = createdAt;
|
||||
}
|
||||
|
||||
public LocalDateTime getUpdatedAt() {
|
||||
return updatedAt;
|
||||
}
|
||||
|
||||
public void setUpdatedAt(LocalDateTime updatedAt) {
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Employee employee = (Employee) o;
|
||||
return Objects.equals(employeeId, employee.employeeId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(employeeId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Employee{" +
|
||||
"employeeId=" + employeeId +
|
||||
", firstName='" + firstName + '\'' +
|
||||
", lastName='" + lastName + '\'' +
|
||||
", email='" + email + '\'' +
|
||||
", phone='" + phone + '\'' +
|
||||
", role='" + role + '\'' +
|
||||
", isActive=" + isActive +
|
||||
", createdAt=" + createdAt +
|
||||
", updatedAt=" + updatedAt +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
148
src/main/java/com/petshop/backend/entity/EmployeeStore.java
Normal file
148
src/main/java/com/petshop/backend/entity/EmployeeStore.java
Normal file
@@ -0,0 +1,148 @@
|
||||
package com.petshop.backend.entity;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import org.hibernate.annotations.CreationTimestamp;
|
||||
import org.hibernate.annotations.UpdateTimestamp;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name = "employeeStore")
|
||||
@IdClass(EmployeeStore.EmployeeStoreId.class)
|
||||
public class EmployeeStore {
|
||||
|
||||
@Id
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "employeeId", nullable = false)
|
||||
private Employee employee;
|
||||
|
||||
@Id
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "storeId", nullable = false)
|
||||
private StoreLocation store;
|
||||
|
||||
@CreationTimestamp
|
||||
@Column(name = "created_at", updatable = false)
|
||||
private LocalDateTime createdAt;
|
||||
|
||||
@UpdateTimestamp
|
||||
@Column(name = "updated_at")
|
||||
private LocalDateTime updatedAt;
|
||||
|
||||
public EmployeeStore() {
|
||||
}
|
||||
|
||||
public EmployeeStore(Employee employee, StoreLocation store, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.employee = employee;
|
||||
this.store = store;
|
||||
this.createdAt = createdAt;
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
public Employee getEmployee() {
|
||||
return employee;
|
||||
}
|
||||
|
||||
public void setEmployee(Employee employee) {
|
||||
this.employee = employee;
|
||||
}
|
||||
|
||||
public StoreLocation getStore() {
|
||||
return store;
|
||||
}
|
||||
|
||||
public void setStore(StoreLocation store) {
|
||||
this.store = store;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreatedAt() {
|
||||
return createdAt;
|
||||
}
|
||||
|
||||
public void setCreatedAt(LocalDateTime createdAt) {
|
||||
this.createdAt = createdAt;
|
||||
}
|
||||
|
||||
public LocalDateTime getUpdatedAt() {
|
||||
return updatedAt;
|
||||
}
|
||||
|
||||
public void setUpdatedAt(LocalDateTime updatedAt) {
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
EmployeeStore that = (EmployeeStore) o;
|
||||
return Objects.equals(employee, that.employee) && Objects.equals(store, that.store);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(employee, store);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "EmployeeStore{" +
|
||||
"employee=" + employee +
|
||||
", store=" + store +
|
||||
", createdAt=" + createdAt +
|
||||
", updatedAt=" + updatedAt +
|
||||
'}';
|
||||
}
|
||||
|
||||
public static class EmployeeStoreId implements Serializable {
|
||||
private Long employee;
|
||||
private Long store;
|
||||
|
||||
public EmployeeStoreId() {
|
||||
}
|
||||
|
||||
public EmployeeStoreId(Long employee, Long store) {
|
||||
this.employee = employee;
|
||||
this.store = store;
|
||||
}
|
||||
|
||||
public Long getEmployee() {
|
||||
return employee;
|
||||
}
|
||||
|
||||
public void setEmployee(Long employee) {
|
||||
this.employee = employee;
|
||||
}
|
||||
|
||||
public Long getStore() {
|
||||
return store;
|
||||
}
|
||||
|
||||
public void setStore(Long store) {
|
||||
this.store = store;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
EmployeeStoreId that = (EmployeeStoreId) o;
|
||||
return Objects.equals(employee, that.employee) && Objects.equals(store, that.store);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(employee, store);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "EmployeeStoreId{" +
|
||||
"employee=" + employee +
|
||||
", store=" + store +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,32 +8,20 @@ import java.time.LocalDateTime;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name = "inventory", uniqueConstraints = {
|
||||
@UniqueConstraint(name = "unique_product_store", columnNames = {"product_id", "store_id"})
|
||||
})
|
||||
@Table(name = "inventory")
|
||||
public class Inventory {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
private Long inventoryId;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "product_id", nullable = false)
|
||||
@JoinColumn(name = "prodId", nullable = false)
|
||||
private Product product;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "store_id", nullable = true)
|
||||
private Store store;
|
||||
|
||||
@Column(nullable = false)
|
||||
private Integer quantity = 0;
|
||||
|
||||
@Column(name = "reorder_level")
|
||||
private Integer reorderLevel = 10;
|
||||
|
||||
@Column(name = "last_restocked")
|
||||
private LocalDateTime lastRestocked;
|
||||
|
||||
@CreationTimestamp
|
||||
@Column(name = "created_at", updatable = false)
|
||||
private LocalDateTime createdAt;
|
||||
@@ -45,23 +33,20 @@ public class Inventory {
|
||||
public Inventory() {
|
||||
}
|
||||
|
||||
public Inventory(Long id, Product product, Store store, Integer quantity, Integer reorderLevel, LocalDateTime lastRestocked, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.id = id;
|
||||
public Inventory(Long inventoryId, Product product, Integer quantity, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.inventoryId = inventoryId;
|
||||
this.product = product;
|
||||
this.store = store;
|
||||
this.quantity = quantity;
|
||||
this.reorderLevel = reorderLevel;
|
||||
this.lastRestocked = lastRestocked;
|
||||
this.createdAt = createdAt;
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
public Long getInventoryId() {
|
||||
return inventoryId;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
public void setInventoryId(Long inventoryId) {
|
||||
this.inventoryId = inventoryId;
|
||||
}
|
||||
|
||||
public Product getProduct() {
|
||||
@@ -72,14 +57,6 @@ public class Inventory {
|
||||
this.product = product;
|
||||
}
|
||||
|
||||
public Store getStore() {
|
||||
return store;
|
||||
}
|
||||
|
||||
public void setStore(Store store) {
|
||||
this.store = store;
|
||||
}
|
||||
|
||||
public Integer getQuantity() {
|
||||
return quantity;
|
||||
}
|
||||
@@ -88,22 +65,6 @@ public class Inventory {
|
||||
this.quantity = quantity;
|
||||
}
|
||||
|
||||
public Integer getReorderLevel() {
|
||||
return reorderLevel;
|
||||
}
|
||||
|
||||
public void setReorderLevel(Integer reorderLevel) {
|
||||
this.reorderLevel = reorderLevel;
|
||||
}
|
||||
|
||||
public LocalDateTime getLastRestocked() {
|
||||
return lastRestocked;
|
||||
}
|
||||
|
||||
public void setLastRestocked(LocalDateTime lastRestocked) {
|
||||
this.lastRestocked = lastRestocked;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreatedAt() {
|
||||
return createdAt;
|
||||
}
|
||||
@@ -125,23 +86,20 @@ public class Inventory {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Inventory inventory = (Inventory) o;
|
||||
return Objects.equals(id, inventory.id);
|
||||
return Objects.equals(inventoryId, inventory.inventoryId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
return Objects.hash(inventoryId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Inventory{" +
|
||||
"id=" + id +
|
||||
"inventoryId=" + inventoryId +
|
||||
", product=" + product +
|
||||
", store=" + store +
|
||||
", quantity=" + quantity +
|
||||
", reorderLevel=" + reorderLevel +
|
||||
", lastRestocked=" + lastRestocked +
|
||||
", createdAt=" + createdAt +
|
||||
", updatedAt=" + updatedAt +
|
||||
'}';
|
||||
|
||||
@@ -9,30 +9,29 @@ import java.time.LocalDateTime;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name = "pets")
|
||||
@Table(name = "pet")
|
||||
public class Pet {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
private Long petId;
|
||||
|
||||
@Column(name = "pet_name", nullable = false, length = 100)
|
||||
@Column(nullable = false, length = 50)
|
||||
private String petName;
|
||||
|
||||
@Column(name = "pet_species", nullable = false, length = 50)
|
||||
@Column(nullable = false, length = 50)
|
||||
private String petSpecies;
|
||||
|
||||
@Column(name = "pet_breed", length = 50)
|
||||
@Column(nullable = false, length = 50)
|
||||
private String petBreed;
|
||||
|
||||
@Column(name = "pet_age")
|
||||
@Column(nullable = false)
|
||||
private Integer petAge;
|
||||
|
||||
@Enumerated(EnumType.STRING)
|
||||
@Column(name = "pet_status", nullable = false)
|
||||
private PetStatus petStatus = PetStatus.AVAILABLE;
|
||||
@Column(nullable = false, length = 20)
|
||||
private String petStatus;
|
||||
|
||||
@Column(name = "pet_price", precision = 10, scale = 2)
|
||||
@Column(nullable = false, precision = 10, scale = 2)
|
||||
private BigDecimal petPrice;
|
||||
|
||||
@CreationTimestamp
|
||||
@@ -43,15 +42,11 @@ public class Pet {
|
||||
@Column(name = "updated_at")
|
||||
private LocalDateTime updatedAt;
|
||||
|
||||
public enum PetStatus {
|
||||
AVAILABLE, ADOPTED, UNDER_CARE
|
||||
}
|
||||
|
||||
public Pet() {
|
||||
}
|
||||
|
||||
public Pet(Long id, String petName, String petSpecies, String petBreed, Integer petAge, PetStatus petStatus, BigDecimal petPrice, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.id = id;
|
||||
public Pet(Long petId, String petName, String petSpecies, String petBreed, Integer petAge, String petStatus, BigDecimal petPrice, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.petId = petId;
|
||||
this.petName = petName;
|
||||
this.petSpecies = petSpecies;
|
||||
this.petBreed = petBreed;
|
||||
@@ -62,12 +57,12 @@ public class Pet {
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
public Long getPetId() {
|
||||
return petId;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
public void setPetId(Long petId) {
|
||||
this.petId = petId;
|
||||
}
|
||||
|
||||
public String getPetName() {
|
||||
@@ -102,11 +97,11 @@ public class Pet {
|
||||
this.petAge = petAge;
|
||||
}
|
||||
|
||||
public PetStatus getPetStatus() {
|
||||
public String getPetStatus() {
|
||||
return petStatus;
|
||||
}
|
||||
|
||||
public void setPetStatus(PetStatus petStatus) {
|
||||
public void setPetStatus(String petStatus) {
|
||||
this.petStatus = petStatus;
|
||||
}
|
||||
|
||||
@@ -139,23 +134,23 @@ public class Pet {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Pet pet = (Pet) o;
|
||||
return Objects.equals(id, pet.id);
|
||||
return Objects.equals(petId, pet.petId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
return Objects.hash(petId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Pet{" +
|
||||
"id=" + id +
|
||||
"petId=" + petId +
|
||||
", petName='" + petName + '\'' +
|
||||
", petSpecies='" + petSpecies + '\'' +
|
||||
", petBreed='" + petBreed + '\'' +
|
||||
", petAge=" + petAge +
|
||||
", petStatus=" + petStatus +
|
||||
", petStatus='" + petStatus + '\'' +
|
||||
", petPrice=" + petPrice +
|
||||
", createdAt=" + createdAt +
|
||||
", updatedAt=" + updatedAt +
|
||||
|
||||
@@ -9,28 +9,25 @@ import java.time.LocalDateTime;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name = "products")
|
||||
@Table(name = "product")
|
||||
public class Product {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
private Long prodId;
|
||||
|
||||
@Column(name = "product_name", nullable = false, length = 100)
|
||||
private String productName;
|
||||
@Column(nullable = false, length = 100)
|
||||
private String prodName;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "category_id", nullable = false)
|
||||
@JoinColumn(name = "categoryId", nullable = false)
|
||||
private Category category;
|
||||
|
||||
@Column(name = "product_description", columnDefinition = "TEXT")
|
||||
private String productDescription;
|
||||
@Column(columnDefinition = "TEXT")
|
||||
private String prodDesc;
|
||||
|
||||
@Column(name = "product_price", nullable = false, precision = 10, scale = 2)
|
||||
private BigDecimal productPrice;
|
||||
|
||||
@Column(nullable = false)
|
||||
private Boolean active = true;
|
||||
@Column(nullable = false, precision = 10, scale = 2)
|
||||
private BigDecimal prodPrice;
|
||||
|
||||
@CreationTimestamp
|
||||
@Column(name = "created_at", updatable = false)
|
||||
@@ -43,31 +40,30 @@ public class Product {
|
||||
public Product() {
|
||||
}
|
||||
|
||||
public Product(Long id, String productName, Category category, String productDescription, BigDecimal productPrice, Boolean active, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.id = id;
|
||||
this.productName = productName;
|
||||
public Product(Long prodId, String prodName, Category category, String prodDesc, BigDecimal prodPrice, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.prodId = prodId;
|
||||
this.prodName = prodName;
|
||||
this.category = category;
|
||||
this.productDescription = productDescription;
|
||||
this.productPrice = productPrice;
|
||||
this.active = active;
|
||||
this.prodDesc = prodDesc;
|
||||
this.prodPrice = prodPrice;
|
||||
this.createdAt = createdAt;
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
public Long getProdId() {
|
||||
return prodId;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
public void setProdId(Long prodId) {
|
||||
this.prodId = prodId;
|
||||
}
|
||||
|
||||
public String getProductName() {
|
||||
return productName;
|
||||
public String getProdName() {
|
||||
return prodName;
|
||||
}
|
||||
|
||||
public void setProductName(String productName) {
|
||||
this.productName = productName;
|
||||
public void setProdName(String prodName) {
|
||||
this.prodName = prodName;
|
||||
}
|
||||
|
||||
public Category getCategory() {
|
||||
@@ -78,28 +74,20 @@ public class Product {
|
||||
this.category = category;
|
||||
}
|
||||
|
||||
public String getProductDescription() {
|
||||
return productDescription;
|
||||
public String getProdDesc() {
|
||||
return prodDesc;
|
||||
}
|
||||
|
||||
public void setProductDescription(String productDescription) {
|
||||
this.productDescription = productDescription;
|
||||
public void setProdDesc(String prodDesc) {
|
||||
this.prodDesc = prodDesc;
|
||||
}
|
||||
|
||||
public BigDecimal getProductPrice() {
|
||||
return productPrice;
|
||||
public BigDecimal getProdPrice() {
|
||||
return prodPrice;
|
||||
}
|
||||
|
||||
public void setProductPrice(BigDecimal productPrice) {
|
||||
this.productPrice = productPrice;
|
||||
}
|
||||
|
||||
public Boolean getActive() {
|
||||
return active;
|
||||
}
|
||||
|
||||
public void setActive(Boolean active) {
|
||||
this.active = active;
|
||||
public void setProdPrice(BigDecimal prodPrice) {
|
||||
this.prodPrice = prodPrice;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreatedAt() {
|
||||
@@ -123,23 +111,22 @@ public class Product {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Product product = (Product) o;
|
||||
return Objects.equals(id, product.id);
|
||||
return Objects.equals(prodId, product.prodId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
return Objects.hash(prodId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Product{" +
|
||||
"id=" + id +
|
||||
", productName='" + productName + '\'' +
|
||||
"prodId=" + prodId +
|
||||
", prodName='" + prodName + '\'' +
|
||||
", category=" + category +
|
||||
", productDescription='" + productDescription + '\'' +
|
||||
", productPrice=" + productPrice +
|
||||
", active=" + active +
|
||||
", prodDesc='" + prodDesc + '\'' +
|
||||
", prodPrice=" + prodPrice +
|
||||
", createdAt=" + createdAt +
|
||||
", updatedAt=" + updatedAt +
|
||||
'}';
|
||||
|
||||
@@ -10,28 +10,22 @@ import java.time.LocalDateTime;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name = "product_suppliers")
|
||||
@Table(name = "productSupplier")
|
||||
@IdClass(ProductSupplier.ProductSupplierId.class)
|
||||
public class ProductSupplier {
|
||||
|
||||
@Id
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "product_id", nullable = false)
|
||||
@JoinColumn(name = "prodId", nullable = false)
|
||||
private Product product;
|
||||
|
||||
@Id
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "supplier_id", nullable = false)
|
||||
@JoinColumn(name = "supId", nullable = false)
|
||||
private Supplier supplier;
|
||||
|
||||
@Column(name = "cost_price", nullable = false, precision = 10, scale = 2)
|
||||
private BigDecimal costPrice;
|
||||
|
||||
@Column(name = "lead_time_days")
|
||||
private Integer leadTimeDays;
|
||||
|
||||
@Column(name = "is_preferred")
|
||||
private Boolean isPreferred = false;
|
||||
@Column(nullable = false, precision = 10, scale = 2)
|
||||
private BigDecimal cost;
|
||||
|
||||
@CreationTimestamp
|
||||
@Column(name = "created_at", updatable = false)
|
||||
@@ -44,12 +38,10 @@ public class ProductSupplier {
|
||||
public ProductSupplier() {
|
||||
}
|
||||
|
||||
public ProductSupplier(Product product, Supplier supplier, BigDecimal costPrice, Integer leadTimeDays, Boolean isPreferred, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
public ProductSupplier(Product product, Supplier supplier, BigDecimal cost, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.product = product;
|
||||
this.supplier = supplier;
|
||||
this.costPrice = costPrice;
|
||||
this.leadTimeDays = leadTimeDays;
|
||||
this.isPreferred = isPreferred;
|
||||
this.cost = cost;
|
||||
this.createdAt = createdAt;
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
@@ -70,28 +62,12 @@ public class ProductSupplier {
|
||||
this.supplier = supplier;
|
||||
}
|
||||
|
||||
public BigDecimal getCostPrice() {
|
||||
return costPrice;
|
||||
public BigDecimal getCost() {
|
||||
return cost;
|
||||
}
|
||||
|
||||
public void setCostPrice(BigDecimal costPrice) {
|
||||
this.costPrice = costPrice;
|
||||
}
|
||||
|
||||
public Integer getLeadTimeDays() {
|
||||
return leadTimeDays;
|
||||
}
|
||||
|
||||
public void setLeadTimeDays(Integer leadTimeDays) {
|
||||
this.leadTimeDays = leadTimeDays;
|
||||
}
|
||||
|
||||
public Boolean getIsPreferred() {
|
||||
return isPreferred;
|
||||
}
|
||||
|
||||
public void setIsPreferred(Boolean isPreferred) {
|
||||
this.isPreferred = isPreferred;
|
||||
public void setCost(BigDecimal cost) {
|
||||
this.cost = cost;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreatedAt() {
|
||||
@@ -128,9 +104,7 @@ public class ProductSupplier {
|
||||
return "ProductSupplier{" +
|
||||
"product=" + product +
|
||||
", supplier=" + supplier +
|
||||
", costPrice=" + costPrice +
|
||||
", leadTimeDays=" + leadTimeDays +
|
||||
", isPreferred=" + isPreferred +
|
||||
", cost=" + cost +
|
||||
", createdAt=" + createdAt +
|
||||
", updatedAt=" + updatedAt +
|
||||
'}';
|
||||
|
||||
@@ -12,35 +12,22 @@ import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name = "purchase_orders")
|
||||
@Table(name = "purchaseOrder")
|
||||
public class PurchaseOrder {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
private Long purchaseOrderId;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "supplier_id", nullable = false)
|
||||
@JoinColumn(name = "supId", nullable = false)
|
||||
private Supplier supplier;
|
||||
|
||||
@Column(name = "order_date", nullable = false)
|
||||
@Column(nullable = false)
|
||||
private LocalDate orderDate;
|
||||
|
||||
@Column(name = "expected_delivery")
|
||||
private LocalDate expectedDelivery;
|
||||
|
||||
@Enumerated(EnumType.STRING)
|
||||
@Column(nullable = false)
|
||||
private OrderStatus status = OrderStatus.Pending;
|
||||
|
||||
@Column(name = "total_amount", nullable = false, precision = 10, scale = 2)
|
||||
private BigDecimal totalAmount;
|
||||
|
||||
@Column(columnDefinition = "TEXT")
|
||||
private String notes;
|
||||
|
||||
@OneToMany(mappedBy = "purchaseOrder", cascade = CascadeType.ALL)
|
||||
private List<PurchaseOrderItem> items = new ArrayList<>();
|
||||
@Column(nullable = false, length = 50)
|
||||
private String status;
|
||||
|
||||
@CreationTimestamp
|
||||
@Column(name = "created_at", updatable = false)
|
||||
@@ -50,32 +37,24 @@ public class PurchaseOrder {
|
||||
@Column(name = "updated_at")
|
||||
private LocalDateTime updatedAt;
|
||||
|
||||
public enum OrderStatus {
|
||||
Pending, Delivered, Cancelled
|
||||
}
|
||||
|
||||
public PurchaseOrder() {
|
||||
}
|
||||
|
||||
public PurchaseOrder(Long id, Supplier supplier, LocalDate orderDate, LocalDate expectedDelivery, OrderStatus status, BigDecimal totalAmount, String notes, List<PurchaseOrderItem> items, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.id = id;
|
||||
public PurchaseOrder(Long purchaseOrderId, Supplier supplier, LocalDate orderDate, String status, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.purchaseOrderId = purchaseOrderId;
|
||||
this.supplier = supplier;
|
||||
this.orderDate = orderDate;
|
||||
this.expectedDelivery = expectedDelivery;
|
||||
this.status = status;
|
||||
this.totalAmount = totalAmount;
|
||||
this.notes = notes;
|
||||
this.items = items;
|
||||
this.createdAt = createdAt;
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
public Long getPurchaseOrderId() {
|
||||
return purchaseOrderId;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
public void setPurchaseOrderId(Long purchaseOrderId) {
|
||||
this.purchaseOrderId = purchaseOrderId;
|
||||
}
|
||||
|
||||
public Supplier getSupplier() {
|
||||
@@ -94,46 +73,14 @@ public class PurchaseOrder {
|
||||
this.orderDate = orderDate;
|
||||
}
|
||||
|
||||
public LocalDate getExpectedDelivery() {
|
||||
return expectedDelivery;
|
||||
}
|
||||
|
||||
public void setExpectedDelivery(LocalDate expectedDelivery) {
|
||||
this.expectedDelivery = expectedDelivery;
|
||||
}
|
||||
|
||||
public OrderStatus getStatus() {
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(OrderStatus status) {
|
||||
public void setStatus(String status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public BigDecimal getTotalAmount() {
|
||||
return totalAmount;
|
||||
}
|
||||
|
||||
public void setTotalAmount(BigDecimal totalAmount) {
|
||||
this.totalAmount = totalAmount;
|
||||
}
|
||||
|
||||
public String getNotes() {
|
||||
return notes;
|
||||
}
|
||||
|
||||
public void setNotes(String notes) {
|
||||
this.notes = notes;
|
||||
}
|
||||
|
||||
public List<PurchaseOrderItem> getItems() {
|
||||
return items;
|
||||
}
|
||||
|
||||
public void setItems(List<PurchaseOrderItem> items) {
|
||||
this.items = items;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreatedAt() {
|
||||
return createdAt;
|
||||
}
|
||||
@@ -155,25 +102,21 @@ public class PurchaseOrder {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
PurchaseOrder that = (PurchaseOrder) o;
|
||||
return Objects.equals(id, that.id);
|
||||
return Objects.equals(purchaseOrderId, that.purchaseOrderId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
return Objects.hash(purchaseOrderId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "PurchaseOrder{" +
|
||||
"id=" + id +
|
||||
"purchaseOrderId=" + purchaseOrderId +
|
||||
", supplier=" + supplier +
|
||||
", orderDate=" + orderDate +
|
||||
", expectedDelivery=" + expectedDelivery +
|
||||
", status=" + status +
|
||||
", totalAmount=" + totalAmount +
|
||||
", notes='" + notes + '\'' +
|
||||
", items=" + items +
|
||||
", status='" + status + '\'' +
|
||||
", createdAt=" + createdAt +
|
||||
", updatedAt=" + updatedAt +
|
||||
'}';
|
||||
|
||||
@@ -1,148 +0,0 @@
|
||||
package com.petshop.backend.entity;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import org.hibernate.annotations.CreationTimestamp;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name = "refunds")
|
||||
public class Refund {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "sale_id", nullable = false)
|
||||
private Sale sale;
|
||||
|
||||
@Column(name = "refund_date", nullable = false)
|
||||
private LocalDateTime refundDate = LocalDateTime.now();
|
||||
|
||||
@Column(name = "refund_amount", nullable = false, precision = 10, scale = 2)
|
||||
private BigDecimal refundAmount;
|
||||
|
||||
@Column(name = "refund_reason", columnDefinition = "TEXT")
|
||||
private String refundReason;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "processed_by", nullable = false)
|
||||
private User processedBy;
|
||||
|
||||
@OneToMany(mappedBy = "refund", cascade = CascadeType.ALL)
|
||||
private List<RefundItem> items = new ArrayList<>();
|
||||
|
||||
@CreationTimestamp
|
||||
@Column(name = "created_at", updatable = false)
|
||||
private LocalDateTime createdAt;
|
||||
|
||||
public Refund() {
|
||||
}
|
||||
|
||||
public Refund(Long id, Sale sale, LocalDateTime refundDate, BigDecimal refundAmount, String refundReason, User processedBy, List<RefundItem> items, LocalDateTime createdAt) {
|
||||
this.id = id;
|
||||
this.sale = sale;
|
||||
this.refundDate = refundDate;
|
||||
this.refundAmount = refundAmount;
|
||||
this.refundReason = refundReason;
|
||||
this.processedBy = processedBy;
|
||||
this.items = items;
|
||||
this.createdAt = createdAt;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Sale getSale() {
|
||||
return sale;
|
||||
}
|
||||
|
||||
public void setSale(Sale sale) {
|
||||
this.sale = sale;
|
||||
}
|
||||
|
||||
public LocalDateTime getRefundDate() {
|
||||
return refundDate;
|
||||
}
|
||||
|
||||
public void setRefundDate(LocalDateTime refundDate) {
|
||||
this.refundDate = refundDate;
|
||||
}
|
||||
|
||||
public BigDecimal getRefundAmount() {
|
||||
return refundAmount;
|
||||
}
|
||||
|
||||
public void setRefundAmount(BigDecimal refundAmount) {
|
||||
this.refundAmount = refundAmount;
|
||||
}
|
||||
|
||||
public String getRefundReason() {
|
||||
return refundReason;
|
||||
}
|
||||
|
||||
public void setRefundReason(String refundReason) {
|
||||
this.refundReason = refundReason;
|
||||
}
|
||||
|
||||
public User getProcessedBy() {
|
||||
return processedBy;
|
||||
}
|
||||
|
||||
public void setProcessedBy(User processedBy) {
|
||||
this.processedBy = processedBy;
|
||||
}
|
||||
|
||||
public List<RefundItem> getItems() {
|
||||
return items;
|
||||
}
|
||||
|
||||
public void setItems(List<RefundItem> items) {
|
||||
this.items = items;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreatedAt() {
|
||||
return createdAt;
|
||||
}
|
||||
|
||||
public void setCreatedAt(LocalDateTime createdAt) {
|
||||
this.createdAt = createdAt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Refund refund = (Refund) o;
|
||||
return Objects.equals(id, refund.id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Refund{" +
|
||||
"id=" + id +
|
||||
", sale=" + sale +
|
||||
", refundDate=" + refundDate +
|
||||
", refundAmount=" + refundAmount +
|
||||
", refundReason='" + refundReason + '\'' +
|
||||
", processedBy=" + processedBy +
|
||||
", items=" + items +
|
||||
", createdAt=" + createdAt +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -1,104 +0,0 @@
|
||||
package com.petshop.backend.entity;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name = "refund_items")
|
||||
public class RefundItem {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "refund_id", nullable = false)
|
||||
private Refund refund;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "sale_item_id", nullable = false)
|
||||
private SaleItem saleItem;
|
||||
|
||||
@Column(nullable = false)
|
||||
private Integer quantity;
|
||||
|
||||
@Column(name = "refund_amount", nullable = false, precision = 10, scale = 2)
|
||||
private BigDecimal refundAmount;
|
||||
|
||||
public RefundItem() {
|
||||
}
|
||||
|
||||
public RefundItem(Long id, Refund refund, SaleItem saleItem, Integer quantity, BigDecimal refundAmount) {
|
||||
this.id = id;
|
||||
this.refund = refund;
|
||||
this.saleItem = saleItem;
|
||||
this.quantity = quantity;
|
||||
this.refundAmount = refundAmount;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Refund getRefund() {
|
||||
return refund;
|
||||
}
|
||||
|
||||
public void setRefund(Refund refund) {
|
||||
this.refund = refund;
|
||||
}
|
||||
|
||||
public SaleItem getSaleItem() {
|
||||
return saleItem;
|
||||
}
|
||||
|
||||
public void setSaleItem(SaleItem saleItem) {
|
||||
this.saleItem = saleItem;
|
||||
}
|
||||
|
||||
public Integer getQuantity() {
|
||||
return quantity;
|
||||
}
|
||||
|
||||
public void setQuantity(Integer quantity) {
|
||||
this.quantity = quantity;
|
||||
}
|
||||
|
||||
public BigDecimal getRefundAmount() {
|
||||
return refundAmount;
|
||||
}
|
||||
|
||||
public void setRefundAmount(BigDecimal refundAmount) {
|
||||
this.refundAmount = refundAmount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
RefundItem that = (RefundItem) o;
|
||||
return Objects.equals(id, that.id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "RefundItem{" +
|
||||
"id=" + id +
|
||||
", refund=" + refund +
|
||||
", saleItem=" + saleItem +
|
||||
", quantity=" + quantity +
|
||||
", refundAmount=" + refundAmount +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -10,42 +10,36 @@ import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name = "sales")
|
||||
@Table(name = "sale")
|
||||
public class Sale {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
private Long saleId;
|
||||
|
||||
@Column(name = "sale_date", nullable = false)
|
||||
@Column(nullable = false)
|
||||
private LocalDateTime saleDate = LocalDateTime.now();
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "employee_id", nullable = false)
|
||||
private User employee;
|
||||
@JoinColumn(name = "employeeId", nullable = false)
|
||||
private Employee employee;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "customer_id")
|
||||
private Customer customer;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "store_id")
|
||||
private Store store;
|
||||
@JoinColumn(name = "storeId", nullable = false)
|
||||
private StoreLocation store;
|
||||
|
||||
@Column(nullable = false, precision = 10, scale = 2)
|
||||
private BigDecimal subtotal;
|
||||
private BigDecimal totalAmount;
|
||||
|
||||
@Column(nullable = false, precision = 10, scale = 2)
|
||||
private BigDecimal tax = BigDecimal.ZERO;
|
||||
|
||||
@Column(nullable = false, precision = 10, scale = 2)
|
||||
private BigDecimal total;
|
||||
|
||||
@Column(name = "payment_method", length = 50)
|
||||
@Column(nullable = false, length = 50)
|
||||
private String paymentMethod;
|
||||
|
||||
@Column(columnDefinition = "TEXT")
|
||||
private String notes;
|
||||
@Column(nullable = false)
|
||||
private Boolean isRefund = false;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "originalSaleId")
|
||||
private Sale originalSale;
|
||||
|
||||
@OneToMany(mappedBy = "sale", cascade = CascadeType.ALL)
|
||||
private List<SaleItem> items = new ArrayList<>();
|
||||
@@ -57,27 +51,25 @@ public class Sale {
|
||||
public Sale() {
|
||||
}
|
||||
|
||||
public Sale(Long id, LocalDateTime saleDate, User employee, Customer customer, Store store, BigDecimal subtotal, BigDecimal tax, BigDecimal total, String paymentMethod, String notes, List<SaleItem> items, LocalDateTime createdAt) {
|
||||
this.id = id;
|
||||
public Sale(Long saleId, LocalDateTime saleDate, Employee employee, StoreLocation store, BigDecimal totalAmount, String paymentMethod, Boolean isRefund, Sale originalSale, List<SaleItem> items, LocalDateTime createdAt) {
|
||||
this.saleId = saleId;
|
||||
this.saleDate = saleDate;
|
||||
this.employee = employee;
|
||||
this.customer = customer;
|
||||
this.store = store;
|
||||
this.subtotal = subtotal;
|
||||
this.tax = tax;
|
||||
this.total = total;
|
||||
this.totalAmount = totalAmount;
|
||||
this.paymentMethod = paymentMethod;
|
||||
this.notes = notes;
|
||||
this.isRefund = isRefund;
|
||||
this.originalSale = originalSale;
|
||||
this.items = items;
|
||||
this.createdAt = createdAt;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
public Long getSaleId() {
|
||||
return saleId;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
public void setSaleId(Long saleId) {
|
||||
this.saleId = saleId;
|
||||
}
|
||||
|
||||
public LocalDateTime getSaleDate() {
|
||||
@@ -88,52 +80,28 @@ public class Sale {
|
||||
this.saleDate = saleDate;
|
||||
}
|
||||
|
||||
public User getEmployee() {
|
||||
public Employee getEmployee() {
|
||||
return employee;
|
||||
}
|
||||
|
||||
public void setEmployee(User employee) {
|
||||
public void setEmployee(Employee employee) {
|
||||
this.employee = employee;
|
||||
}
|
||||
|
||||
public Customer getCustomer() {
|
||||
return customer;
|
||||
}
|
||||
|
||||
public void setCustomer(Customer customer) {
|
||||
this.customer = customer;
|
||||
}
|
||||
|
||||
public Store getStore() {
|
||||
public StoreLocation getStore() {
|
||||
return store;
|
||||
}
|
||||
|
||||
public void setStore(Store store) {
|
||||
public void setStore(StoreLocation store) {
|
||||
this.store = store;
|
||||
}
|
||||
|
||||
public BigDecimal getSubtotal() {
|
||||
return subtotal;
|
||||
public BigDecimal getTotalAmount() {
|
||||
return totalAmount;
|
||||
}
|
||||
|
||||
public void setSubtotal(BigDecimal subtotal) {
|
||||
this.subtotal = subtotal;
|
||||
}
|
||||
|
||||
public BigDecimal getTax() {
|
||||
return tax;
|
||||
}
|
||||
|
||||
public void setTax(BigDecimal tax) {
|
||||
this.tax = tax;
|
||||
}
|
||||
|
||||
public BigDecimal getTotal() {
|
||||
return total;
|
||||
}
|
||||
|
||||
public void setTotal(BigDecimal total) {
|
||||
this.total = total;
|
||||
public void setTotalAmount(BigDecimal totalAmount) {
|
||||
this.totalAmount = totalAmount;
|
||||
}
|
||||
|
||||
public String getPaymentMethod() {
|
||||
@@ -144,12 +112,20 @@ public class Sale {
|
||||
this.paymentMethod = paymentMethod;
|
||||
}
|
||||
|
||||
public String getNotes() {
|
||||
return notes;
|
||||
public Boolean getIsRefund() {
|
||||
return isRefund;
|
||||
}
|
||||
|
||||
public void setNotes(String notes) {
|
||||
this.notes = notes;
|
||||
public void setIsRefund(Boolean isRefund) {
|
||||
this.isRefund = isRefund;
|
||||
}
|
||||
|
||||
public Sale getOriginalSale() {
|
||||
return originalSale;
|
||||
}
|
||||
|
||||
public void setOriginalSale(Sale originalSale) {
|
||||
this.originalSale = originalSale;
|
||||
}
|
||||
|
||||
public List<SaleItem> getItems() {
|
||||
@@ -173,27 +149,25 @@ public class Sale {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Sale sale = (Sale) o;
|
||||
return Objects.equals(id, sale.id);
|
||||
return Objects.equals(saleId, sale.saleId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
return Objects.hash(saleId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Sale{" +
|
||||
"id=" + id +
|
||||
"saleId=" + saleId +
|
||||
", saleDate=" + saleDate +
|
||||
", employee=" + employee +
|
||||
", customer=" + customer +
|
||||
", store=" + store +
|
||||
", subtotal=" + subtotal +
|
||||
", tax=" + tax +
|
||||
", total=" + total +
|
||||
", totalAmount=" + totalAmount +
|
||||
", paymentMethod='" + paymentMethod + '\'' +
|
||||
", notes='" + notes + '\'' +
|
||||
", isRefund=" + isRefund +
|
||||
", originalSale=" + originalSale +
|
||||
", items=" + items +
|
||||
", createdAt=" + createdAt +
|
||||
'}';
|
||||
|
||||
@@ -6,48 +6,44 @@ import java.math.BigDecimal;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name = "sale_items")
|
||||
@Table(name = "saleItem")
|
||||
public class SaleItem {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
private Long saleItemId;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "sale_id", nullable = false)
|
||||
@JoinColumn(name = "saleId", nullable = false)
|
||||
private Sale sale;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "product_id", nullable = false)
|
||||
@JoinColumn(name = "prodId", nullable = false)
|
||||
private Product product;
|
||||
|
||||
@Column(nullable = false)
|
||||
private Integer quantity;
|
||||
|
||||
@Column(name = "unit_price", nullable = false, precision = 10, scale = 2)
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
@Column(nullable = false, precision = 10, scale = 2)
|
||||
private BigDecimal subtotal;
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
public SaleItem() {
|
||||
}
|
||||
|
||||
public SaleItem(Long id, Sale sale, Product product, Integer quantity, BigDecimal unitPrice, BigDecimal subtotal) {
|
||||
this.id = id;
|
||||
public SaleItem(Long saleItemId, Sale sale, Product product, Integer quantity, BigDecimal unitPrice) {
|
||||
this.saleItemId = saleItemId;
|
||||
this.sale = sale;
|
||||
this.product = product;
|
||||
this.quantity = quantity;
|
||||
this.unitPrice = unitPrice;
|
||||
this.subtotal = subtotal;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
public Long getSaleItemId() {
|
||||
return saleItemId;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
public void setSaleItemId(Long saleItemId) {
|
||||
this.saleItemId = saleItemId;
|
||||
}
|
||||
|
||||
public Sale getSale() {
|
||||
@@ -82,36 +78,27 @@ public class SaleItem {
|
||||
this.unitPrice = unitPrice;
|
||||
}
|
||||
|
||||
public BigDecimal getSubtotal() {
|
||||
return subtotal;
|
||||
}
|
||||
|
||||
public void setSubtotal(BigDecimal subtotal) {
|
||||
this.subtotal = subtotal;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
SaleItem saleItem = (SaleItem) o;
|
||||
return Objects.equals(id, saleItem.id);
|
||||
return Objects.equals(saleItemId, saleItem.saleItemId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
return Objects.hash(saleItemId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SaleItem{" +
|
||||
"id=" + id +
|
||||
"saleItemId=" + saleItemId +
|
||||
", sale=" + sale +
|
||||
", product=" + product +
|
||||
", quantity=" + quantity +
|
||||
", unitPrice=" + unitPrice +
|
||||
", subtotal=" + subtotal +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,27 +9,24 @@ import java.time.LocalDateTime;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name = "services")
|
||||
@Table(name = "service")
|
||||
public class Service {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
private Long serviceId;
|
||||
|
||||
@Column(name = "service_name", nullable = false, length = 100)
|
||||
@Column(nullable = false, length = 100)
|
||||
private String serviceName;
|
||||
|
||||
@Column(name = "service_description", columnDefinition = "TEXT")
|
||||
private String serviceDescription;
|
||||
@Column(columnDefinition = "TEXT")
|
||||
private String serviceDesc;
|
||||
|
||||
@Column(name = "service_price", nullable = false, precision = 10, scale = 2)
|
||||
@Column(nullable = false, precision = 10, scale = 2)
|
||||
private BigDecimal servicePrice;
|
||||
|
||||
@Column(name = "service_duration_minutes")
|
||||
private Integer serviceDurationMinutes;
|
||||
|
||||
@Column(nullable = false)
|
||||
private Boolean active = true;
|
||||
private Integer serviceDuration;
|
||||
|
||||
@CreationTimestamp
|
||||
@Column(name = "created_at", updatable = false)
|
||||
@@ -42,23 +39,22 @@ public class Service {
|
||||
public Service() {
|
||||
}
|
||||
|
||||
public Service(Long id, String serviceName, String serviceDescription, BigDecimal servicePrice, Integer serviceDurationMinutes, Boolean active, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.id = id;
|
||||
public Service(Long serviceId, String serviceName, String serviceDesc, BigDecimal servicePrice, Integer serviceDuration, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.serviceId = serviceId;
|
||||
this.serviceName = serviceName;
|
||||
this.serviceDescription = serviceDescription;
|
||||
this.serviceDesc = serviceDesc;
|
||||
this.servicePrice = servicePrice;
|
||||
this.serviceDurationMinutes = serviceDurationMinutes;
|
||||
this.active = active;
|
||||
this.serviceDuration = serviceDuration;
|
||||
this.createdAt = createdAt;
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
public Long getServiceId() {
|
||||
return serviceId;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
public void setServiceId(Long serviceId) {
|
||||
this.serviceId = serviceId;
|
||||
}
|
||||
|
||||
public String getServiceName() {
|
||||
@@ -69,12 +65,12 @@ public class Service {
|
||||
this.serviceName = serviceName;
|
||||
}
|
||||
|
||||
public String getServiceDescription() {
|
||||
return serviceDescription;
|
||||
public String getServiceDesc() {
|
||||
return serviceDesc;
|
||||
}
|
||||
|
||||
public void setServiceDescription(String serviceDescription) {
|
||||
this.serviceDescription = serviceDescription;
|
||||
public void setServiceDesc(String serviceDesc) {
|
||||
this.serviceDesc = serviceDesc;
|
||||
}
|
||||
|
||||
public BigDecimal getServicePrice() {
|
||||
@@ -85,20 +81,12 @@ public class Service {
|
||||
this.servicePrice = servicePrice;
|
||||
}
|
||||
|
||||
public Integer getServiceDurationMinutes() {
|
||||
return serviceDurationMinutes;
|
||||
public Integer getServiceDuration() {
|
||||
return serviceDuration;
|
||||
}
|
||||
|
||||
public void setServiceDurationMinutes(Integer serviceDurationMinutes) {
|
||||
this.serviceDurationMinutes = serviceDurationMinutes;
|
||||
}
|
||||
|
||||
public Boolean getActive() {
|
||||
return active;
|
||||
}
|
||||
|
||||
public void setActive(Boolean active) {
|
||||
this.active = active;
|
||||
public void setServiceDuration(Integer serviceDuration) {
|
||||
this.serviceDuration = serviceDuration;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreatedAt() {
|
||||
@@ -122,23 +110,22 @@ public class Service {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Service service = (Service) o;
|
||||
return Objects.equals(id, service.id);
|
||||
return Objects.equals(serviceId, service.serviceId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
return Objects.hash(serviceId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Service{" +
|
||||
"id=" + id +
|
||||
"serviceId=" + serviceId +
|
||||
", serviceName='" + serviceName + '\'' +
|
||||
", serviceDescription='" + serviceDescription + '\'' +
|
||||
", serviceDesc='" + serviceDesc + '\'' +
|
||||
", servicePrice=" + servicePrice +
|
||||
", serviceDurationMinutes=" + serviceDurationMinutes +
|
||||
", active=" + active +
|
||||
", serviceDuration=" + serviceDuration +
|
||||
", createdAt=" + createdAt +
|
||||
", updatedAt=" + updatedAt +
|
||||
'}';
|
||||
|
||||
132
src/main/java/com/petshop/backend/entity/StoreLocation.java
Normal file
132
src/main/java/com/petshop/backend/entity/StoreLocation.java
Normal file
@@ -0,0 +1,132 @@
|
||||
package com.petshop.backend.entity;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import org.hibernate.annotations.CreationTimestamp;
|
||||
import org.hibernate.annotations.UpdateTimestamp;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name = "storeLocation")
|
||||
public class StoreLocation {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long storeId;
|
||||
|
||||
@Column(nullable = false, length = 100)
|
||||
private String storeName;
|
||||
|
||||
@Column(nullable = false, length = 255)
|
||||
private String address;
|
||||
|
||||
@Column(nullable = false, length = 20)
|
||||
private String phone;
|
||||
|
||||
@Column(nullable = false, length = 100)
|
||||
private String email;
|
||||
|
||||
@CreationTimestamp
|
||||
@Column(name = "created_at", updatable = false)
|
||||
private LocalDateTime createdAt;
|
||||
|
||||
@UpdateTimestamp
|
||||
@Column(name = "updated_at")
|
||||
private LocalDateTime updatedAt;
|
||||
|
||||
public StoreLocation() {
|
||||
}
|
||||
|
||||
public StoreLocation(Long storeId, String storeName, String address, String phone, String email, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.storeId = storeId;
|
||||
this.storeName = storeName;
|
||||
this.address = address;
|
||||
this.phone = phone;
|
||||
this.email = email;
|
||||
this.createdAt = createdAt;
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
public Long getStoreId() {
|
||||
return storeId;
|
||||
}
|
||||
|
||||
public void setStoreId(Long storeId) {
|
||||
this.storeId = storeId;
|
||||
}
|
||||
|
||||
public String getStoreName() {
|
||||
return storeName;
|
||||
}
|
||||
|
||||
public void setStoreName(String storeName) {
|
||||
this.storeName = storeName;
|
||||
}
|
||||
|
||||
public String getAddress() {
|
||||
return address;
|
||||
}
|
||||
|
||||
public void setAddress(String address) {
|
||||
this.address = address;
|
||||
}
|
||||
|
||||
public String getPhone() {
|
||||
return phone;
|
||||
}
|
||||
|
||||
public void setPhone(String phone) {
|
||||
this.phone = phone;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreatedAt() {
|
||||
return createdAt;
|
||||
}
|
||||
|
||||
public void setCreatedAt(LocalDateTime createdAt) {
|
||||
this.createdAt = createdAt;
|
||||
}
|
||||
|
||||
public LocalDateTime getUpdatedAt() {
|
||||
return updatedAt;
|
||||
}
|
||||
|
||||
public void setUpdatedAt(LocalDateTime updatedAt) {
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
StoreLocation that = (StoreLocation) o;
|
||||
return Objects.equals(storeId, that.storeId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(storeId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "StoreLocation{" +
|
||||
"storeId=" + storeId +
|
||||
", storeName='" + storeName + '\'' +
|
||||
", address='" + address + '\'' +
|
||||
", phone='" + phone + '\'' +
|
||||
", email='" + email + '\'' +
|
||||
", createdAt=" + createdAt +
|
||||
", updatedAt=" + updatedAt +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -8,30 +8,27 @@ import java.time.LocalDateTime;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name = "suppliers")
|
||||
@Table(name = "supplier")
|
||||
public class Supplier {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
private Long supId;
|
||||
|
||||
@Column(name = "supplier_name", nullable = false, length = 100)
|
||||
private String supplierName;
|
||||
@Column(nullable = false, length = 100)
|
||||
private String supCompany;
|
||||
|
||||
@Column(name = "supplier_contact", length = 100)
|
||||
private String supplierContact;
|
||||
@Column(nullable = false, length = 50)
|
||||
private String supContactFirstName;
|
||||
|
||||
@Column(name = "supplier_email", length = 100)
|
||||
private String supplierEmail;
|
||||
@Column(nullable = false, length = 50)
|
||||
private String supContactLastName;
|
||||
|
||||
@Column(name = "supplier_phone", length = 20)
|
||||
private String supplierPhone;
|
||||
@Column(nullable = false, length = 100)
|
||||
private String supEmail;
|
||||
|
||||
@Column(name = "supplier_address", columnDefinition = "TEXT")
|
||||
private String supplierAddress;
|
||||
|
||||
@Column(nullable = false)
|
||||
private Boolean active = true;
|
||||
@Column(nullable = false, length = 20)
|
||||
private String supPhone;
|
||||
|
||||
@CreationTimestamp
|
||||
@Column(name = "created_at", updatable = false)
|
||||
@@ -44,72 +41,63 @@ public class Supplier {
|
||||
public Supplier() {
|
||||
}
|
||||
|
||||
public Supplier(Long id, String supplierName, String supplierContact, String supplierEmail, String supplierPhone, String supplierAddress, Boolean active, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.id = id;
|
||||
this.supplierName = supplierName;
|
||||
this.supplierContact = supplierContact;
|
||||
this.supplierEmail = supplierEmail;
|
||||
this.supplierPhone = supplierPhone;
|
||||
this.supplierAddress = supplierAddress;
|
||||
this.active = active;
|
||||
public Supplier(Long supId, String supCompany, String supContactFirstName, String supContactLastName, String supEmail, String supPhone, LocalDateTime createdAt, LocalDateTime updatedAt) {
|
||||
this.supId = supId;
|
||||
this.supCompany = supCompany;
|
||||
this.supContactFirstName = supContactFirstName;
|
||||
this.supContactLastName = supContactLastName;
|
||||
this.supEmail = supEmail;
|
||||
this.supPhone = supPhone;
|
||||
this.createdAt = createdAt;
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
public Long getSupId() {
|
||||
return supId;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
public void setSupId(Long supId) {
|
||||
this.supId = supId;
|
||||
}
|
||||
|
||||
public String getSupplierName() {
|
||||
return supplierName;
|
||||
public String getSupCompany() {
|
||||
return supCompany;
|
||||
}
|
||||
|
||||
public void setSupplierName(String supplierName) {
|
||||
this.supplierName = supplierName;
|
||||
public void setSupCompany(String supCompany) {
|
||||
this.supCompany = supCompany;
|
||||
}
|
||||
|
||||
public String getSupplierContact() {
|
||||
return supplierContact;
|
||||
public String getSupContactFirstName() {
|
||||
return supContactFirstName;
|
||||
}
|
||||
|
||||
public void setSupplierContact(String supplierContact) {
|
||||
this.supplierContact = supplierContact;
|
||||
public void setSupContactFirstName(String supContactFirstName) {
|
||||
this.supContactFirstName = supContactFirstName;
|
||||
}
|
||||
|
||||
public String getSupplierEmail() {
|
||||
return supplierEmail;
|
||||
public String getSupContactLastName() {
|
||||
return supContactLastName;
|
||||
}
|
||||
|
||||
public void setSupplierEmail(String supplierEmail) {
|
||||
this.supplierEmail = supplierEmail;
|
||||
public void setSupContactLastName(String supContactLastName) {
|
||||
this.supContactLastName = supContactLastName;
|
||||
}
|
||||
|
||||
public String getSupplierPhone() {
|
||||
return supplierPhone;
|
||||
public String getSupEmail() {
|
||||
return supEmail;
|
||||
}
|
||||
|
||||
public void setSupplierPhone(String supplierPhone) {
|
||||
this.supplierPhone = supplierPhone;
|
||||
public void setSupEmail(String supEmail) {
|
||||
this.supEmail = supEmail;
|
||||
}
|
||||
|
||||
public String getSupplierAddress() {
|
||||
return supplierAddress;
|
||||
public String getSupPhone() {
|
||||
return supPhone;
|
||||
}
|
||||
|
||||
public void setSupplierAddress(String supplierAddress) {
|
||||
this.supplierAddress = supplierAddress;
|
||||
}
|
||||
|
||||
public Boolean getActive() {
|
||||
return active;
|
||||
}
|
||||
|
||||
public void setActive(Boolean active) {
|
||||
this.active = active;
|
||||
public void setSupPhone(String supPhone) {
|
||||
this.supPhone = supPhone;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreatedAt() {
|
||||
@@ -133,24 +121,23 @@ public class Supplier {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Supplier supplier = (Supplier) o;
|
||||
return Objects.equals(id, supplier.id);
|
||||
return Objects.equals(supId, supplier.supId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id);
|
||||
return Objects.hash(supId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Supplier{" +
|
||||
"id=" + id +
|
||||
", supplierName='" + supplierName + '\'' +
|
||||
", supplierContact='" + supplierContact + '\'' +
|
||||
", supplierEmail='" + supplierEmail + '\'' +
|
||||
", supplierPhone='" + supplierPhone + '\'' +
|
||||
", supplierAddress='" + supplierAddress + '\'' +
|
||||
", active=" + active +
|
||||
"supId=" + supId +
|
||||
", supCompany='" + supCompany + '\'' +
|
||||
", supContactFirstName='" + supContactFirstName + '\'' +
|
||||
", supContactLastName='" + supContactLastName + '\'' +
|
||||
", supEmail='" + supEmail + '\'' +
|
||||
", supPhone='" + supPhone + '\'' +
|
||||
", createdAt=" + createdAt +
|
||||
", updatedAt=" + updatedAt +
|
||||
'}';
|
||||
|
||||
@@ -43,7 +43,7 @@ public class User {
|
||||
private LocalDateTime updatedAt;
|
||||
|
||||
public enum Role {
|
||||
STAFF, ADMIN, CUSTOMER
|
||||
STAFF, ADMIN
|
||||
}
|
||||
|
||||
public User() {
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
package com.petshop.backend.repository;
|
||||
|
||||
import com.petshop.backend.entity.Refund;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface RefundRepository extends JpaRepository<Refund, Long> {
|
||||
}
|
||||
@@ -36,7 +36,7 @@ public class SecurityConfig {
|
||||
http
|
||||
.csrf(AbstractHttpConfigurer::disable)
|
||||
.authorizeHttpRequests(auth -> auth
|
||||
.requestMatchers("/api/v1/auth/login", "/api/v1/auth/register").permitAll()
|
||||
.requestMatchers("/api/v1/auth/login").permitAll()
|
||||
.requestMatchers("/swagger-ui/**", "/v3/api-docs/**", "/swagger-ui.html").permitAll()
|
||||
.requestMatchers(HttpMethod.GET, "/api/v1/dropdowns/suppliers").hasRole("ADMIN")
|
||||
.requestMatchers("/api/v1/inventory/**").hasRole("ADMIN")
|
||||
|
||||
@@ -1,121 +0,0 @@
|
||||
package com.petshop.backend.service;
|
||||
|
||||
import com.petshop.backend.dto.refund.RefundRequest;
|
||||
import com.petshop.backend.dto.refund.RefundResponse;
|
||||
import com.petshop.backend.entity.*;
|
||||
import com.petshop.backend.exception.BusinessException;
|
||||
import com.petshop.backend.exception.ResourceNotFoundException;
|
||||
import com.petshop.backend.repository.*;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class RefundService {
|
||||
|
||||
private final RefundRepository refundRepository;
|
||||
private final SaleRepository saleRepository;
|
||||
private final SaleItemRepository saleItemRepository;
|
||||
private final InventoryRepository inventoryRepository;
|
||||
private final UserRepository userRepository;
|
||||
|
||||
public RefundService(RefundRepository refundRepository, SaleRepository saleRepository, SaleItemRepository saleItemRepository, InventoryRepository inventoryRepository, UserRepository userRepository) {
|
||||
this.refundRepository = refundRepository;
|
||||
this.saleRepository = saleRepository;
|
||||
this.saleItemRepository = saleItemRepository;
|
||||
this.inventoryRepository = inventoryRepository;
|
||||
this.userRepository = userRepository;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public RefundResponse createRefund(Long saleId, RefundRequest request) {
|
||||
String username = SecurityContextHolder.getContext().getAuthentication().getName();
|
||||
User processedBy = userRepository.findByUsername(username)
|
||||
.orElseThrow(() -> new ResourceNotFoundException("User not found: " + username));
|
||||
|
||||
Sale sale = saleRepository.findById(saleId)
|
||||
.orElseThrow(() -> new ResourceNotFoundException("Sale not found with id: " + saleId));
|
||||
|
||||
Refund refund = new Refund();
|
||||
refund.setSale(sale);
|
||||
refund.setRefundDate(LocalDateTime.now());
|
||||
refund.setRefundReason(request.getRefundReason());
|
||||
refund.setProcessedBy(processedBy);
|
||||
|
||||
BigDecimal totalRefundAmount = BigDecimal.ZERO;
|
||||
List<RefundItem> refundItems = new ArrayList<>();
|
||||
|
||||
for (var itemRequest : request.getItems()) {
|
||||
SaleItem saleItem = saleItemRepository.findById(itemRequest.getSaleItemId())
|
||||
.orElseThrow(() -> new ResourceNotFoundException("Sale item not found with id: " + itemRequest.getSaleItemId()));
|
||||
|
||||
if (!saleItem.getSale().getId().equals(saleId)) {
|
||||
throw new BusinessException("Sale item " + itemRequest.getSaleItemId() + " does not belong to sale " + saleId);
|
||||
}
|
||||
|
||||
if (itemRequest.getQuantity() > saleItem.getQuantity()) {
|
||||
throw new BusinessException("Refund quantity (" + itemRequest.getQuantity() +
|
||||
") exceeds original sale quantity (" + saleItem.getQuantity() + ") for product: " + saleItem.getProduct().getProductName());
|
||||
}
|
||||
|
||||
Inventory inventory = inventoryRepository.findByProductIdAndStoreId(
|
||||
saleItem.getProduct().getId(),
|
||||
sale.getStore().getId())
|
||||
.orElseThrow(() -> new ResourceNotFoundException("Inventory not found for product " +
|
||||
saleItem.getProduct().getId() + " at store " + sale.getStore().getId()));
|
||||
|
||||
inventory.setQuantity(inventory.getQuantity() + itemRequest.getQuantity());
|
||||
inventory.setLastRestocked(LocalDateTime.now());
|
||||
inventoryRepository.save(inventory);
|
||||
|
||||
BigDecimal itemRefundAmount = saleItem.getUnitPrice().multiply(BigDecimal.valueOf(itemRequest.getQuantity()));
|
||||
|
||||
RefundItem refundItem = new RefundItem();
|
||||
refundItem.setRefund(refund);
|
||||
refundItem.setSaleItem(saleItem);
|
||||
refundItem.setQuantity(itemRequest.getQuantity());
|
||||
refundItem.setRefundAmount(itemRefundAmount);
|
||||
|
||||
refundItems.add(refundItem);
|
||||
totalRefundAmount = totalRefundAmount.add(itemRefundAmount);
|
||||
}
|
||||
|
||||
refund.setRefundAmount(totalRefundAmount);
|
||||
refund.setItems(refundItems);
|
||||
|
||||
Refund savedRefund = refundRepository.save(refund);
|
||||
return mapToResponse(savedRefund);
|
||||
}
|
||||
|
||||
private RefundResponse mapToResponse(Refund refund) {
|
||||
RefundResponse response = new RefundResponse();
|
||||
response.setId(refund.getId());
|
||||
response.setSaleId(refund.getSale().getId());
|
||||
response.setRefundDate(refund.getRefundDate());
|
||||
response.setRefundAmount(refund.getRefundAmount());
|
||||
response.setRefundReason(refund.getRefundReason());
|
||||
response.setProcessedBy(refund.getProcessedBy().getId());
|
||||
response.setProcessedByName(refund.getProcessedBy().getFullName());
|
||||
response.setCreatedAt(refund.getCreatedAt());
|
||||
|
||||
List<RefundResponse.RefundItemResponse> itemResponses = new ArrayList<>();
|
||||
for (RefundItem item : refund.getItems()) {
|
||||
RefundResponse.RefundItemResponse itemResponse = new RefundResponse.RefundItemResponse();
|
||||
itemResponse.setId(item.getId());
|
||||
itemResponse.setSaleItemId(item.getSaleItem().getId());
|
||||
itemResponse.setProductId(item.getSaleItem().getProduct().getId());
|
||||
itemResponse.setProductName(item.getSaleItem().getProduct().getProductName());
|
||||
itemResponse.setQuantity(item.getQuantity());
|
||||
itemResponse.setRefundAmount(item.getRefundAmount());
|
||||
itemResponses.add(itemResponse);
|
||||
}
|
||||
response.setItems(itemResponses);
|
||||
|
||||
return response;
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,7 @@ spring:
|
||||
|
||||
jpa:
|
||||
hibernate:
|
||||
ddl-auto: update
|
||||
ddl-auto: validate
|
||||
show-sql: ${JPA_SHOW_SQL:false}
|
||||
properties:
|
||||
hibernate:
|
||||
|
||||
Reference in New Issue
Block a user