using System; using System.Collections.Generic; using System.Linq; using CompanyManagment.App.Contracts.InstitutionContract; using MongoDB.Bson; using MongoDB.Bson.Serialization.Attributes; namespace Company.Domain.InstitutionContractAmendmentTempAgg; public class InstitutionContractAmendmentTemp { public InstitutionContractAmendmentTemp(List prevWorkshops, long institutionContractId) { Id = Guid.NewGuid(); PrevWorkshops = prevWorkshops; NewWorkshops = prevWorkshops.Select(x=> new InstitutionContractAmendmentTempNewWorkshop( x.WorkshopName, x.CountPerson, x.ContractAndCheckout, x.ContractAndCheckoutInPerson, x.Insurance, x.InsuranceInPerson, x.RollCall, x.RollCallInPerson, x.CustomizeCheckout, x.Price, x.WorkshopId, x.CurrentWorkshopId, 0,x.Id)).ToList(); InstitutionContractId = institutionContractId; } [BsonId] [BsonRepresentation(BsonType.String)] public Guid Id { get; private set; } public List PrevWorkshops { get; private set; } public List NewWorkshops { get; private set; } public InstitutionContractPaymentMonthlyViewModel MonthlyPayment { get; set; } public InstitutionContractPaymentOneTimeViewModel OneTimePayment { get; set; } public long InstitutionContractId { get; private set; } public int MonthDifference { get; set; } public void AddPaymentDetails(InstitutionContractPaymentMonthlyViewModel resMonthly, InstitutionContractPaymentOneTimeViewModel resOneTime, int monthDiff) { MonthlyPayment = resMonthly; OneTimePayment = resOneTime; MonthDifference = monthDiff; } } public class InstitutionContractAmendmentTempNewWorkshop : InstitutionContractAmendmentTempPrevWorkshop { public InstitutionContractAmendmentTempNewWorkshop(string workshopName, int countPerson, bool contractAndCheckout, bool contractAndCheckoutInPerson, bool insurance, bool insuranceInPerson, bool rollCall, bool rollCallInPerson, bool customizeCheckout, double price, long workshopId, long currentWorkshopId,double priceDifference,Guid prevId) : base( workshopName, countPerson, contractAndCheckout, contractAndCheckoutInPerson, insurance, insuranceInPerson, rollCall, rollCallInPerson, customizeCheckout, price, workshopId, currentWorkshopId) { Id = prevId; PriceDifference = priceDifference; } /// /// مبلغ اختلاف کارگاه جدید با کارگاه قبلی(مبلغ اصلی ارتقاء) /// public double PriceDifference { get; private set; } public void Edit(string workshopName, int countPerson, bool contractAndCheckout, bool contractAndCheckoutInPerson, bool insurance, bool insuranceInPerson, bool rollCall, bool customizeCheckout, double price,double priceDifference) { base.Edit(workshopName, countPerson, contractAndCheckout, contractAndCheckoutInPerson, insurance, insuranceInPerson, rollCall, customizeCheckout, price); PriceDifference = priceDifference; } } public class InstitutionContractAmendmentTempPrevWorkshop { public InstitutionContractAmendmentTempPrevWorkshop(string workshopName, int countPerson, bool contractAndCheckout, bool contractAndCheckoutInPerson, bool insurance, bool insuranceInPerson, bool rollCall, bool rollCallInPerson, bool customizeCheckout, double price, long workshopId, long currentWorkshopId) { Id = Guid.NewGuid(); WorkshopName = workshopName; CountPerson = countPerson; ContractAndCheckout = contractAndCheckout; Insurance = insurance; RollCall = rollCall; CustomizeCheckout = customizeCheckout; ContractAndCheckoutInPerson = contractAndCheckoutInPerson; InsuranceInPerson = insuranceInPerson; RollCallInPerson = rollCallInPerson; Price = price; WorkshopId = workshopId; CurrentWorkshopId = currentWorkshopId; } [BsonRepresentation(BsonType.String)] public Guid Id { get; set; } public long CurrentWorkshopId { get; private set; } public long WorkshopId { get; set; } /// /// نام کارگاه /// public string WorkshopName { get; private set; } /// /// تعداد پرسنل /// public int CountPerson { get; private set; } #region ServiceSelection /// /// قرارداد و تصفیه /// public bool ContractAndCheckout { get; private set; } /// /// بیمه /// public bool Insurance { get; private set; } /// /// حضورغباب /// public bool RollCall { get; private set; } public bool RollCallInPerson { get; set; } /// /// فیش غیر رسمی /// public bool CustomizeCheckout { get; private set; } /// /// خدمات حضوری قرداد و تصفیه /// public bool ContractAndCheckoutInPerson { get; private set; } /// /// خدمات حضوری بیمه /// public bool InsuranceInPerson { get; private set; } public double Price { get; private set; } #endregion public void Edit(string workshopName, int countPerson, bool contractAndCheckout, bool contractAndCheckoutInPerson, bool insurance, bool insuranceInPerson, bool rollCall, bool customizeCheckout, double price) { WorkshopName = workshopName; CountPerson = countPerson; ContractAndCheckout = contractAndCheckout; Insurance = insurance; RollCall = rollCall; CustomizeCheckout = customizeCheckout; ContractAndCheckoutInPerson = contractAndCheckoutInPerson; InsuranceInPerson = insuranceInPerson; Price = price; } }