package org.example.petshopdesktop.api.dto.analytics;

import java.math.BigDecimal;
import java.util.List;

public class DashboardResponse {
    private SalesSummary salesSummary;
    private InventorySummary inventorySummary;
    private List<TopProduct> topProducts;
    private List<DailySales> dailySales;
    private List<PaymentMethodData> paymentMethods;
    private List<EmployeePerformanceData> employeePerformance;

    public DashboardResponse() {
    }

    public SalesSummary getSalesSummary() {
        return salesSummary;
    }

    public void setSalesSummary(SalesSummary salesSummary) {
        this.salesSummary = salesSummary;
    }

    public InventorySummary getInventorySummary() {
        return inventorySummary;
    }

    public void setInventorySummary(InventorySummary inventorySummary) {
        this.inventorySummary = inventorySummary;
    }

    public List<TopProduct> getTopProducts() {
        return topProducts;
    }

    public void setTopProducts(List<TopProduct> topProducts) {
        this.topProducts = topProducts;
    }

    public List<DailySales> getDailySales() {
        return dailySales;
    }

    public void setDailySales(List<DailySales> dailySales) {
        this.dailySales = dailySales;
    }

    public List<PaymentMethodData> getPaymentMethods() {
        return paymentMethods;
    }

    public void setPaymentMethods(List<PaymentMethodData> paymentMethods) {
        this.paymentMethods = paymentMethods;
    }

    public List<EmployeePerformanceData> getEmployeePerformance() {
        return employeePerformance;
    }

    public void setEmployeePerformance(List<EmployeePerformanceData> employeePerformance) {
        this.employeePerformance = employeePerformance;
    }

    public static class SalesSummary {
        private BigDecimal totalRevenue;
        private Long totalSales;
        private BigDecimal totalRefunds;
        private Long totalRefundCount;
        private Long totalItemsSold;

        public SalesSummary() {
        }

        public BigDecimal getTotalRevenue() {
            return totalRevenue;
        }

        public void setTotalRevenue(BigDecimal totalRevenue) {
            this.totalRevenue = totalRevenue;
        }

        public Long getTotalSales() {
            return totalSales;
        }

        public void setTotalSales(Long totalSales) {
            this.totalSales = totalSales;
        }

        public BigDecimal getTotalRefunds() {
            return totalRefunds;
        }

        public void setTotalRefunds(BigDecimal totalRefunds) {
            this.totalRefunds = totalRefunds;
        }

        public Long getTotalRefundCount() {
            return totalRefundCount;
        }

        public void setTotalRefundCount(Long totalRefundCount) {
            this.totalRefundCount = totalRefundCount;
        }

        public Long getTotalItemsSold() {
            return totalItemsSold;
        }

        public void setTotalItemsSold(Long totalItemsSold) {
            this.totalItemsSold = totalItemsSold;
        }
    }

    public static class InventorySummary {
        private Long totalProducts;
        private Long lowStockProducts;
        private Long outOfStockProducts;

        public InventorySummary() {
        }

        public Long getTotalProducts() {
            return totalProducts;
        }

        public void setTotalProducts(Long totalProducts) {
            this.totalProducts = totalProducts;
        }

        public Long getLowStockProducts() {
            return lowStockProducts;
        }

        public void setLowStockProducts(Long lowStockProducts) {
            this.lowStockProducts = lowStockProducts;
        }

        public Long getOutOfStockProducts() {
            return outOfStockProducts;
        }

        public void setOutOfStockProducts(Long outOfStockProducts) {
            this.outOfStockProducts = outOfStockProducts;
        }
    }

    public static class PaymentMethodData {
        private String paymentMethod;
        private Long count;

        public String getPaymentMethod() {
            return paymentMethod;
        }

        public void setPaymentMethod(String paymentMethod) {
            this.paymentMethod = paymentMethod;
        }

        public Long getCount() {
            return count;
        }

        public void setCount(Long count) {
            this.count = count;
        }
    }

    public static class EmployeePerformanceData {
        private String employeeName;
        private BigDecimal revenue;

        public String getEmployeeName() {
            return employeeName;
        }

        public void setEmployeeName(String employeeName) {
            this.employeeName = employeeName;
        }

        public BigDecimal getRevenue() {
            return revenue;
        }

        public void setRevenue(BigDecimal revenue) {
            this.revenue = revenue;
        }
    }
}
