Add UI-ready DTOs with joined fields
This commit is contained in:
@@ -0,0 +1,26 @@
|
|||||||
|
package com.petshop.backend.dto.adoption;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import jakarta.validation.constraints.Positive;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class AdoptionRequest {
|
||||||
|
@NotNull(message = "Pet ID is required")
|
||||||
|
private Long petId;
|
||||||
|
|
||||||
|
@NotNull(message = "Customer ID is required")
|
||||||
|
private Long customerId;
|
||||||
|
|
||||||
|
@NotNull(message = "Adoption date is required")
|
||||||
|
private LocalDate adoptionDate;
|
||||||
|
|
||||||
|
@NotNull(message = "Adoption fee is required")
|
||||||
|
@Positive(message = "Adoption fee must be positive")
|
||||||
|
private BigDecimal adoptionFee;
|
||||||
|
|
||||||
|
private String notes;
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package com.petshop.backend.dto.adoption;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class AdoptionResponse {
|
||||||
|
private Long id;
|
||||||
|
private Long petId;
|
||||||
|
private String petName;
|
||||||
|
private Long customerId;
|
||||||
|
private String customerName;
|
||||||
|
private LocalDate adoptionDate;
|
||||||
|
private BigDecimal adoptionFee;
|
||||||
|
private String notes;
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
private LocalDateTime updatedAt;
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
package com.petshop.backend.dto.analytics;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class DashboardResponse {
|
||||||
|
private SalesSummary salesSummary;
|
||||||
|
private InventorySummary inventorySummary;
|
||||||
|
private List<TopProduct> topProducts;
|
||||||
|
private List<DailySales> dailySales;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
class SalesSummary {
|
||||||
|
private BigDecimal totalRevenue;
|
||||||
|
private Long totalSales;
|
||||||
|
private BigDecimal totalRefunds;
|
||||||
|
private Long totalRefundCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
class InventorySummary {
|
||||||
|
private Long totalProducts;
|
||||||
|
private Long lowStockProducts;
|
||||||
|
private Long outOfStockProducts;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
class TopProduct {
|
||||||
|
private Long productId;
|
||||||
|
private String productName;
|
||||||
|
private Long quantitySold;
|
||||||
|
private BigDecimal revenue;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
class DailySales {
|
||||||
|
private String date;
|
||||||
|
private BigDecimal revenue;
|
||||||
|
private Long salesCount;
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package com.petshop.backend.dto.appointment;
|
||||||
|
|
||||||
|
import com.petshop.backend.entity.Appointment;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class AppointmentRequest {
|
||||||
|
@NotNull(message = "Customer ID is required")
|
||||||
|
private Long customerId;
|
||||||
|
|
||||||
|
@NotNull(message = "Service ID is required")
|
||||||
|
private Long serviceId;
|
||||||
|
|
||||||
|
@NotNull(message = "Appointment date is required")
|
||||||
|
private LocalDate appointmentDate;
|
||||||
|
|
||||||
|
@NotNull(message = "Appointment time is required")
|
||||||
|
private LocalTime appointmentTime;
|
||||||
|
|
||||||
|
@NotNull(message = "Status is required")
|
||||||
|
private Appointment.AppointmentStatus status;
|
||||||
|
|
||||||
|
@NotEmpty(message = "At least one pet must be specified")
|
||||||
|
private List<Long> petIds;
|
||||||
|
|
||||||
|
private String notes;
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package com.petshop.backend.dto.appointment;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class AppointmentResponse {
|
||||||
|
private Long id;
|
||||||
|
private Long customerId;
|
||||||
|
private String customerName;
|
||||||
|
private Long serviceId;
|
||||||
|
private String serviceName;
|
||||||
|
private LocalDate appointmentDate;
|
||||||
|
private LocalTime appointmentTime;
|
||||||
|
private String status;
|
||||||
|
private List<String> petNames;
|
||||||
|
private List<Long> petIds;
|
||||||
|
private String notes;
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
private LocalDateTime updatedAt;
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package com.petshop.backend.dto.category;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class CategoryRequest {
|
||||||
|
@NotBlank(message = "Category name is required")
|
||||||
|
private String categoryName;
|
||||||
|
|
||||||
|
private String categoryDescription;
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.petshop.backend.dto.category;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class CategoryResponse {
|
||||||
|
private Long id;
|
||||||
|
private String categoryName;
|
||||||
|
private String categoryDescription;
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
private LocalDateTime updatedAt;
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package com.petshop.backend.dto.common;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class BulkDeleteRequest {
|
||||||
|
@NotEmpty(message = "IDs list cannot be empty")
|
||||||
|
private List<Long> ids;
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package com.petshop.backend.dto.common;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class DropdownOption {
|
||||||
|
private Long id;
|
||||||
|
private String label;
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.petshop.backend.dto.customer;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.Email;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class CustomerRequest {
|
||||||
|
@NotBlank(message = "Customer name is required")
|
||||||
|
private String customerName;
|
||||||
|
|
||||||
|
@Email(message = "Invalid email format")
|
||||||
|
private String customerEmail;
|
||||||
|
|
||||||
|
private String customerPhone;
|
||||||
|
private String customerAddress;
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.petshop.backend.dto.customer;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class CustomerResponse {
|
||||||
|
private Long id;
|
||||||
|
private String customerName;
|
||||||
|
private String customerEmail;
|
||||||
|
private String customerPhone;
|
||||||
|
private String customerAddress;
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
private LocalDateTime updatedAt;
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.petshop.backend.dto.inventory;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import jakarta.validation.constraints.PositiveOrZero;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class InventoryRequest {
|
||||||
|
@NotNull(message = "Product ID is required")
|
||||||
|
private Long productId;
|
||||||
|
|
||||||
|
@NotNull(message = "Store ID is required")
|
||||||
|
private Long storeId;
|
||||||
|
|
||||||
|
@NotNull(message = "Quantity is required")
|
||||||
|
@PositiveOrZero(message = "Quantity must be zero or positive")
|
||||||
|
private Integer quantity;
|
||||||
|
|
||||||
|
@PositiveOrZero(message = "Reorder level must be zero or positive")
|
||||||
|
private Integer reorderLevel = 10;
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.petshop.backend.dto.inventory;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class InventoryResponse {
|
||||||
|
private Long id;
|
||||||
|
private Long productId;
|
||||||
|
private String productName;
|
||||||
|
private String categoryName;
|
||||||
|
private Long storeId;
|
||||||
|
private String storeName;
|
||||||
|
private Integer quantity;
|
||||||
|
private Integer reorderLevel;
|
||||||
|
private LocalDateTime lastRestocked;
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
private LocalDateTime updatedAt;
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package com.petshop.backend.dto.pet;
|
||||||
|
|
||||||
|
import com.petshop.backend.entity.Pet;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import jakarta.validation.constraints.Positive;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class PetRequest {
|
||||||
|
@NotBlank(message = "Pet name is required")
|
||||||
|
private String petName;
|
||||||
|
|
||||||
|
@NotBlank(message = "Species is required")
|
||||||
|
private String petSpecies;
|
||||||
|
|
||||||
|
private String petBreed;
|
||||||
|
|
||||||
|
@Positive(message = "Age must be positive")
|
||||||
|
private Integer petAge;
|
||||||
|
|
||||||
|
@NotNull(message = "Status is required")
|
||||||
|
private Pet.PetStatus petStatus;
|
||||||
|
|
||||||
|
private BigDecimal petPrice;
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package com.petshop.backend.dto.pet;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class PetResponse {
|
||||||
|
private Long id;
|
||||||
|
private String petName;
|
||||||
|
private String petSpecies;
|
||||||
|
private String petBreed;
|
||||||
|
private Integer petAge;
|
||||||
|
private String petStatus;
|
||||||
|
private BigDecimal petPrice;
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
private LocalDateTime updatedAt;
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package com.petshop.backend.dto.product;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import jakarta.validation.constraints.Positive;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ProductRequest {
|
||||||
|
@NotBlank(message = "Product name is required")
|
||||||
|
private String productName;
|
||||||
|
|
||||||
|
@NotNull(message = "Category ID is required")
|
||||||
|
private Long categoryId;
|
||||||
|
|
||||||
|
private String productDescription;
|
||||||
|
|
||||||
|
@NotNull(message = "Product price is required")
|
||||||
|
@Positive(message = "Price must be positive")
|
||||||
|
private BigDecimal productPrice;
|
||||||
|
|
||||||
|
private Boolean active = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package com.petshop.backend.dto.product;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class ProductResponse {
|
||||||
|
private Long id;
|
||||||
|
private String productName;
|
||||||
|
private Long categoryId;
|
||||||
|
private String categoryName;
|
||||||
|
private String productDescription;
|
||||||
|
private BigDecimal productPrice;
|
||||||
|
private Boolean active;
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
private LocalDateTime updatedAt;
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.petshop.backend.dto.productsupplier;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ProductSupplierKey {
|
||||||
|
private Long productId;
|
||||||
|
private Long supplierId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
class BulkDeleteProductSupplierRequest {
|
||||||
|
@NotEmpty(message = "Keys list cannot be empty")
|
||||||
|
private List<ProductSupplierKey> keys;
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package com.petshop.backend.dto.productsupplier;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import jakarta.validation.constraints.Positive;
|
||||||
|
import jakarta.validation.constraints.PositiveOrZero;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ProductSupplierRequest {
|
||||||
|
@NotNull(message = "Product ID is required")
|
||||||
|
private Long productId;
|
||||||
|
|
||||||
|
@NotNull(message = "Supplier ID is required")
|
||||||
|
private Long supplierId;
|
||||||
|
|
||||||
|
@NotNull(message = "Cost price is required")
|
||||||
|
@Positive(message = "Cost price must be positive")
|
||||||
|
private BigDecimal costPrice;
|
||||||
|
|
||||||
|
@PositiveOrZero(message = "Lead time must be zero or positive")
|
||||||
|
private Integer leadTimeDays;
|
||||||
|
|
||||||
|
private Boolean isPreferred = false;
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package com.petshop.backend.dto.productsupplier;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class ProductSupplierResponse {
|
||||||
|
private Long productId;
|
||||||
|
private String productName;
|
||||||
|
private Long supplierId;
|
||||||
|
private String supplierName;
|
||||||
|
private BigDecimal costPrice;
|
||||||
|
private Integer leadTimeDays;
|
||||||
|
private Boolean isPreferred;
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
private LocalDateTime updatedAt;
|
||||||
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
package com.petshop.backend.dto.purchaseorder;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class PurchaseOrderResponse {
|
||||||
|
private Long id;
|
||||||
|
private Long supplierId;
|
||||||
|
private String supplierName;
|
||||||
|
private LocalDate orderDate;
|
||||||
|
private LocalDate expectedDelivery;
|
||||||
|
private String status;
|
||||||
|
private BigDecimal totalAmount;
|
||||||
|
private String notes;
|
||||||
|
private List<PurchaseOrderItemResponse> items;
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
private LocalDateTime updatedAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
class PurchaseOrderItemResponse {
|
||||||
|
private Long id;
|
||||||
|
private Long productId;
|
||||||
|
private String productName;
|
||||||
|
private Integer quantity;
|
||||||
|
private BigDecimal unitCost;
|
||||||
|
private BigDecimal subtotal;
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package com.petshop.backend.dto.refund;
|
||||||
|
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import jakarta.validation.constraints.Positive;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class RefundRequest {
|
||||||
|
@NotEmpty(message = "At least one item is required")
|
||||||
|
@Valid
|
||||||
|
private List<RefundItemRequest> items;
|
||||||
|
|
||||||
|
private String refundReason;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
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;
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
package com.petshop.backend.dto.refund;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
class RefundItemResponse {
|
||||||
|
private Long id;
|
||||||
|
private Long saleItemId;
|
||||||
|
private Long productId;
|
||||||
|
private String productName;
|
||||||
|
private Integer quantity;
|
||||||
|
private BigDecimal refundAmount;
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package com.petshop.backend.dto.sale;
|
||||||
|
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import jakarta.validation.constraints.Positive;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SaleRequest {
|
||||||
|
private Long customerId;
|
||||||
|
|
||||||
|
@NotNull(message = "Store ID is required")
|
||||||
|
private Long storeId;
|
||||||
|
|
||||||
|
private String paymentMethod;
|
||||||
|
|
||||||
|
private BigDecimal tax = BigDecimal.ZERO;
|
||||||
|
|
||||||
|
@NotEmpty(message = "At least one item is required")
|
||||||
|
@Valid
|
||||||
|
private List<SaleItemRequest> items;
|
||||||
|
|
||||||
|
private String notes;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
class SaleItemRequest {
|
||||||
|
@NotNull(message = "Product ID is required")
|
||||||
|
private Long productId;
|
||||||
|
|
||||||
|
@NotNull(message = "Quantity is required")
|
||||||
|
@Positive(message = "Quantity must be positive")
|
||||||
|
private Integer quantity;
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package com.petshop.backend.dto.sale;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class SaleResponse {
|
||||||
|
private Long id;
|
||||||
|
private LocalDateTime saleDate;
|
||||||
|
private Long employeeId;
|
||||||
|
private String employeeName;
|
||||||
|
private Long customerId;
|
||||||
|
private String customerName;
|
||||||
|
private Long storeId;
|
||||||
|
private String storeName;
|
||||||
|
private BigDecimal subtotal;
|
||||||
|
private BigDecimal tax;
|
||||||
|
private BigDecimal total;
|
||||||
|
private String paymentMethod;
|
||||||
|
private String notes;
|
||||||
|
private List<SaleItemResponse> items;
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
class SaleItemResponse {
|
||||||
|
private Long id;
|
||||||
|
private Long productId;
|
||||||
|
private String productName;
|
||||||
|
private Integer quantity;
|
||||||
|
private BigDecimal unitPrice;
|
||||||
|
private BigDecimal subtotal;
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package com.petshop.backend.dto.service;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import jakarta.validation.constraints.Positive;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ServiceRequest {
|
||||||
|
@NotBlank(message = "Service name is required")
|
||||||
|
private String serviceName;
|
||||||
|
|
||||||
|
private String serviceDescription;
|
||||||
|
|
||||||
|
@NotNull(message = "Service price is required")
|
||||||
|
@Positive(message = "Price must be positive")
|
||||||
|
private BigDecimal servicePrice;
|
||||||
|
|
||||||
|
@Positive(message = "Duration must be positive")
|
||||||
|
private Integer serviceDurationMinutes;
|
||||||
|
|
||||||
|
private Boolean active = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package com.petshop.backend.dto.service;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class ServiceResponse {
|
||||||
|
private Long id;
|
||||||
|
private String serviceName;
|
||||||
|
private String serviceDescription;
|
||||||
|
private BigDecimal servicePrice;
|
||||||
|
private Integer serviceDurationMinutes;
|
||||||
|
private Boolean active;
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
private LocalDateTime updatedAt;
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.petshop.backend.dto.supplier;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.Email;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SupplierRequest {
|
||||||
|
@NotBlank(message = "Supplier name is required")
|
||||||
|
private String supplierName;
|
||||||
|
|
||||||
|
private String supplierContact;
|
||||||
|
|
||||||
|
@Email(message = "Invalid email format")
|
||||||
|
private String supplierEmail;
|
||||||
|
|
||||||
|
private String supplierPhone;
|
||||||
|
private String supplierAddress;
|
||||||
|
private Boolean active = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package com.petshop.backend.dto.supplier;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class SupplierResponse {
|
||||||
|
private Long id;
|
||||||
|
private String supplierName;
|
||||||
|
private String supplierContact;
|
||||||
|
private String supplierEmail;
|
||||||
|
private String supplierPhone;
|
||||||
|
private String supplierAddress;
|
||||||
|
private Boolean active;
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
private LocalDateTime updatedAt;
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package com.petshop.backend.dto.user;
|
||||||
|
|
||||||
|
import com.petshop.backend.entity.User;
|
||||||
|
import jakarta.validation.constraints.Email;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import jakarta.validation.constraints.Size;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class UserRequest {
|
||||||
|
@NotBlank(message = "Username is required")
|
||||||
|
@Size(min = 3, max = 50, message = "Username must be between 3 and 50 characters")
|
||||||
|
private String username;
|
||||||
|
|
||||||
|
@Size(min = 6, message = "Password must be at least 6 characters")
|
||||||
|
private String password;
|
||||||
|
|
||||||
|
@NotBlank(message = "Full name is required")
|
||||||
|
private String fullName;
|
||||||
|
|
||||||
|
@Email(message = "Invalid email format")
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
@NotNull(message = "Role is required")
|
||||||
|
private User.Role role;
|
||||||
|
|
||||||
|
private Boolean active = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.petshop.backend.dto.user;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class UserResponse {
|
||||||
|
private Long id;
|
||||||
|
private String username;
|
||||||
|
private String fullName;
|
||||||
|
private String email;
|
||||||
|
private String role;
|
||||||
|
private Boolean active;
|
||||||
|
private LocalDateTime createdAt;
|
||||||
|
private LocalDateTime updatedAt;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user