using Lada.Framework.Data.Domains.BaseEntities;
using Lada.Framework.Data.Domains.Finance.Wallets;
using Lada.Framework.Data.Domains.Orders;
using Lada.Framework.Data.Enums;

namespace Lada.Framework.Data.Domains.Finance
{
    public class Income : BaseEntityWithKey<Guid>
    {
        /// <summary>
        /// Mô tả doanh thu
        /// </summary>
        public string Description { get; set; } = string.Empty;

        /// <summary>
        /// Ghi chú cho doanh thu
        /// </summary>
        public string Note { get; set; } = string.Empty;

        /// <summary>
        /// Số tiền doanh thu
        /// </summary>
        public decimal Amount { get; set; }

        /// <summary>
        /// Danh mục doanh thu
        /// </summary>
        public int IncomeCategoryId { get; set; }
        public virtual IncomeCategory IncomeCategory { get; set; } = null!;

        /// <summary>
        /// Trạng thái doanh thu
        /// </summary>
        public IncomeStatus Status { get; set; }

        /// <summary>
        /// ID của giao dịch liên kết (nếu có)
        /// </summary>
        public Guid? TransactionId { get; set; }
        public virtual Transaction? Transaction { get; set; }

        /// <summary>
        /// ID của đơn hàng liên kết (nếu có)
        /// </summary>
        public int? OrderId { get; set; }
        public virtual Order? Order { get; set; }

        /// <summary>
        /// UserId của người duyệt
        /// </summary>
        public int? ApprovedBy { get; set; }

        /// <summary>
        /// Lý do từ chối (nếu có)
        /// </summary>
        public string? RejectReason { get; set; }
    }
}

