using Marco.Pms.Model.Master;
using Marco.Pms.Model.ViewModels.Activities;
using Marco.Pms.Model.ViewModels.DocumentManager;
using Marco.Pms.Model.ViewModels.Expenses.Masters;
using Marco.Pms.Model.ViewModels.Master;
using Marco.Pms.Model.ViewModels.Projects;

namespace Marco.Pms.Model.ViewModels.Expenses
{
    public class ExpenseDetailsVM
    {
        public Guid Id { get; set; }
        public ProjectInfoVM? Project { get; set; }
        public ExpenseCategoryMasterVM? ExpenseCategory { get; set; }
        public PaymentModeMatserVM? PaymentMode { get; set; }
        public BasicEmployeeVM? PaidBy { get; set; }
        public BasicEmployeeVM? CreatedBy { get; set; }
        public BasicEmployeeVM? ReviewedBy { get; set; }
        public BasicEmployeeVM? ApprovedBy { get; set; }
        public BasicEmployeeVM? ProcessedBy { get; set; }
        public DateTime TransactionDate { get; set; }
        public DateTime CreatedAt { get; set; }
        public string SupplerName { get; set; } = string.Empty;
        public string? ExpenseUId { get; set; }
        public string? PaymentRequestUID { get; set; }
        public double Amount { get; set; }
        public double? BaseAmount { get; set; }
        public double? TaxAmount { get; set; }
        public double? TDSPercentage { get; set; }
        public ExpensesStatusMasterVM? Status { get; set; }
        public List<ExpensesStatusMasterVM>? NextStatus { get; set; }
        public bool PreApproved { get; set; } = false;
        public string? TransactionId { get; set; }
        public string Description { get; set; } = string.Empty;
        public string? Location { get; set; }
        public CurrencyMaster? Currency { get; set; }
        public List<BasicDocumentVM> Documents { get; set; } = new List<BasicDocumentVM>();
        public List<ExpenseLogVM> ExpenseLogs { get; set; } = new List<ExpenseLogVM>();
        public string? GSTNumber { get; set; }
        public int? NoOfPersons { get; set; }
        public bool IsActive { get; set; } = true;
        public ExpensesReimburseVM ExpensesReimburse { get; set; } = new ExpensesReimburseVM();
    }
}
