using Marco.Pms.Model.Master;
using Marco.Pms.Model.MongoDBModels.Employees;
using Marco.Pms.Model.MongoDBModels.Masters;
using Marco.Pms.Model.MongoDBModels.Project;

namespace Marco.Pms.Model.MongoDBModels.Expenses
{
    public class ExpenseDetailsMongoDB
    {
        public string Id { get; set; } = string.Empty;
        public ProjectBasicMongoDB Project { get; set; } = new ProjectBasicMongoDB();
        public ExpenseCategoryMasterMongoDB ExpenseCategory { get; set; } = new ExpenseCategoryMasterMongoDB();
        public PaymentModeMatserMongoDB PaymentMode { get; set; } = new PaymentModeMatserMongoDB();
        public BasicEmployeeMongoDB PaidBy { get; set; } = new BasicEmployeeMongoDB();
        public BasicEmployeeMongoDB CreatedBy { get; set; } = new BasicEmployeeMongoDB();
        public BasicEmployeeMongoDB? ReviewedBy { get; set; }
        public BasicEmployeeMongoDB? ApprovedBy { get; set; }
        public BasicEmployeeMongoDB? ProcessedBy { get; set; }
        public DateTime TransactionDate { get; set; }
        public DateTime CreatedAt { get; set; }
        public DateTime ExpireAt { get; set; } = DateTime.UtcNow.Date.AddDays(1);
        public string SupplerName { get; set; } = string.Empty;
        public double Amount { get; set; }
        public CurrencyMaster? Currency { get; set; }
        public double? BaseAmount { get; set; }
        public double? TaxAmount { get; set; }
        public double? TDSPercentage { get; set; }
        public string? PaymentRequestUID { get; set; }
        public string? ExpenseUId { get; set; }
        public ExpensesStatusMasterMongoDB Status { get; set; } = new ExpensesStatusMasterMongoDB();
        public List<ExpensesStatusMasterMongoDB> NextStatus { get; set; } = new List<ExpensesStatusMasterMongoDB>();
        public bool PreApproved { get; set; } = false;
        public string? TransactionId { get; set; }
        public string Description { get; set; } = string.Empty;
        public string? Location { get; set; }
        public List<DocumentMongoDB> Documents { get; set; } = new List<DocumentMongoDB>();
        public string? GSTNumber { get; set; }
        public int? NoOfPersons { get; set; }
        public bool IsActive { get; set; } = true;
        public string TenantId { get; set; } = string.Empty;
    }
}
