diff --git a/CompanyManagment.App.Contracts/TemporaryClientRegistration/ITemporaryClientRegistrationApplication.cs b/CompanyManagment.App.Contracts/TemporaryClientRegistration/ITemporaryClientRegistrationApplication.cs index ed65a43b..dbe8ea51 100644 --- a/CompanyManagment.App.Contracts/TemporaryClientRegistration/ITemporaryClientRegistrationApplication.cs +++ b/CompanyManagment.App.Contracts/TemporaryClientRegistration/ITemporaryClientRegistrationApplication.cs @@ -3,7 +3,9 @@ using System.Collections.Generic; using System.Threading.Tasks; using _0_Framework.Application; using _0_Framework.Application.Enums; +using CompanyManagment.App.Contracts.InstitutionContract; using CompanyManagment.App.Contracts.InstitutionPlan; +using Microsoft.AspNetCore.Mvc; namespace CompanyManagment.App.Contracts.TemporaryClientRegistration; @@ -116,4 +118,25 @@ public interface ITemporaryClientRegistrationApplication /// /// Task> RegistrationWorkflowMainList(); + + /// + /// ایجاد قرارداد مالی برای طرف حساب + /// + /// + /// + Task CreateInstitutionContractTemp(CreateInstitutionContractTempRequest command); +} + +public class CreateInstitutionContractTempRequest +{ + public long ContractingPartyTempId { get; set; } + public string State { get; set; } + public string City { get; set; } + public string Address { get; set; } + public List Workshops { get; set; } + public string PeriodModel { get; set; } + public string PaymentModel { get; set; } + public double TotalPayment { get; set; } + public double ValueAddedTax { get; set; } + public string ContractStartFa { get; set; } } diff --git a/CompanyManagment.Application/TemporaryClientRegistrationApplication.cs b/CompanyManagment.Application/TemporaryClientRegistrationApplication.cs index c4159660..66ab5258 100644 --- a/CompanyManagment.Application/TemporaryClientRegistrationApplication.cs +++ b/CompanyManagment.Application/TemporaryClientRegistrationApplication.cs @@ -8,6 +8,7 @@ using _0_Framework.Application.UID; using Company.Domain.ContarctingPartyAgg; using Company.Domain.InstitutionPlanAgg; using Company.Domain.TemporaryClientRegistrationAgg; +using CompanyManagment.App.Contracts.InstitutionContract; using CompanyManagment.App.Contracts.InstitutionPlan; using CompanyManagment.App.Contracts.TemporaryClientRegistration; using IPE.SmsIrClient.Models.Results; @@ -28,7 +29,11 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati private readonly IInstitutionContractTempRepository _institutionContractTempRepository; private readonly ISmsService _smsService; - public TemporaryClientRegistrationApplication(IContractingPartyTempRepository contractingPartyTempRepository, IPersonalContractingPartyRepository personalContractingPartyRepository, IUidService uidService, IWorkshopTempRepository workshopTempRepository, IPlanPercentageRepository planPercentageRepository, IWorkshopServicesTempRepository workshopServicesTempRepository, IInstitutionContractTempRepository institutionContractTempRepository, ISmsService smsService) + public TemporaryClientRegistrationApplication(IContractingPartyTempRepository contractingPartyTempRepository, + IPersonalContractingPartyRepository personalContractingPartyRepository, IUidService uidService, + IWorkshopTempRepository workshopTempRepository, IPlanPercentageRepository planPercentageRepository, + IWorkshopServicesTempRepository workshopServicesTempRepository, + IInstitutionContractTempRepository institutionContractTempRepository, ISmsService smsService) { _contractingPartyTempRepository = contractingPartyTempRepository; _personalContractingPartyRepository = personalContractingPartyRepository; @@ -47,7 +52,8 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati /// /// /// - public async Task> CreateContractingPartyTemp(string nationalCode, string dateOfBirth, string mobile) + public async Task> CreateContractingPartyTemp(string nationalCode, + string dateOfBirth, string mobile) { var op = new OperationResult(); @@ -67,12 +73,11 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati if (!mobile.IsMobileValid()) return op.Failed("شماره همراه نا معتبر است"); - - #endregion - var getExistContractingParty = await _contractingPartyTempRepository.CheckExistOrAuthenticated(nationalCode, dateOfBirth); + var getExistContractingParty = + await _contractingPartyTempRepository.CheckExistOrAuthenticated(nationalCode, dateOfBirth); //اگر طرف حساب قبلا در دیتابیس وجود داشت if (getExistContractingParty) @@ -96,7 +101,6 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati if (institutionContractTemp != null) { - if (institutionContractTemp.RegistrationStatus == "Completed") return op.Failed("شما قبلا ثبت نام خود را تکمیل نموده اید"); } @@ -106,8 +110,8 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati if (getExistTemp.Phone != mobile) return op.Failed("شما قبلا با شماره همراه دیگری ثبت نام نموده اید"); return op.Succcedded(getExistTemp); - } + //چک کردن مطابقت شماره همراه و کد ملی var isMachMobilAndNationalCode = await _uidService.IsMachPhoneWithNationalCode(nationalCode, mobile); if (isMachMobilAndNationalCode == null) @@ -124,8 +128,8 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati return op.Failed($"{apiRespons.ResponseContext.Status.Message}"); var idNumber = apiRespons.IdentificationInformation.ShenasnamehNumber == "0" - ? apiRespons.IdentificationInformation.NationalId - : apiRespons.IdentificationInformation.ShenasnamehNumber; + ? apiRespons.IdentificationInformation.NationalId + : apiRespons.IdentificationInformation.ShenasnamehNumber; //ایجاد طرف حساب موقت var createTemp = new ContractingPartyTemp(apiRespons.BasicInformation.FirstName, @@ -148,9 +152,6 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati return op.Succcedded(result); } - - - } /// @@ -161,7 +162,6 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati /// /// /// - public async Task UpdateAddress(long id, string state, string city, string address) { var op = new OperationResult(); @@ -191,7 +191,8 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati /// /// /// - public async Task CreateOrUpdateWorkshopTemp(List command, long contractingPartyTempId) + public async Task CreateOrUpdateWorkshopTemp(List command, + long contractingPartyTempId) { var op = new OperationResult(); var updateWorkshopList = command.Where(x => x.Id > 0).ToList(); @@ -202,6 +203,7 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati var oldWorkshops = await _workshopTempRepository.GetWorkshopTemp(contractingPartyTempId); #region Update + if (updateWorkshopList.Count > 0) { var updateListIds = updateWorkshopList.Select(x => x.Id).ToList(); @@ -213,7 +215,6 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati foreach (var workshop in updateWorkshopList) { - if (string.IsNullOrWhiteSpace(workshop.WorkshopName)) return op.Failed("نام مجموعه نمی تواند خالی باشد"); if (workshop.CountPerson == 0) @@ -235,7 +236,8 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati if (plan.OnlineAndInPersonSumAmountDouble > 0) { //ویرایش مشخصات کارگاه - existWorkshops.Edit(workshop.WorkshopName, workshop.CountPerson, plan.OnlineAndInPersonSumAmountDouble); + existWorkshops.Edit(workshop.WorkshopName, workshop.CountPerson, + plan.OnlineAndInPersonSumAmountDouble); await _workshopTempRepository.SaveChangesAsync(); //حذف سرویس های قبلی @@ -248,7 +250,8 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati //سرویس خدمات حضوری قرارداد if (workshop.ContractAndCheckoutInPerson) await _workshopServicesTempRepository.CreateAsync( - new WorkshopServicesTemp("ContractAndCheckoutInPerson", workshop.CountPerson, workshop.Id)); + new WorkshopServicesTemp("ContractAndCheckoutInPerson", workshop.CountPerson, + workshop.Id)); //سرویس بیمه if (workshop.Insurance) @@ -270,12 +273,10 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati await _workshopServicesTempRepository.SaveChangesAsync(); } - } - } - } + #endregion #region Create @@ -284,7 +285,6 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati { foreach (var workshop in createNewWorkshopList) { - if (string.IsNullOrWhiteSpace(workshop.WorkshopName)) return op.Failed("نام مجموعه نمی تواند خالی باشد"); if (workshop.CountPerson == 0) @@ -302,23 +302,22 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati var plan = _planPercentageRepository.GetInstitutionPlanForWorkshop(workshop); if (plan.OnlineAndInPersonSumAmountDouble > 0) { - - var createNewWorkshopTemp = new WorkshopTemp(workshop.WorkshopName, workshop.CountPerson, workshop.ContractingPartyTempId, plan.OnlineAndInPersonSumAmountDouble); await _workshopTempRepository.CreateAsync(createNewWorkshopTemp); await _workshopTempRepository.SaveChangesAsync(); - //سرویس قرداد if (workshop.ContractAndCheckout) await _workshopServicesTempRepository.CreateAsync( - new WorkshopServicesTemp("ContractAndCheckout", workshop.CountPerson, createNewWorkshopTemp.id)); + new WorkshopServicesTemp("ContractAndCheckout", workshop.CountPerson, + createNewWorkshopTemp.id)); //سرویس خدمات حضوری قرارداد if (workshop.ContractAndCheckoutInPerson) await _workshopServicesTempRepository.CreateAsync( - new WorkshopServicesTemp("ContractAndCheckoutInPerson", workshop.CountPerson, createNewWorkshopTemp.id)); + new WorkshopServicesTemp("ContractAndCheckoutInPerson", workshop.CountPerson, + createNewWorkshopTemp.id)); //سرویس بیمه if (workshop.Insurance) @@ -327,7 +326,8 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati //سرویس خدمات حضوری بیمه if (workshop.InsuranceInPerson) await _workshopServicesTempRepository.CreateAsync( - new WorkshopServicesTemp("InsuranceInPerson", workshop.CountPerson, createNewWorkshopTemp.id)); + new WorkshopServicesTemp("InsuranceInPerson", workshop.CountPerson, + createNewWorkshopTemp.id)); //سرویس حضورغیاب if (workshop.RollCall) @@ -336,11 +336,11 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati //سرویس فیش غیر رسمی if (workshop.CustomizeCheckout) await _workshopServicesTempRepository.CreateAsync( - new WorkshopServicesTemp("CustomizeCheckout", workshop.CountPerson, createNewWorkshopTemp.id)); + new WorkshopServicesTemp("CustomizeCheckout", workshop.CountPerson, + createNewWorkshopTemp.id)); await _workshopServicesTempRepository.SaveChangesAsync(); } - } } @@ -367,9 +367,9 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati /// /// /// - public async Task GetTotalPaymentAndWorkshopList(long contractingPartyTempId, string periodModel = "12", string paymentModel = "OneTime", string contractStartType = "currentMonth") + public async Task GetTotalPaymentAndWorkshopList(long contractingPartyTempId, + string periodModel = "12", string paymentModel = "OneTime", string contractStartType = "currentMonth") { - //دریافت کارگاه ها var workshops = await _workshopTempRepository.GetWorkshopTemp(contractingPartyTempId); @@ -412,6 +412,7 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati result.ValueAddedTaxDouble = tenPercent; result.ValueAddedTaxSt = tenPercent.ToMoney(); //پرداخت یکجا + #region OneTimePaymentResult double discountOneTimePeyment = result.SumOfWorkshopsPaymentDouble - tenPercent; @@ -428,6 +429,7 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati #endregion //پرداخت ماهیانه + #region MonthlyPaymentResult //مبلغ بدون مالیات @@ -451,7 +453,6 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati startDate = result.ContractStartNextMonthFa; - var findeEnd = Tools.FindEndOfContract(startDate, periodModel); var contractEndDate = findeEnd.endDateGr; result.ContractEndGr = contractEndDate; @@ -459,13 +460,11 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati if (periodModel == "1") { - installmentList.Add(new MonthlyInstallment() { InstallmentAmountStr = result.MonthlyTotalPaymentStr, InstallmentCounter = "سررسید پرداخت اول", InstalmentDate = (DateTime.Now).ToFarsi() - }); result.MonthlyInstallments = installmentList; } @@ -479,7 +478,6 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati if (i == 1) { startDate = (DateTime.Now).ToFarsi(); - } else if (i > 1) { @@ -508,10 +506,8 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati _ => "سررسید پرداخت دوازدهم", }, InstalmentDate = startDate - }); } - } #endregion @@ -520,10 +516,10 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati result.ContractingPartTempId = contractingPartyTempId; return result; - } - public async Task GetTotalPaymentAndWorkshopList(long contractingPartyTempId, List workshops, string periodModel = "12", + public async Task GetTotalPaymentAndWorkshopList(long contractingPartyTempId, + List workshops, string periodModel = "12", string paymentModel = "OneTime", string contractStartType = "currentMonth") { //دریافت کارگاه ها @@ -567,6 +563,7 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati result.ValueAddedTaxDouble = tenPercent; result.ValueAddedTaxSt = tenPercent.ToMoney(); //پرداخت یکجا + #region OneTimePaymentResult double discountOneTimePeyment = result.SumOfWorkshopsPaymentDouble - tenPercent; @@ -583,6 +580,7 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati #endregion //پرداخت ماهیانه + #region MonthlyPaymentResult //مبلغ بدون مالیات @@ -606,7 +604,6 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati startDate = result.ContractStartNextMonthFa; - var findeEnd = Tools.FindEndOfContract(startDate, periodModel); var contractEndDate = findeEnd.endDateGr; result.ContractEndGr = contractEndDate; @@ -614,13 +611,11 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati if (periodModel == "1") { - installmentList.Add(new MonthlyInstallment() { InstallmentAmountStr = result.MonthlyTotalPaymentStr, InstallmentCounter = "سررسید پرداخت اول", InstalmentDate = (DateTime.Now).ToFarsi() - }); result.MonthlyInstallments = installmentList; } @@ -634,7 +629,6 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati if (i == 1) { startDate = (DateTime.Now).ToFarsi(); - } else if (i > 1) { @@ -663,10 +657,8 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati _ => "سررسید پرداخت دوازدهم", }, InstalmentDate = startDate - }); } - } #endregion @@ -682,13 +674,12 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati /// /// /// - public async Task CreateOrUpdateInstitutionContractTemp(long contractingPartyTempId, string periodModel, string paymentModel, double totalPayment, double valueAddedTax, DateTime contractStart) + public async Task CreateOrUpdateInstitutionContractTemp(long contractingPartyTempId, + string periodModel, string paymentModel, double totalPayment, double valueAddedTax, DateTime contractStart) { - var op = new OperationResult(); - var institutionContractTemp = await _institutionContractTempRepository.GetInstitutionContractTemp(0, contractingPartyTempId); var contractStartDate = contractStart; @@ -699,7 +690,9 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati { var periodModelInt = Convert.ToInt32(periodModel); - var create = new InstitutionContractTemp(contractingPartyTempId, paymentModel, periodModel, totalPayment, contractStartDate, contractEndDate, "official", valueAddedTax, "", "BeforeSendVerifyCode", 0, null, null); + var create = new InstitutionContractTemp(contractingPartyTempId, paymentModel, periodModel, totalPayment, + contractStartDate, contractEndDate, "official", valueAddedTax, "", "BeforeSendVerifyCode", 0, null, + null); _institutionContractTempRepository.Create(create); _institutionContractTempRepository.SaveChanges(); @@ -714,7 +707,8 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati if (institutionContractTemp.VerifyCodeEndTime != null) { var spaning = (DateTime.Now - institutionContractTemp.VerifyCodeEndTime.Value); - if (institutionContractTemp.RegistrationStatus == "VerifyCodeSent" && spaning > new TimeSpan(0, 0, 0) && spaning < new TimeSpan(0, 1, 0)) + if (institutionContractTemp.RegistrationStatus == "VerifyCodeSent" && spaning > new TimeSpan(0, 0, 0) && + spaning < new TimeSpan(0, 1, 0)) return op.Failed("شما به تازگی پیامک دریافت نموده اید دو دقیقه صبر کنید و دوباره تلاش کنید"); } @@ -726,17 +720,16 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati var contractstart = DateTime.Now; var contractEnd = DateTime.Now.AddMonths(periodModelInt); var update = _institutionContractTempRepository.Get(institutionContractTemp.Id); - update.Edit(contractingPartyTempId, paymentModel, periodModel, totalPayment, contractStartDate, contractEndDate, "official", valueAddedTax, "", "BeforeSendVerifyCode", 0, null, null); + update.Edit(contractingPartyTempId, paymentModel, periodModel, totalPayment, contractStartDate, + contractEndDate, "official", valueAddedTax, "", "BeforeSendVerifyCode", 0, null, null); _institutionContractTempRepository.SaveChanges(); - + //temporary var res = await PayOffCompleted(contractingPartyTempId); if (!res.IsSuccedded) return op.Failed(res.Message); return op.Succcedded(); } - - } @@ -748,27 +741,25 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati /// public async Task ReceivedCodeFromServer(long contractingPartyTempId) { - var op = new OperationResult(); var institutionContractTemp = await - _institutionContractTempRepository.GetInstitutionContractTemp(0, contractingPartyTempId); + _institutionContractTempRepository.GetInstitutionContractTemp(0, contractingPartyTempId); if (institutionContractTemp == null) return op.Failed("خطا"); var update = _institutionContractTempRepository.Get(institutionContractTemp.Id); - - if (institutionContractTemp.RegistrationStatus == "BeforeSendVerifyCode") { //ساخت کد شش رقمی Random generator = new Random(); String code = generator.Next(1, 1000000).ToString("D6"); //ارسال اس ام اس - var getContractingPaty = _contractingPartyTempRepository.GetByContractingPartyTempId(contractingPartyTempId); + var getContractingPaty = + _contractingPartyTempRepository.GetByContractingPartyTempId(contractingPartyTempId); var sendResult = await _smsService.SendVerifyCodeToClient(getContractingPaty.Phone, code); if (!sendResult.IsSuccedded) @@ -784,14 +775,11 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati _institutionContractTempRepository.SaveChanges(); return op.Succcedded(1, "کد برای شما پیامک شد"); } - - } if (institutionContractTemp.RegistrationStatus == "VerifyCodeSent") { - if (DateTime.Now < institutionContractTemp.VerifyCodeEndTime.Value) return op.Failed("کد دریافت شده را وارد کنید"); var spaning = (DateTime.Now - institutionContractTemp.VerifyCodeEndTime.Value); @@ -804,14 +792,14 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati Random generator = new Random(); String code = generator.Next(1, 1000000).ToString("D6"); //ارسال اس ام اس - var getContractingPaty = _contractingPartyTempRepository.GetByContractingPartyTempId(contractingPartyTempId); + var getContractingPaty = + _contractingPartyTempRepository.GetByContractingPartyTempId(contractingPartyTempId); var sendResult = await _smsService.SendVerifyCodeToClient(getContractingPaty.Phone, code); if (!sendResult.IsSuccedded) return op.Failed($"{sendResult.Message}"); - //ذخیره کد در دیتا بیس //ذخیره تاریخ ارسال و مهلت پایان //ذخیره آیدی پیامک @@ -819,15 +807,12 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati if (update != null) { - update.Update(code, "VerifyCodeSent", sendResult.MessageId, DateTime.Now, DateTime.Now.AddMinutes(2)); + update.Update(code, "VerifyCodeSent", sendResult.MessageId, DateTime.Now, + DateTime.Now.AddMinutes(2)); _institutionContractTempRepository.SaveChanges(); return op.Succcedded(1, "کد برای شما پیامک شد"); } - - - } - } //if (institutionContractTemp.RegistrationStatus == "ReceivedCodeFromClient") @@ -858,19 +843,17 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati if (institutionContractTemp.VerifyCodeEndTime < DateTime.Now) return op.Failed("کد شما منقضی شده است"); - if (institutionContractTemp.SendVerifyCodeTime < DateTime.Now && institutionContractTemp.VerifyCodeEndTime >= DateTime.Now) + if (institutionContractTemp.SendVerifyCodeTime < DateTime.Now && + institutionContractTemp.VerifyCodeEndTime >= DateTime.Now) { if (institutionContractTemp.VerifyCode == verifyCode) { - - return op.Succcedded(); } else { return op.Failed("کد وارد شده صحیح نیست"); } - } @@ -890,7 +873,7 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati var temp = _contractingPartyTempRepository.GetByContractingPartyTempId(contractingPartyTempId); if (_personalContractingPartyRepository.Exists(x => - x.Nationalcode == temp.NationalCode)) + x.Nationalcode == temp.NationalCode)) return op.Failed("امکان ثبت رکورد تکراری وجود ندارد"); var lastArchiveCode = _personalContractingPartyRepository.GetLastArchiveCode(); @@ -902,7 +885,8 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati _personalContractingPartyRepository.Create(personalContractingParty); _personalContractingPartyRepository.SaveChanges(); - personalContractingParty.RegisterComplete(temp.FatherName, temp.IdNumberSeri, temp.IdNumberSerial, temp.DateOfBirth, temp.Gender); + personalContractingParty.RegisterComplete(temp.FatherName, temp.IdNumberSeri, temp.IdNumberSerial, + temp.DateOfBirth, temp.Gender); _personalContractingPartyRepository.SaveChanges(); var institutionContractTemp = await _institutionContractTempRepository.GetInstitutionContractTemp(0, contractingPartyTempId); @@ -917,8 +901,31 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati public async Task> RegistrationWorkflowMainList() { - return await _institutionContractTempRepository.GetAllCompletedRegistration(); } + public async Task CreateInstitutionContractTemp(CreateInstitutionContractTempRequest command) + { + var contractingPartyId = command.ContractingPartyTempId; + + var updateAddressRes = await UpdateAddress(contractingPartyId, command.State, command.City, command.Address); + if (!updateAddressRes.IsSuccedded) + return updateAddressRes; + + var createWorkshopRes = await CreateOrUpdateWorkshopTemp(command.Workshops, contractingPartyId); + if (!createWorkshopRes.IsSuccedded) + return createWorkshopRes; + + var createInstitution = await CreateOrUpdateInstitutionContractTemp(contractingPartyId, command.PeriodModel, + command.PaymentModel, + command.TotalPayment, command.ValueAddedTax, command.ContractStartFa.ToGeorgianDateTime()); + if (!createInstitution.IsSuccedded) + return createInstitution; + + var payOffRes =await PayOffCompleted(contractingPartyId); + if (!payOffRes.IsSuccedded) + return payOffRes; + + return new OperationResult().Succcedded(); + } } \ No newline at end of file diff --git a/ServiceHost/Areas/Admin/Controllers/institutionContractController.cs b/ServiceHost/Areas/Admin/Controllers/institutionContractController.cs index af8c62ea..042b22d3 100644 --- a/ServiceHost/Areas/Admin/Controllers/institutionContractController.cs +++ b/ServiceHost/Areas/Admin/Controllers/institutionContractController.cs @@ -67,71 +67,7 @@ public class institutionContractController : AdminBaseController return await _institutionContractApplication.GetListStats(searchModel); } - /// - /// ایجاد - /// - /// - /// - [HttpPost] - public async Task> Create([FromBody] CreateInstitutionContractRequest command) - { - var op = new OperationResult(); - var counter = command.ContactInfos.Count; - //if (string.IsNullOrWhiteSpace(command.HasValueAddedTax)) - // command.HasValueAddedTax = "false"; - var phone = command.ContactInfos.FirstOrDefault(x => - x.SendSmsString == "true" && x.Position == "طرف قرارداد" && x.PhoneType == "شماره همراه"); - var conractingParty = _contractingPartyApplication.GetDetails(command.ContractingPartyId); - if (conractingParty.IsLegal == "حقیقی" && string.IsNullOrWhiteSpace(conractingParty.Nationalcode)) - return new JsonResult(op.Failed("کد ملی طرف حساب وجود ندارد")); - if (conractingParty.IsLegal == "حقوقی" && string.IsNullOrWhiteSpace(conractingParty.NationalId)) - return new JsonResult(op.Failed("شناسه ملی طرف حساب وجود ندارد")); - var result = await _institutionContractApplication.CreateAsync(command); - if (result.IsSuccedded && counter > 0) - { - for (var i = 0; i <= counter - 1; i++) - { - if (command.ContactInfos[i].PhoneNumber != null) - { - var contactinfo = new CreateContactInfo - { - InstitutionContractId = result.SendId, - PhoneType = command.ContactInfos[i].PhoneType, - Position = command.ContactInfos[i].Position, - PhoneNumber = command.ContactInfos[i].PhoneNumber, - FnameLname = command.ContactInfos[i].FnameLname, - SendSms = command.ContactInfos[i].SendSmsString == "true" ? true : false - }; - _contactInfoApplication.Create(contactinfo); - } - - Thread.Sleep(500); - } - - - if (phone != null) - { - var userPass = conractingParty.IsLegal == "حقیقی" - ? conractingParty.Nationalcode - : conractingParty.NationalId; - var createAcc = new RegisterAccount - { - Fullname = conractingParty.LName, - Username = userPass, - Password = userPass, - Mobile = phone.PhoneNumber, - NationalCode = userPass - }; - var res = _accountApplication.RegisterClient(createAcc); - if (res.IsSuccedded) - _institutionContractApplication.CreateContractingPartyAccount(command.ContractingPartyId, - res.SendId); - } - } - - return new JsonResult(result); - } /// /// ویرایش @@ -671,18 +607,29 @@ public class institutionContractController : AdminBaseController request.workshopList, request.PeriodModel, request.PaymentModel, request.ContractStartType); return res; } - + + /// + /// ایجاد + /// + /// + /// + [HttpPost] + public async Task> Create([FromBody] CreateInstitutionContractTempRequest command) + { + return await _temporaryClientRegistration.CreateInstitutionContractTemp(command); + } + public record InstitutionPlanCalculatorRequest( long ContractingPartyTempId, List workshopList, string PeriodModel = "12", string PaymentModel = "OneTime", string ContractStartType = "currentMonth"); + public class CreateInquiryRequest + { + public string NationalCode { get; set; } + public string DateOfBirth { get; set; } + public string Mobile { get; set; } + } } -public class CreateInquiryRequest -{ - public string NationalCode { get; set; } - public string DateOfBirth { get; set; } - public string Mobile { get; set; } -} \ No newline at end of file