TemporaryClientRegister - Compelet edcreatWorkshopTemp

This commit is contained in:
SamSys
2025-04-09 19:18:00 +03:30
parent de54e609c8
commit 03ee772974
10 changed files with 943 additions and 615 deletions

View File

@@ -1,8 +1,14 @@
using _0_Framework.Domain;
using System.Collections.Generic;
using _0_Framework.Domain;
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
namespace Company.Domain.TemporaryClientRegistrationAgg;
public interface IWorkshopServicesTempRepository : IRepository<long, WorkshopServicesTemp>
{
/// <summary>
/// حذف کامل سرویس های کارگاه
/// </summary>
/// <param name="workshopTempId"></param>
public void RemoveServices(long workshopTempId);
}

View File

@@ -11,6 +11,10 @@ namespace Company.Domain.YearlySalaryAgg;
public interface IYearlySalaryRepository : IRepository<long, YearlySalary>
{
/// <summary>
/// تست محاسبه مزد پایه
/// </summary>
void TestDayliFeeCompute();
List<string> GetYears();
List<YearlySalaryViewModel> GetYearlySalary();
MontlywageBunosYearsViewModel GetMontlyBunosYears(TimeSpan weeklyTime, DateTime contractStart,DateTime contractEnd, double daylyWage, string weeklyWorkingTime, int officialholiday, int friday, string totalHoursH, string totalHorsM, string basic, int fridayStartToEnd, double dayliFeeComplete, bool hasRollCall, bool holidaysWorking);

View File

@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using _0_Framework.Application;
using CompanyManagment.App.Contracts.InstitutionPlan;
namespace CompanyManagment.App.Contracts.TemporaryClientRegistration;
@@ -38,4 +39,11 @@ public interface ITemporaryClientRegistrationApplication
/// <param name="command"></param>
/// <returns></returns>
Task<OperationResult> CreateOrUpdateWorkshopTemp(List<WorkshopTempViewModel> command);
/// <summary>
/// دریافت جمع کل خدمات برای یک کارگاه
/// </summary>
/// <param name="workshop"></param>
/// <returns></returns>
InstitutionPlanViewModel GetInstitutionPlanForWorkshop(WorkshopTempViewModel workshop);
}

View File

@@ -0,0 +1,80 @@
namespace CompanyManagment.App.Contracts.TemporaryClientRegistration;
public class ReviewAndPaymentViewModel
{
/// <summary>
/// جمع کل برای یک ماه
/// double
/// </summary>
public double TotalPayment1MonthDouble { get; set; }
/// <summary>
/// جمع کل برای یک ماه
/// string
/// </summary>
public string TotalPayment1MonthStr { get; set; }
/// <summary>
/// آیا یک ماهه انتخاب شده است
/// </summary>
public bool IsSelected1 { get; set; }
/// <summary>
/// جمع کل برای 3 ماه
/// double
/// </summary>
public double TotalPayment3MonthsDouble { get; set; }
/// <summary>
/// جمع کل برای 3 ماه
/// string
/// </summary>
public string TotalPayment3MonthsStr { get; set; }
/// <summary>
/// آیا 3 ماهه انتخاب شده است
/// </summary>
public bool IsSelected3 { get; set; }
/// <summary>
/// جمع کل برای 6 ماه
/// double
/// </summary>
public double TotalPayment6MonthsDouble { get; set; }
/// <summary>
/// جمع کل برای 6 ماه
/// string
/// </summary>
public string TotalPayment6MonthsStr { get; set; }
/// <summary>
/// آیا 6 ماهه انتخاب شده است
/// </summary>
public bool IsSelected6 { get; set; }
/// <summary>
/// جمع کل برای 12 ماه
/// double
/// </summary>
public double TotalPayment12MonthsDouble { get; set; }
/// <summary>
/// جمع کل برای 12 ماه
/// string
/// </summary>
public string TotalPayment12MonthsStr { get; set; }
/// <summary>
/// آیا 12 ماهه انتخاب شده است
/// </summary>
public bool IsSelected12 { get; set; }
}

View File

@@ -1,6 +1,9 @@
namespace CompanyManagment.App.Contracts.TemporaryClientRegistration;
using System;
public class WorkshopServicesTempViewModel
namespace CompanyManagment.App.Contracts.TemporaryClientRegistration;
public class WorkshopServicesTempViewModel : CreateWorkshopServicesTemp
{
public long Id { get; set; }
public DateTime CreationDate{ get; set; }
}

View File

@@ -20,15 +20,17 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
private readonly IUidService _uidService;
private readonly IWorkshopTempRepository _workshopTempRepository;
private readonly IPlanPercentageRepository _planPercentageRepository;
private readonly IWorkshopServicesTempRepository _workshopServicesTempRepository;
public TemporaryClientRegistrationApplication(IContractingPartyTempRepository contractingPartyTempRepository, IPersonalContractingPartyRepository personalContractingPartyRepository, IUidService uidService, IWorkshopTempRepository workshopTempRepository, IPlanPercentageRepository planPercentageRepository)
public TemporaryClientRegistrationApplication(IContractingPartyTempRepository contractingPartyTempRepository, IPersonalContractingPartyRepository personalContractingPartyRepository, IUidService uidService, IWorkshopTempRepository workshopTempRepository, IPlanPercentageRepository planPercentageRepository, IWorkshopServicesTempRepository workshopServicesTempRepository)
{
_contractingPartyTempRepository = contractingPartyTempRepository;
_personalContractingPartyRepository = personalContractingPartyRepository;
_uidService = uidService;
_workshopTempRepository = workshopTempRepository;
_planPercentageRepository = planPercentageRepository;
_workshopServicesTempRepository = workshopServicesTempRepository;
}
/// <summary>
@@ -38,7 +40,7 @@ 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>();
@@ -48,14 +50,14 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
string.IsNullOrWhiteSpace(mobile))
return op.Failed("هیچ یک از فیلد ها نمیتواند خالی باشد");
if (nationalCode.NationalCodeValid() != "valid")
return op.Failed("کد ملی نا معتبر است");
if(!dateOfBirth.IsPersianDateValid())
if (!dateOfBirth.IsPersianDateValid())
return op.Failed("تاریخ تولد نا معتبر است");
if(!mobile.IsMobileValid())
if (!mobile.IsMobileValid())
return op.Failed("شماره همراه نا معتبر است");
#endregion
@@ -79,8 +81,8 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
//اگر طرف حساب موقت قبلا ایجاد شده دیتای آن را برمیگرداند
if (getExistTemp != null)
{
if(getExistTemp.DateOfBirth != dateOfBirthGr)
if (getExistTemp.DateOfBirth != dateOfBirthGr)
return op.Failed("تاریخ تولد مطابقت ندارد");
if (getExistTemp.Phone != mobile)
return op.Failed("شما قبلا با شماره همراه دیگری ثبت نام نموده اید");
@@ -91,13 +93,13 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
var isMachMobilAndNationalCode = await _uidService.IsMachPhoneWithNationalCode(nationalCode, mobile);
if (isMachMobilAndNationalCode == null)
return op.Failed("خطا در سرویس احراز هویت");
if(!isMachMobilAndNationalCode.IsMatched)
if (!isMachMobilAndNationalCode.IsMatched)
return op.Failed("شماره همراه وارد شده با کد ملی مطابقت ندارد");
//دریافت اطلاعات احراز هویت
var apiRespons = await _uidService.GetPersonalInfo(nationalCode, dateOfBirth);
if(apiRespons == null)
if (apiRespons == null)
return op.Failed("خطا در سرویس احراز هویت");
if (apiRespons.ResponseContext.Status.Code != 0)
return op.Failed($"{apiRespons.ResponseContext.Status.Message}");
@@ -113,19 +115,19 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
apiRespons.IdentificationInformation.ShenasnameSeri,
apiRespons.IdentificationInformation.ShenasnameSerial, apiRespons.BasicInformation.GenderEnum,
dateOfBirthGr);
await _contractingPartyTempRepository.CreateAsync(createTemp);
await _contractingPartyTempRepository.SaveChangesAsync();
await _contractingPartyTempRepository.CreateAsync(createTemp);
await _contractingPartyTempRepository.SaveChangesAsync();
var result = new ContractingPartyTempViewModel();
result.Id = createTemp.id;
result.FName = createTemp.FName;
result.LName = createTemp.LName;
result.DateOfBirthFa = dateOfBirth;
result.IdNumber = idNumber;
var result = new ContractingPartyTempViewModel();
result.Id = createTemp.id;
result.FName = createTemp.FName;
result.LName = createTemp.LName;
result.DateOfBirthFa = dateOfBirth;
result.IdNumber = idNumber;
return op.Succcedded(result);
return op.Succcedded(result);
}
}
@@ -142,15 +144,15 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
public async Task<OperationResult> UpdateAddress(long id, string state, string city, string address)
{
var op = new OperationResult();
var contractingPartyTemp = _contractingPartyTempRepository.Get(id);
var contractingPartyTemp = _contractingPartyTempRepository.Get(id);
if (string.IsNullOrWhiteSpace(state) || string.IsNullOrWhiteSpace(city) || string.IsNullOrWhiteSpace(address))
return op.Failed("اطلاعات ادرس را تکمیل کنید");
if (string.IsNullOrWhiteSpace(state) || string.IsNullOrWhiteSpace(city) || string.IsNullOrWhiteSpace(address))
return op.Failed("اطلاعات ادرس را تکمیل کنید");
contractingPartyTemp.UpdateAddress(state,city,address);
await _contractingPartyTempRepository.SaveChangesAsync();
contractingPartyTemp.UpdateAddress(state, city, address);
await _contractingPartyTempRepository.SaveChangesAsync();
return op.Succcedded();
return op.Succcedded();
}
/// <summary>
@@ -174,13 +176,16 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
var updateWorkshopList = command.Where(x => x.Id > 0).ToList();
var createNewWorkshopList = command.Where(x => x.Id == 0).ToList();
if (updateWorkshopList.Count == 0 && createNewWorkshopList.Count == 0)
return op.Failed("هیچ مجموعه ای ایجاد نشده است");
#region Update
if (updateWorkshopList.Count > 0)
{
foreach (var workshop in updateWorkshopList)
{
if (!string.IsNullOrWhiteSpace(workshop.WorkshopName))
return op.Failed("نام مجموعه نمی تواند خالی باشد");
if (workshop.CountPerson == 0)
@@ -195,21 +200,133 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati
workshop.ContractAndCheckoutInPerson = true;
if (workshop.Insurance)
workshop.InsuranceInPerson = true;
//دریافت مبالغ سرویس ها
var plan = _planPercentageRepository.GetInstitutionPlanForWorkshop(workshop);
if (plan.OnlineAndInPersonSumAmountDouble > 0)
{
//ویرایش مشخصات کارگاه
existWorkshops.Edit(workshop.WorkshopName, workshop.CountPerson, plan.OnlineAndInPersonSumAmountDouble);
await _workshopTempRepository.SaveChangesAsync();
}
}
//حذف سرویس های قبلی
_workshopServicesTempRepository.RemoveServices(workshop.Id);
//سرویس قرداد
if (workshop.ContractAndCheckout)
await _workshopServicesTempRepository.CreateAsync(
new WorkshopServicesTemp("ContractAndCheckout", workshop.CountPerson, workshop.Id));
//سرویس خدمات حضوری قرارداد
if (workshop.ContractAndCheckoutInPerson)
await _workshopServicesTempRepository.CreateAsync(
new WorkshopServicesTemp("ContractAndCheckoutInPerson", workshop.CountPerson, workshop.Id));
//سرویس بیمه
if (workshop.Insurance)
await _workshopServicesTempRepository.CreateAsync(
new WorkshopServicesTemp("Insurance", workshop.CountPerson, workshop.Id));
//سرویس خدمات حضوری بیمه
if (workshop.InsuranceInPerson)
await _workshopServicesTempRepository.CreateAsync(
new WorkshopServicesTemp("InsuranceInPerson", workshop.CountPerson, workshop.Id));
//سرویس حضورغیاب
if (workshop.RollCall)
await _workshopServicesTempRepository.CreateAsync(
new WorkshopServicesTemp("RollCall", workshop.CountPerson, workshop.Id));
//سرویس فیش غیر رسمی
if (workshop.CustomizeCheckout)
await _workshopServicesTempRepository.CreateAsync(
new WorkshopServicesTemp("CustomizeCheckout", workshop.CountPerson, workshop.Id));
}
}
}
}
#endregion
return new OperationResult();
#region Create
if (createNewWorkshopList.Count > 0)
{
foreach (var workshop in createNewWorkshopList)
{
if (!string.IsNullOrWhiteSpace(workshop.WorkshopName))
return op.Failed("نام مجموعه نمی تواند خالی باشد");
if (workshop.CountPerson == 0)
op.Failed($"تعداد پرسنل مجوعه {workshop.WorkshopName} صفر است");
if (workshop.ContractAndCheckout == false && workshop.CustomizeCheckout == false &&
workshop.RollCall == false && workshop.Insurance == false)
op.Failed($"برای مجموعه {workshop.WorkshopName} هیچ سرویسی انتخاب نشده است");
if (workshop.ContractAndCheckout)
workshop.ContractAndCheckoutInPerson = true;
if (workshop.Insurance)
workshop.InsuranceInPerson = true;
//دریافت مبالغ سرویس ها
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));
//سرویس خدمات حضوری قرارداد
if (workshop.ContractAndCheckoutInPerson)
await _workshopServicesTempRepository.CreateAsync(
new WorkshopServicesTemp("ContractAndCheckoutInPerson", workshop.CountPerson, createNewWorkshopTemp.id));
//سرویس بیمه
if (workshop.Insurance)
await _workshopServicesTempRepository.CreateAsync(
new WorkshopServicesTemp("Insurance", workshop.CountPerson, createNewWorkshopTemp.id));
//سرویس خدمات حضوری بیمه
if (workshop.InsuranceInPerson)
await _workshopServicesTempRepository.CreateAsync(
new WorkshopServicesTemp("InsuranceInPerson", workshop.CountPerson, createNewWorkshopTemp.id));
//سرویس حضورغیاب
if (workshop.RollCall)
await _workshopServicesTempRepository.CreateAsync(
new WorkshopServicesTemp("RollCall", workshop.CountPerson, createNewWorkshopTemp.id));
//سرویس فیش غیر رسمی
if (workshop.CustomizeCheckout)
await _workshopServicesTempRepository.CreateAsync(
new WorkshopServicesTemp("CustomizeCheckout", workshop.CountPerson, createNewWorkshopTemp.id));
}
}
}
#endregion
return op.Succcedded();
}
/// <summary>
/// دریافت جمع کل خدمات برای یک کارگاه
/// </summary>
/// <param name="workshop"></param>
/// <returns></returns>
public InstitutionPlanViewModel GetInstitutionPlanForWorkshop(WorkshopTempViewModel workshop)
{
return _planPercentageRepository.GetInstitutionPlanForWorkshop(workshop);
}
public
}

View File

@@ -0,0 +1,28 @@
using System.Collections.Generic;
using System.Linq;
using _0_Framework.InfraStructure;
using Company.Domain.TemporaryClientRegistrationAgg;
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
using Microsoft.EntityFrameworkCore;
namespace CompanyManagment.EFCore.Repository;
public class WorkshopServicesTempRepository : RepositoryBase<long, WorkshopServicesTemp>, IWorkshopServicesTempRepository
{
private readonly CompanyContext _context;
public WorkshopServicesTempRepository(CompanyContext context) : base(context)
{
_context = context;
}
public void RemoveServices(long workshopTempId)
{
var getServices = _context.WorkshopServicesTemps.Where(x => x.WorkshopTempId == workshopTempId);
if (getServices.Any())
{
_context.WorkshopServicesTemps.RemoveRange(getServices);
_context.SaveChanges();
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -452,6 +452,9 @@ public class PersonalBootstrapper
services.AddTransient<ITemporaryClientRegistrationApplication, TemporaryClientRegistrationApplication>();
services.AddTransient<IContractingPartyTempRepository, ContractingPartyTempRepository>();
services.AddTransient<IWorkshopTempRepository, WorkshopTempRepository>();
services.AddTransient<IWorkshopServicesTempRepository, WorkshopServicesTempRepository>();
#endregion
services.AddTransient<IRollCallDomainService, RollCallDomainService>();

View File

@@ -14,6 +14,7 @@ using Company.Domain.EmployeeAgg;
using Company.Domain.ReportAgg;
using Company.Domain.RollCallAgg;
using Company.Domain.RollCallAgg.DomainService;
using Company.Domain.YearlySalaryAgg;
using CompanyManagment.App.Contracts.AndroidApkVersion;
using CompanyManagment.App.Contracts.InstitutionPlan;
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
@@ -49,14 +50,14 @@ namespace ServiceHost.Pages
private readonly IWebHostEnvironment _webHostEnvironment;
private readonly IAndroidApkVersionApplication _androidApkVersionApplication;
private readonly ITemporaryClientRegistrationApplication _clientRegistrationApplication;
private readonly IYearlySalaryRepository _yearlySalaryRepository;
public IndexModel(ILogger<IndexModel> logger, IAccountApplication accountApplication, IGoogleRecaptcha googleRecaptcha, ISmsService smsService, IWorker worker,
IAuthHelper authHelper, ICameraAccountApplication cameraAccountApplication, IWebHostEnvironment webHostEnvironment,
IAndroidApkVersionApplication androidApkVersionApplication, ITemporaryClientRegistrationApplication clientRegistrationApplication)
IAndroidApkVersionApplication androidApkVersionApplication, ITemporaryClientRegistrationApplication clientRegistrationApplication, IYearlySalaryRepository yearlySalaryRepository)
{
_logger = logger;
_accountApplication = accountApplication;
@@ -68,10 +69,12 @@ namespace ServiceHost.Pages
_webHostEnvironment = webHostEnvironment;
_androidApkVersionApplication = androidApkVersionApplication;
_clientRegistrationApplication = clientRegistrationApplication;
_yearlySalaryRepository = yearlySalaryRepository;
}
public IActionResult OnGet()
{
//_yearlySalaryRepository.TestDayliFeeCompute();
bool ex = false;
//while (!ex)
//{