using System.ComponentModel.DataAnnotations;
using Lada.Framework.Data.Enums;
using Lada.Framework.DTO;

namespace Ladaer.BackEnd.Infrastructures.DTO.Models.FuelCards;

/// <summary>
/// Model tạo phiếu thanh toán tiền dầu khoán cho lái xe
/// </summary>
public class FuelQuotaPaymentModel : BaseModel<int>
{
    /// <summary>
    /// ID lái xe được thanh toán
    /// </summary>
    [Required(ErrorMessage = "Phải chọn lái xe")]
    public int DriverId { get; set; }

    /// <summary>
    /// Số lít được thanh toán
    /// </summary>
    [Required(ErrorMessage = "Số lít thanh toán là bắt buộc")]
    [Range(0.01, double.MaxValue, ErrorMessage = "Số lít phải lớn hơn 0")]
    public decimal PaidLiters { get; set; }

    /// <summary>
    /// Đơn giá dầu tại thời điểm thanh toán (VND/lít)
    /// </summary>
    [Required(ErrorMessage = "Đơn giá dầu là bắt buộc")]
    [Range(0.01, double.MaxValue, ErrorMessage = "Đơn giá phải lớn hơn 0")]
    public decimal FuelUnitPrice { get; set; }

    /// <summary>
    /// Ngày thanh toán
    /// </summary>
    [Required]
    public DateTimeOffset PaymentDate { get; set; }

    /// <summary>
    /// Phương thức thanh toán (Tiền mặt, Chuyển khoản...)
    /// </summary>
    [Required(ErrorMessage = "Phương thức thanh toán là bắt buộc")]
    [MaxLength(100)]
    public string PaymentMethod { get; set; } = string.Empty;

    /// <summary>
    /// Mã tham chiếu thanh toán
    /// </summary>
    [MaxLength(256)]
    public string PaymentReference { get; set; } = string.Empty;

    /// <summary>
    /// Ghi chú
    /// </summary>
    [MaxLength(1024)]
    public string Notes { get; set; } = string.Empty;

    /// <summary>
    /// Trạng thái (Pending, Approved, Paid, Cancelled)
    /// </summary>
    public FuelQuotaPaymentStatus Status { get; set; } = FuelQuotaPaymentStatus.Pending;
}
