diff --git a/Company.Domain/ContarctingPartyAgg/PersonalContractingParty.cs b/Company.Domain/ContarctingPartyAgg/PersonalContractingParty.cs index 7097b061..a3fa2c40 100644 --- a/Company.Domain/ContarctingPartyAgg/PersonalContractingParty.cs +++ b/Company.Domain/ContarctingPartyAgg/PersonalContractingParty.cs @@ -213,4 +213,14 @@ public class PersonalContractingParty : EntityBase this.Gender = gender; this.IsAuthenticated = true; } + + public void RegisterComplete(string fatherName, string idNumberSeri, string idNumberSerial, DateTime dateOfBirth, Gender gender) + { + this.FatherName = fatherName; + this.IdNumberSeri = idNumberSeri; + this.IdNumberSerial = idNumberSerial; + this.DateOfBirth = dateOfBirth; + this.Gender = gender; + this.IsAuthenticated = true; + } } \ No newline at end of file diff --git a/Company.Domain/TemporaryClientRegistrationAgg/IInstitutionContractTempRepository.cs b/Company.Domain/TemporaryClientRegistrationAgg/IInstitutionContractTempRepository.cs index 7d9fe9a7..60212417 100644 --- a/Company.Domain/TemporaryClientRegistrationAgg/IInstitutionContractTempRepository.cs +++ b/Company.Domain/TemporaryClientRegistrationAgg/IInstitutionContractTempRepository.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System.Collections.Generic; +using System.Threading.Tasks; using _0_Framework_b.Domain; using CompanyManagment.App.Contracts.TemporaryClientRegistration; @@ -15,4 +16,11 @@ public interface IInstitutionContractTempRepository : IRepository /// Task GetInstitutionContractTemp(long id,long contractingPartyTempId); + + /// + /// دریافت لیست طرف حساب هایی که ثبت نام آنها تکمیل شده + /// جهت نمایش در کارپوشه + /// + /// + Task> GetAllCompletedRegistration(); } \ No newline at end of file diff --git a/Company.Domain/TemporaryClientRegistrationAgg/InstitutionContractTemp.cs b/Company.Domain/TemporaryClientRegistrationAgg/InstitutionContractTemp.cs index e0905e71..198c3737 100644 --- a/Company.Domain/TemporaryClientRegistrationAgg/InstitutionContractTemp.cs +++ b/Company.Domain/TemporaryClientRegistrationAgg/InstitutionContractTemp.cs @@ -131,6 +131,9 @@ public class InstitutionContractTemp : EntityBase VerifyCodeEndTime = verifyCodeEndTime; } - + public void ChangeRegistrationStatus(string registrationStatus) + { + RegistrationStatus = registrationStatus; + } } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/TemporaryClientRegistration/ITemporaryClientRegistrationApplication.cs b/CompanyManagment.App.Contracts/TemporaryClientRegistration/ITemporaryClientRegistrationApplication.cs index 6e654328..6de66312 100644 --- a/CompanyManagment.App.Contracts/TemporaryClientRegistration/ITemporaryClientRegistrationApplication.cs +++ b/CompanyManagment.App.Contracts/TemporaryClientRegistration/ITemporaryClientRegistrationApplication.cs @@ -93,4 +93,11 @@ public interface ITemporaryClientRegistrationApplication /// /// Task PayOffCompleted(long contractingPartyTempId); + + /// + /// دریافت لیست طرف حساب هایی که ثبت نام آنها تکمیل شده + /// جهت نمایش در کارپوشه + /// + /// + Task> RegistrationWorkflowMainList(); } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/TemporaryClientRegistration/RegistrationWorkflowMainList.cs b/CompanyManagment.App.Contracts/TemporaryClientRegistration/RegistrationWorkflowMainList.cs new file mode 100644 index 00000000..773a3130 --- /dev/null +++ b/CompanyManagment.App.Contracts/TemporaryClientRegistration/RegistrationWorkflowMainList.cs @@ -0,0 +1,21 @@ +namespace CompanyManagment.App.Contracts.TemporaryClientRegistration; + +public class RegistrationWorkflowMainList +{ + /// + /// آی دی طرف حساب ثبت شده موقت + /// + public long ContractingPartyTempId { get; set; } + + + /// + /// نام کامل طرف حساب + /// + public string ContractingPartyFullName { get; set; } + + /// + /// شماره همراه + /// + public string Phone { get; set; } + +} \ No newline at end of file diff --git a/CompanyManagment.Application/TemporaryClientRegistrationApplication.cs b/CompanyManagment.Application/TemporaryClientRegistrationApplication.cs index 855ca8bc..a74e1df6 100644 --- a/CompanyManagment.Application/TemporaryClientRegistrationApplication.cs +++ b/CompanyManagment.Application/TemporaryClientRegistrationApplication.cs @@ -13,6 +13,7 @@ using CompanyManagment.App.Contracts.TemporaryClientRegistration; using IPE.SmsIrClient.Models.Results; using Microsoft.EntityFrameworkCore; using PersianTools.Core; +using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database; namespace CompanyManagment.Application; @@ -531,6 +532,9 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati { var op = new OperationResult(); + + + var institutionContractTemp = await _institutionContractTempRepository.GetInstitutionContractTemp(0, contractingPartyTempId); var contractStartDate = contractStart; @@ -544,6 +548,11 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati var create = new InstitutionContractTemp(contractingPartyTempId, paymentModel, periodModel, totalPayment, contractStartDate, contractEndDate, "official", valueAddedTax, "", "BeforeSendVerifyCode", 0, null, null); _institutionContractTempRepository.Create(create); _institutionContractTempRepository.SaveChanges(); + + //temporary + var res = await PayOffCompleted(contractingPartyTempId); + if (!res.IsSuccedded) + return op.Failed(res.Message); return op.Succcedded(); } else @@ -565,6 +574,11 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati var update = _institutionContractTempRepository.Get(institutionContractTemp.Id); 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(); } @@ -582,8 +596,10 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati { var op = new OperationResult(); + + var institutionContractTemp = await - _institutionContractTempRepository.GetInstitutionContractTemp(0, contractingPartyTempId); + _institutionContractTempRepository.GetInstitutionContractTemp(0, contractingPartyTempId); if (institutionContractTemp == null) return op.Failed("خطا"); @@ -717,7 +733,38 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati public async Task PayOffCompleted(long contractingPartyTempId) { var op = new OperationResult(); + + var temp = _contractingPartyTempRepository.GetByContractingPartyTempId(contractingPartyTempId); + if (_personalContractingPartyRepository.Exists(x => + x.Nationalcode == temp.NationalCode)) + return op.Failed("امکان ثبت رکورد تکراری وجود ندارد"); + + var lastArchiveCode = _personalContractingPartyRepository.GetLastArchiveCode(); + var personalContractingParty = new PersonalContractingParty(temp.FName, temp.LName, + temp.NationalCode, temp.IdNumber, "*", "*", + "حقیقی", + temp.Phone, null, temp.Address, 1, "-", lastArchiveCode, + temp.State, temp.City, null, null); + _personalContractingPartyRepository.Create(personalContractingParty); + _personalContractingPartyRepository.SaveChanges(); + + personalContractingParty.RegisterComplete(temp.FatherName, temp.IdNumberSeri, temp.IdNumberSerial, temp.DateOfBirth, temp.Gender); + _personalContractingPartyRepository.SaveChanges(); + var institutionContractTemp = await + _institutionContractTempRepository.GetInstitutionContractTemp(0, contractingPartyTempId); + var update = _institutionContractTempRepository.Get(institutionContractTemp.Id); + update.ChangeRegistrationStatus("Completed"); + _institutionContractTempRepository.SaveChanges(); + + return op.Succcedded(); } + + public async Task> RegistrationWorkflowMainList() + { + + return await _institutionContractTempRepository.GetAllCompletedRegistration(); + } + } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/InstitutionContractTempRepository.cs b/CompanyManagment.EFCore/Repository/InstitutionContractTempRepository.cs index 20cd267f..29cb8c30 100644 --- a/CompanyManagment.EFCore/Repository/InstitutionContractTempRepository.cs +++ b/CompanyManagment.EFCore/Repository/InstitutionContractTempRepository.cs @@ -1,4 +1,5 @@ -using System.Linq; +using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using _0_Framework.InfraStructure; using Company.Domain.TemporaryClientRegistrationAgg; @@ -46,4 +47,20 @@ public class InstitutionContractTempRepository : RepositoryBase> GetAllCompletedRegistration() + { + return await _context.InstitutionContractTemps.Where(x => x.RegistrationStatus == "Completed") + .Join(_context.ContractingPartyTemps, + institutionContract => institutionContract.ContractingPartyTempId, + contractingParty => contractingParty.id, + (institutionContract, contractingParty) => new { institutionContract, contractingParty }).Select(x => + new RegistrationWorkflowMainList + { + ContractingPartyTempId = x.contractingParty.id, + ContractingPartyFullName = $"{x.contractingParty.FName} {x.contractingParty.LName}", + Phone = x.contractingParty.Phone + + }).ToListAsync(); + } } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/PersonalContractingPartyRepository.cs b/CompanyManagment.EFCore/Repository/PersonalContractingPartyRepository.cs index 6d9bfaba..abf99bab 100644 --- a/CompanyManagment.EFCore/Repository/PersonalContractingPartyRepository.cs +++ b/CompanyManagment.EFCore/Repository/PersonalContractingPartyRepository.cs @@ -233,8 +233,10 @@ public class PersonalContractingPartyRepository : RepositoryBase SearchByName(string name) + + + #region Mahan + public List SearchByName(string name) { var contractingParties = _context.PersonalContractingParties.Select(x => new PersonalContractingPartyViewModel() { diff --git a/ServiceHost/Areas/Admin/Controllers/RegistrationWorkflowController.cs b/ServiceHost/Areas/Admin/Controllers/RegistrationWorkflowController.cs new file mode 100644 index 00000000..5e0c5f61 --- /dev/null +++ b/ServiceHost/Areas/Admin/Controllers/RegistrationWorkflowController.cs @@ -0,0 +1,28 @@ +using CompanyManagment.App.Contracts.AdminMonthlyOverview; +using CompanyManagment.App.Contracts.TemporaryClientRegistration; +using Microsoft.AspNetCore.Mvc; +using ServiceHost.BaseControllers; + +namespace ServiceHost.Areas.Admin.Controllers +{ + public class RegistrationWorkflowController : AdminBaseController + { + private readonly ITemporaryClientRegistrationApplication _temporaryClientRegistrationApplication; + + public RegistrationWorkflowController(ITemporaryClientRegistrationApplication temporaryClientRegistrationApplication) + { + _temporaryClientRegistrationApplication = temporaryClientRegistrationApplication; + } + + /// + /// لیست کارپوشه ثبت نام + /// + /// + [HttpGet("")] + public async Task>> GetList() + { + var result = await _temporaryClientRegistrationApplication.RegistrationWorkflowMainList(); + return result; + } + } +}