using System;
using System.Collections.Generic;

namespace Haoliang.Models.Production
{
public class ProgramProductionSummaryDetailed
    {
        public int SummaryId { get; set; }
        public int DeviceId { get; set; }
        public string DeviceName { get; set; }
        public string ProgramName { get; set; }
        public int Quantity { get; set; }
        public DateTime ProductionDate { get; set; }
        public DateTime CreatedAt { get; set; }
        public DateTime UpdatedAt { get; set; }
    }

    public class ProductionStatisticsDetailed
    {
        public DateTime Date { get; set; }
        public int TotalDevices { get; set; }
        public int ActiveDevices { get; set; }
        public int TotalProduction { get; set; }
        public decimal AverageProduction { get; set; }
        public int TotalPrograms { get; set; }
        public decimal QualityRate { get; set; }
        public Dictionary<string, int> ProductionByDevice { get; set; }
        public Dictionary<string, int> ProductionByProgram { get; set; }
    }

    public class ProductionRecordDetailed
    {
        public int RecordId { get; set; }
        public int DeviceId { get; set; }
        public string DeviceName { get; set; }
        public string ProgramName { get; set; }
        public int Quantity { get; set; }
        public DateTime ProductionDate { get; set; }
        public TimeSpan ProductionTime { get; set; }
        public bool IsCompleted { get; set; }
        public string Operator { get; set; }
        public DateTime CreatedAt { get; set; }
        public DateTime UpdatedAt { get; set; }
    }

    public class ProductionSummary
    {
        public int SummaryId { get; set; }
        public DateTime ProductionDate { get; set; }
        public int DeviceId { get; set; }
        public string DeviceName { get; set; }
        public int TotalQuantity { get; set; }
        public int ProgramCount { get; set; }
        public TimeSpan? TotalProductionTime { get; set; }
        public decimal QualityRate { get; set; }
        public DateTime CreatedAt { get; set; }
        public DateTime UpdatedAt { get; set; }
    }

    public class ProductionStatistics
    {
        public DateTime Date { get; set; }
        public int TotalDevices { get; set; }
        public int ActiveDevices { get; set; }
        public int TotalProduction { get; set; }
        public decimal AverageProduction { get; set; }
        public int TotalPrograms { get; set; }
        public decimal QualityRate { get; set; }
        public Dictionary<string, int> ProductionByDevice { get; set; }
        public Dictionary<string, int> ProductionByProgram { get; set; }
    }

    public class ProductionRecord
    {
        public int RecordId { get; set; }
        public int DeviceId { get; set; }
        public string DeviceName { get; set; }
        public string ProgramName { get; set; }
        public int Quantity { get; set; }
        public DateTime ProductionDate { get; set; }
        public TimeSpan ProductionTime { get; set; }
        public bool IsCompleted { get; set; }
        public string Operator { get; set; }
        public DateTime CreatedAt { get; set; }
        public DateTime UpdatedAt { get; set; }
    }

    public class DeviceProductionSummary
    {
        public int DeviceId { get; set; }
        public string DeviceName { get; set; }
        public int TotalQuantity { get; set; }
        public int ProgramCount { get; set; }
        public List<ProgramSummary> Programs { get; set; }
    }

    public class ProgramSummary
    {
        public string ProgramName { get; set; }
        public int Quantity { get; set; }
        public decimal Percentage { get; set; }
    }

    public class DailyProductionSummary
    {
        public DateTime Date { get; set; }
        public int TotalQuantity { get; set; }
        public int DeviceCount { get; set; }
    }

    public class WeeklyProductionSummary
    {
        public DateTime WeekStart { get; set; }
        public DateTime WeekEnd { get; set; }
        public int TotalDevices { get; set; }
        public int TotalQuantity { get; set; }
        public decimal AverageDailyQuantity { get; set; }
        public List<DailyProductionSummary> DailySummaries { get; set; }
    }

    public class MonthlyProductionSummary
    {
        public int Year { get; set; }
        public int Month { get; set; }
        public int TotalDevices { get; set; }
        public int TotalQuantity { get; set; }
        public decimal AverageDailyQuantity { get; set; }
        public List<WeeklyProductionSummary> WeeklySummaries { get; set; }
    }

    public class ProductionYield
    {
        public int DeviceId { get; set; }
        public string DeviceName { get; set; }
        public DateTime Date { get; set; }
        public int TotalProduced { get; set; }
        public int GoodPieces { get; set; }
        public int DefectivePieces { get; set; }
        public decimal QualityPercentage { get; set; }
        public string Shift { get; set; }
    }
}