add temporary institution contract creation functionality

This commit is contained in:
MahanCh
2025-08-16 11:23:29 +03:30
parent 9aa8855a46
commit b2694ca281
3 changed files with 124 additions and 147 deletions

View File

@@ -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
/// </summary>
/// <returns></returns>
Task<List<RegistrationWorkflowMainList>> RegistrationWorkflowMainList();
/// <summary>
/// ایجاد قرارداد مالی برای طرف حساب
/// </summary>
/// <param name="command"></param>
/// <returns></returns>
Task<OperationResult> 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<WorkshopTempViewModel> 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; }
}

View File

@@ -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
/// <param name="dateOfBirth"></param>
/// <param name="mobile"></param>
/// <returns></returns>
public async Task<OperationResult<ContractingPartyTempViewModel>> CreateContractingPartyTemp(string nationalCode, string dateOfBirth, string mobile)
public async Task<OperationResult<ContractingPartyTempViewModel>> CreateContractingPartyTemp(string nationalCode,
string dateOfBirth, string mobile)
{
var op = new OperationResult<ContractingPartyTempViewModel>();
@@ -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);
}
}
/// <summary>
@@ -161,7 +162,6 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
/// <param name="city"></param>
/// <param name="address"></param>
/// <returns></returns>
public async Task<OperationResult> UpdateAddress(long id, string state, string city, string address)
{
var op = new OperationResult();
@@ -191,7 +191,8 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
/// </summary>
/// <param name="command"></param>
/// <returns></returns>
public async Task<OperationResult> CreateOrUpdateWorkshopTemp(List<WorkshopTempViewModel> command, long contractingPartyTempId)
public async Task<OperationResult> CreateOrUpdateWorkshopTemp(List<WorkshopTempViewModel> 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
/// </summary>
/// <param name="contractingPartyTempId"></param>
/// <returns></returns>
public async Task<ReviewAndPaymentViewModel> GetTotalPaymentAndWorkshopList(long contractingPartyTempId, string periodModel = "12", string paymentModel = "OneTime", string contractStartType = "currentMonth")
public async Task<ReviewAndPaymentViewModel> 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<ReviewAndPaymentViewModel> GetTotalPaymentAndWorkshopList(long contractingPartyTempId, List<WorkshopTempViewModel> workshops, string periodModel = "12",
public async Task<ReviewAndPaymentViewModel> GetTotalPaymentAndWorkshopList(long contractingPartyTempId,
List<WorkshopTempViewModel> 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
/// </summary>
/// <param name="contractingPartyTempId"></param>
/// <returns></returns>
public async Task<OperationResult> CreateOrUpdateInstitutionContractTemp(long contractingPartyTempId, string periodModel, string paymentModel, double totalPayment, double valueAddedTax, DateTime contractStart)
public async Task<OperationResult> 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
/// <returns></returns>
public async Task<OperationResult> 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<List<RegistrationWorkflowMainList>> RegistrationWorkflowMainList()
{
return await _institutionContractTempRepository.GetAllCompletedRegistration();
}
public async Task<OperationResult> 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();
}
}

View File

@@ -67,71 +67,7 @@ public class institutionContractController : AdminBaseController
return await _institutionContractApplication.GetListStats(searchModel);
}
/// <summary>
/// ایجاد
/// </summary>
/// <param name="command"></param>
/// <returns></returns>
[HttpPost]
public async Task<ActionResult<OperationResult>> 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);
}
/// <summary>
/// ویرایش
@@ -671,18 +607,29 @@ public class institutionContractController : AdminBaseController
request.workshopList, request.PeriodModel, request.PaymentModel, request.ContractStartType);
return res;
}
/// <summary>
/// ایجاد
/// </summary>
/// <param name="command"></param>
/// <returns></returns>
[HttpPost]
public async Task<ActionResult<OperationResult>> Create([FromBody] CreateInstitutionContractTempRequest command)
{
return await _temporaryClientRegistration.CreateInstitutionContractTemp(command);
}
public record InstitutionPlanCalculatorRequest(
long ContractingPartyTempId,
List<WorkshopTempViewModel> 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; }
}