Registration Worklow api

This commit is contained in:
SamSys
2025-07-08 08:29:36 +03:30
parent 45a4a735ca
commit 87f8517afb
9 changed files with 149 additions and 6 deletions

View File

@@ -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;
}
}

View File

@@ -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<long, Institut
/// <param name="contractingPartyId"></param>
/// <returns></returns>
Task<InstitutionContractTempViewModel> GetInstitutionContractTemp(long id,long contractingPartyTempId);
/// <summary>
/// دریافت لیست طرف حساب هایی که ثبت نام آنها تکمیل شده
/// جهت نمایش در کارپوشه
/// </summary>
/// <returns></returns>
Task<List<RegistrationWorkflowMainList>> GetAllCompletedRegistration();
}

View File

@@ -131,6 +131,9 @@ public class InstitutionContractTemp : EntityBase
VerifyCodeEndTime = verifyCodeEndTime;
}
public void ChangeRegistrationStatus(string registrationStatus)
{
RegistrationStatus = registrationStatus;
}
}

View File

@@ -93,4 +93,11 @@ public interface ITemporaryClientRegistrationApplication
/// <param name="verifyCode"></param>
/// <returns></returns>
Task<OperationResult> PayOffCompleted(long contractingPartyTempId);
/// <summary>
/// دریافت لیست طرف حساب هایی که ثبت نام آنها تکمیل شده
/// جهت نمایش در کارپوشه
/// </summary>
/// <returns></returns>
Task<List<RegistrationWorkflowMainList>> RegistrationWorkflowMainList();
}

View File

@@ -0,0 +1,21 @@
namespace CompanyManagment.App.Contracts.TemporaryClientRegistration;
public class RegistrationWorkflowMainList
{
/// <summary>
/// آی دی طرف حساب ثبت شده موقت
/// </summary>
public long ContractingPartyTempId { get; set; }
/// <summary>
/// نام کامل طرف حساب
/// </summary>
public string ContractingPartyFullName { get; set; }
/// <summary>
/// شماره همراه
/// </summary>
public string Phone { get; set; }
}

View File

@@ -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<OperationResult> 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<List<RegistrationWorkflowMainList>> RegistrationWorkflowMainList()
{
return await _institutionContractTempRepository.GetAllCompletedRegistration();
}
}

View File

@@ -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<long, Institutio
MessageId = x.MessageId
}).FirstOrDefaultAsync();
}
public async Task<List<RegistrationWorkflowMainList>> 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();
}
}

View File

@@ -233,8 +233,10 @@ public class PersonalContractingPartyRepository : RepositoryBase<long, PersonalC
return 1;
}
}
#region Mahan
public List<string> SearchByName(string name)
#region Mahan
public List<string> SearchByName(string name)
{
var contractingParties = _context.PersonalContractingParties.Select(x => new PersonalContractingPartyViewModel()
{

View File

@@ -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;
}
/// <summary>
/// لیست کارپوشه ثبت نام
/// </summary>
/// <returns></returns>
[HttpGet("")]
public async Task<ActionResult<List<RegistrationWorkflowMainList>>> GetList()
{
var result = await _temporaryClientRegistrationApplication.RegistrationWorkflowMainList();
return result;
}
}
}