using System.Collections.Generic;

namespace NPP.SmartSchedue.Api.Contracts.Services.Time.Output;

/// <summary>
/// 人员年度班次统计
/// </summary>
public class PersonnelYearlyShiftStatistics
{
    /// <summary>
    /// 人员ID
    /// </summary>
    public long PersonnelId { get; set; }

    /// <summary>
    /// 统计年份
    /// </summary>
    public int Year { get; set; }

    /// <summary>
    /// 年度总班次数
    /// </summary>
    public int TotalShifts { get; set; }

    /// <summary>
    /// 各月班次统计
    /// </summary>
    public List<MonthlyShiftStatistics> MonthlyStatistics { get; set; } = new List<MonthlyShiftStatistics>();

    /// <summary>
    /// 各班次类型统计
    /// </summary>
    public List<ShiftTypeStatistics> ShiftTypeStatistics { get; set; } = new List<ShiftTypeStatistics>();

    /// <summary>
    /// 平均月班次数
    /// </summary>
    public double AverageMonthlyShifts { get; set; }

    /// <summary>
    /// 年度班次排名
    /// </summary>
    public int YearlyRank { get; set; }
}

/// <summary>
/// 月度班次统计
/// </summary>
public class MonthlyShiftStatistics
{
    /// <summary>
    /// 月份
    /// </summary>
    public int Month { get; set; }

    /// <summary>
    /// 该月班次数
    /// </summary>
    public int ShiftCount { get; set; }
}

/// <summary>
/// 班次类型统计
/// </summary>
public class ShiftTypeStatistics
{
    /// <summary>
    /// 班次编号
    /// </summary>
    public int ShiftNumber { get; set; }

    /// <summary>
    /// 班次名称
    /// </summary>
    public string ShiftName { get; set; }

    /// <summary>
    /// 该类型班次数
    /// </summary>
    public int ShiftCount { get; set; }
} 