From 7ccf6008853bd7a11dd1eaffdc44fb49177305cc Mon Sep 17 00:00:00 2001 From: MahanCh Date: Mon, 25 Aug 2025 16:23:14 +0330 Subject: [PATCH 1/4] feat: add contact info creation and account registration in institution contract process --- .../CreateInstitutionContractRequest.cs | 1 + .../InstitutionContractApplication.cs | 84 +++++++++++++++---- 2 files changed, 70 insertions(+), 15 deletions(-) diff --git a/CompanyManagment.App.Contracts/InstitutionContract/CreateInstitutionContractRequest.cs b/CompanyManagment.App.Contracts/InstitutionContract/CreateInstitutionContractRequest.cs index 0cdcbf0b..6d2fda57 100644 --- a/CompanyManagment.App.Contracts/InstitutionContract/CreateInstitutionContractRequest.cs +++ b/CompanyManagment.App.Contracts/InstitutionContract/CreateInstitutionContractRequest.cs @@ -98,6 +98,7 @@ public class CreateInstitutionContractRequest /// مالیات ارزش افزوده /// public double TaxAmount { get; set; } + } /// /// مدت زمان قرارداد نهاد diff --git a/CompanyManagment.Application/InstitutionContractApplication.cs b/CompanyManagment.Application/InstitutionContractApplication.cs index ecd7c09d..9d7f9a86 100644 --- a/CompanyManagment.Application/InstitutionContractApplication.cs +++ b/CompanyManagment.Application/InstitutionContractApplication.cs @@ -2,10 +2,12 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; +using System.Threading; using System.Threading.Tasks; using _0_Framework.Application; using _0_Framework.Application.Enums; using _0_Framework.Exceptions; +using AccountManagement.Application.Contracts.Account; using Company.Domain.ContarctingPartyAgg; using Company.Domain.EmployeeAgg; using Company.Domain.empolyerAgg; @@ -18,6 +20,7 @@ using Company.Domain.TemporaryClientRegistrationAgg; using Company.Domain.WorkshopAgg; using CompanyManagment.App.Contracts.FinancialStatment; using CompanyManagment.App.Contracts.InstitutionContract; +using CompanyManagment.App.Contracts.InstitutionContractContactinfo; using CompanyManagment.App.Contracts.PersonalContractingParty; using CompanyManagment.App.Contracts.Workshop; using CompanyManagment.EFCore.Migrations; @@ -39,6 +42,8 @@ public class InstitutionContractApplication : IInstitutionContractApplication private readonly IWorkshopApplication _workshopApplication; private readonly IContractingPartyTempRepository _contractingPartyTempRepository; private readonly IFinancialStatmentRepository _financialStatmentRepository; + private readonly IContactInfoApplication _contactInfoApplication; + private readonly IAccountApplication _accountApplication; public InstitutionContractApplication(IInstitutionContractRepository institutionContractRepository, @@ -46,7 +51,9 @@ public class InstitutionContractApplication : IInstitutionContractApplication IRepresentativeRepository representativeRepository, IEmployerRepository employerRepository, IWorkshopRepository workshopRepository, ILeftWorkRepository leftWorkRepository, IFinancialStatmentApplication financialStatmentApplication, IWorkshopApplication workshopApplication, - IContractingPartyTempRepository contractingPartyTempRepository, IFinancialStatmentRepository financialStatmentRepository) + IContractingPartyTempRepository contractingPartyTempRepository, + IFinancialStatmentRepository financialStatmentRepository, IContactInfoApplication contactInfoApplication, + IAccountApplication accountApplication) { _institutionContractRepository = institutionContractRepository; _contractingPartyRepository = contractingPartyRepository; @@ -58,6 +65,8 @@ public class InstitutionContractApplication : IInstitutionContractApplication _workshopApplication = workshopApplication; _contractingPartyTempRepository = contractingPartyTempRepository; _financialStatmentRepository = financialStatmentRepository; + _contactInfoApplication = contactInfoApplication; + _accountApplication = accountApplication; } public OperationResult Create(CreateInstitutionContract command) @@ -942,9 +951,9 @@ public class InstitutionContractApplication : IInstitutionContractApplication contractStartGr.AddMonthsFa((int)command.Duration, out var contractEndGr); contractEndGr = contractEndGr.ToFarsi().FindeEndOfMonth().ToGeorgianDateTime(); - + var today = DateTime.Today; - + var contractDateGr = today; var contractDateFa = contractDateGr.ToFarsi(); @@ -967,33 +976,33 @@ public class InstitutionContractApplication : IInstitutionContractApplication var workshopDetails = command.Workshops.Select(x => new InstitutionContractWorkshopDetail(x.WorkshopName, x.HasRollCallPlan, x.HasCustomizeCheckoutPlan, - x.HasContractPlan, x.PersonnelCount,x.Price)).ToList(); + x.HasContractPlan, x.PersonnelCount, x.Price)).ToList(); - var financialStatement = new FinancialStatment(contractingParty.id,contractingPartyFullName); + var financialStatement = new FinancialStatment(contractingParty.id, contractingPartyFullName); if (command.IsInstallment) { - var installments = + var installments = CalculateInstallment(command.TotalAmount, (int)command.Duration, command.ContractStartFa, true); - + // دریافت مبلغ اولین قسط //این کار برای این هست که اولین قسط باید با تاریخ امروز باشد و باید به وضعیت مالی بدهی ایجاد شود که یوزر اولین بدهی را وارد کند var firstInstallmentAmount = installments.First().Amount; - + // حذف اولین قسط installments.RemoveAt(0); - + // ایجاد قسط جدید با تاریخ امروز var todayInstallment = new InstitutionContractInstallment(DateTime.Today, firstInstallmentAmount, ""); - - var financialTransaction = new FinancialTransaction(0,today,today.ToFarsi(), - "قسط اول سرویس", "debt","بابت خدمات",firstInstallmentAmount,0,0); - + + var financialTransaction = new FinancialTransaction(0, today, today.ToFarsi(), + "قسط اول سرویس", "debt", "بابت خدمات", firstInstallmentAmount, 0, 0); + financialStatement.AddFinancialTransaction(financialTransaction); - + // اضافه کردن قسط جدید به ابتدای لیست installments.Insert(0, todayInstallment); - + entity.SetInstallments(installments); } else @@ -1007,6 +1016,51 @@ public class InstitutionContractApplication : IInstitutionContractApplication await _financialStatmentRepository.CreateAsync(financialStatement); await _institutionContractRepository.CreateAsync(entity); await _institutionContractRepository.SaveChangesAsync(); + + var mainContactInfo = new CreateContactInfo + { + InstitutionContractId = entity.id, + PhoneType = "شماره همراه", + Position = "طرف قرارداد", + PhoneNumber = contractingParty.Phone, + FnameLname = contractingPartyFullName, + SendSms = true + }; + _contactInfoApplication.Create(mainContactInfo); + + foreach (var contactInfo in command.ContactInfos) + { + if (contactInfo.PhoneNumber != null) + { + var contactinfo = new CreateContactInfo + { + InstitutionContractId = entity.id, + PhoneType = contactInfo.PhoneType, + Position = contactInfo.Position, + PhoneNumber = contactInfo.PhoneNumber, + FnameLname = contactInfo.FnameLname, + SendSms = contactInfo.SendSmsString == "true" ? true : false + }; + _contactInfoApplication.Create(contactinfo); + } + } + + var userPass = contractingParty.IsLegal == "حقیقی" + ? contractingParty.Nationalcode + : contractingParty.NationalId; + var createAcc = new RegisterAccount + { + Fullname = contractingParty.LName, + Username = userPass, + Password = userPass, + Mobile = contractingParty.Phone, + NationalCode = userPass + }; + var res = _accountApplication.RegisterClient(createAcc); + if (res.IsSuccedded) + CreateContractingPartyAccount(contractingParty.id, res.SendId); + + await _institutionContractRepository.SaveChangesAsync(); await transaction.CommitAsync(); return opration.Succcedded(); } From 09574150b6e781f741b523ee4b6d0a80e3366c36 Mon Sep 17 00:00:00 2001 From: MahanCh Date: Mon, 25 Aug 2025 17:06:44 +0330 Subject: [PATCH 2/4] feat: add employer creation functionality and institution workshop detail retrieval --- .../Employer/IEmployerApplication.cs | 50 + .../EmployerApplication.cs | 856 ++++++++++-------- .../InstitutionContractRepository.cs | 8 + .../RegistrationWorkflowController.cs | 15 +- 4 files changed, 552 insertions(+), 377 deletions(-) diff --git a/CompanyManagment.App.Contracts/Employer/IEmployerApplication.cs b/CompanyManagment.App.Contracts/Employer/IEmployerApplication.cs index ca7187c3..68572cae 100644 --- a/CompanyManagment.App.Contracts/Employer/IEmployerApplication.cs +++ b/CompanyManagment.App.Contracts/Employer/IEmployerApplication.cs @@ -1,6 +1,8 @@ using System.Collections.Generic; using System.Threading.Tasks; +using System.Transactions; using _0_Framework.Application; +using _0_Framework.Application.Enums; using CompanyManagment.App.Contracts.Checkout; using CompanyManagment.App.Contracts.Employee; @@ -125,4 +127,52 @@ public interface IEmployerApplication #endregion + Task CreateWorkflowRegistration(CreateEmployerWorkflowRegistration command); +} + +public class CreateEmployerWorkflowRegistration +{ + public CreateRealEmployerWorkflowRegistration RealEmployer { get; set; } + public CreateLegalEmployerWorkflowRegistration LegalEmployer { get; set; } + public LegalType LegalType { get; set; } + public GovernmentSystemInfo GovernmentSystemInfo { get; set; } + public long InstitutionWorkshopDetailsId { get; set; } + public long InstitutionContractId { get; set; } + public long ContractingPartyId { get; set; } + +} + +public class CreateLegalEmployerWorkflowRegistration +{ + public string CompanyName { get; set; } + public string RegisterId { get; set; } + public string NationalId { get; set; } + public Gender Gender { get; set; } + public bool IsAuth { get; set; } + public string CeoNationalCode { get; set; } + public string CeoIdNumber { get; set; } + public string CeoFName { get; set; } + public string CeoLName { get; set; } + public string CeoFatherName { get; set; } + public string CeoDateOfBirth { get; set; } + public string CeoPlaceOfIssue { get; set; } + public string CeoDateOfIssue { get; set; } + public string PhoneNumber { get; set; } + public string TelephoneNumber { get; set; } +} + +public class CreateRealEmployerWorkflowRegistration +{ + public Gender Gender { get; set; } + public bool IsAuth { get; set; } + public string NationalCode { get; set; } + public string IdNumber { get; set; } + public string FName { get; set; } + public string LName { get; set; } + public string FatherName { get; set; } + public string DateOfBirth { get; set; } + public string PhoneNumber { get; set; } + public string PlaceOfIssue { get; set; } + public string DateOfIssue { get; set; } + public string TelephoneNumber { get; set; } } \ No newline at end of file diff --git a/CompanyManagment.Application/EmployerApplication.cs b/CompanyManagment.Application/EmployerApplication.cs index 5a088754..94dd9b66 100644 --- a/CompanyManagment.Application/EmployerApplication.cs +++ b/CompanyManagment.Application/EmployerApplication.cs @@ -1,13 +1,16 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Security.AccessControl; using System.Threading.Tasks; using _0_Framework.Application; +using _0_Framework.Application.Enums; using _0_Framework.Exceptions; using Company.Domain.empolyerAgg; using Company.Domain.WorkshopAgg; using CompanyManagment.App.Contracts.Checkout; using CompanyManagment.App.Contracts.Employer; +using CompanyManagment.EFCore.Repository; namespace CompanyManagment.Application; @@ -23,10 +26,13 @@ public class EmployerApplication : IEmployerApplication public bool registerIdIsOk = true; public bool nationalIdIsOk = true; - public EmployerApplication(IEmployerRepository employerRepository, IWorkshopRepository workshopRepository) + private readonly InstitutionContractRepository _institutionContractRepository; + + public EmployerApplication(IEmployerRepository employerRepository, IWorkshopRepository workshopRepository, InstitutionContractRepository institutionContractRepository) { _EmployerRepository = employerRepository; _workshopRepository = workshopRepository; + _institutionContractRepository = institutionContractRepository; } public OperationResult Active(long id) @@ -46,7 +52,8 @@ public class EmployerApplication : IEmployerApplication { var opration = new OperationResult(); if (_EmployerRepository.Exists(x => - (x.FName == command.FName && x.LName == command.LName) && x.Nationalcode == command.Nationalcode && x.Nationalcode != null)) + (x.FName == command.FName && x.LName == command.LName) && x.Nationalcode == command.Nationalcode && + x.Nationalcode != null)) return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد"); //if (_EmployerRepository.Exists(x => x.IdNumber == command.IdNumber && x.IdNumber != null)) // return opration.Failed("شماره شناسنامه وارد شده تکراری است"); @@ -68,6 +75,7 @@ public class EmployerApplication : IEmployerApplication { numArray[i] = (int)char.GetNumericValue(chArray[i]); } + int num2 = numArray[9]; switch (command.Nationalcode) { @@ -84,9 +92,14 @@ public class EmployerApplication : IEmployerApplication nationalCodValid = false; return opration.Failed("کد ملی وارد شده صحیح نمی باشد"); } - int num3 = ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + (numArray[8] * 2); + + int num3 = + ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + + (numArray[8] * 2); int num4 = num3 - ((num3 / 11) * 11); - if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10) + if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || + ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10) { nationalCodValid = true; } @@ -101,19 +114,27 @@ public class EmployerApplication : IEmployerApplication nationalCodValid = false; return opration.Failed("لطفا کد ملی 10 رقمی وارد کنید"); } - if (_EmployerRepository.Exists(x => x.Nationalcode == command.Nationalcode && !string.IsNullOrWhiteSpace(command.Nationalcode))) + + if (_EmployerRepository.Exists(x => + x.Nationalcode == command.Nationalcode && !string.IsNullOrWhiteSpace(command.Nationalcode))) { nationalcodeIsOk = false; return opration.Failed("کد ملی وارد شده تکراری است"); } } + string initial = "1300/10/11"; - var dateOfBirth = command.DateOfBirth != null ? command.DateOfBirth.ToGeorgianDateTime() : initial.ToGeorgianDateTime(); - var dateOfIssue = command.DateOfIssue != null ? command.DateOfIssue.ToGeorgianDateTime() : initial.ToGeorgianDateTime(); - var employerData = new Employer(command.FName, command.LName, command.ContractingPartyId,command.Gender, + var dateOfBirth = command.DateOfBirth != null + ? command.DateOfBirth.ToGeorgianDateTime() + : initial.ToGeorgianDateTime(); + var dateOfIssue = command.DateOfIssue != null + ? command.DateOfIssue.ToGeorgianDateTime() + : initial.ToGeorgianDateTime(); + var employerData = new Employer(command.FName, command.LName, command.ContractingPartyId, command.Gender, command.Nationalcode, command.IdNumber, command.Nationality, command.FatherName, dateOfBirth, - dateOfIssue, command.PlaceOfIssue, "*","*","*","حقیقی", command.Phone, - command.AgentPhone, "true", command.MclsUserName, command.MclsPassword, command.EserviceUserName, command.EservicePassword, + dateOfIssue, command.PlaceOfIssue, "*", "*", "*", "حقیقی", command.Phone, + command.AgentPhone, "true", command.MclsUserName, command.MclsPassword, command.EserviceUserName, + command.EservicePassword, command.TaxOfficeUserName, command.TaxOfficepassword, command.SanaUserName, command.SanaPassword); _EmployerRepository.Create(employerData); _EmployerRepository.SaveChanges(); @@ -126,25 +147,32 @@ public class EmployerApplication : IEmployerApplication command.EmployerLName = "#"; var opration = new OperationResult(); if (_EmployerRepository.Exists(x => - x.LName == command.LName && x.NationalId == command.NationalId && x.EmployerLName == command.EmployerLName)) + x.LName == command.LName && x.NationalId == command.NationalId && + x.EmployerLName == command.EmployerLName)) return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد"); - if (_EmployerRepository.Exists(x => x.NationalId == command.NationalId && !string.IsNullOrWhiteSpace(command.NationalId) && x.NationalId != null)) + if (_EmployerRepository.Exists(x => + x.NationalId == command.NationalId && !string.IsNullOrWhiteSpace(command.NationalId) && + x.NationalId != null)) { nationalIdIsOk = false; return opration.Failed(" شناسه ملی وارد شده تکراری است"); } + if (_EmployerRepository.Exists(x => x.LName == command.LName)) { nameIsOk = false; return opration.Failed("نام شرکت وارد شده تکراری است"); } - if (_EmployerRepository.Exists(x => x.RegisterId == command.RegisterId && !string.IsNullOrWhiteSpace(command.RegisterId) && x.RegisterId !=null)) + + if (_EmployerRepository.Exists(x => + x.RegisterId == command.RegisterId && !string.IsNullOrWhiteSpace(command.RegisterId) && + x.RegisterId != null)) { registerIdIsOk = false; return opration.Failed(" شماره ثبت وارد شده تکراری است"); } - if (!string.IsNullOrEmpty(command.NationalId )&& command.NationalId.Length !=11) + if (!string.IsNullOrEmpty(command.NationalId) && command.NationalId.Length != 11) { return opration.Failed(" شناسه ملی باید 11 رقم باشد"); } @@ -170,6 +198,7 @@ public class EmployerApplication : IEmployerApplication { numArray[i] = (int)char.GetNumericValue(chArray[i]); } + int num2 = numArray[9]; switch (command.Nationalcode) { @@ -186,9 +215,14 @@ public class EmployerApplication : IEmployerApplication nationalCodValid = false; return opration.Failed("کد ملی وارد شده صحیح نمی باشد"); } - int num3 = ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + (numArray[8] * 2); + + int num3 = + ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + + (numArray[8] * 2); int num4 = num3 - ((num3 / 11) * 11); - if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10) + if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || + ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10) { nationalCodValid = true; } @@ -209,13 +243,20 @@ public class EmployerApplication : IEmployerApplication // return opration.Failed(" کد ملی وارد شده تکراری است"); //} } + string initial = "1300/10/11"; - var dateOfBirth = command.DateOfBirth != null ? command.DateOfBirth.ToGeorgianDateTime() : initial.ToGeorgianDateTime(); - var dateOfIssue = command.DateOfIssue != null ? command.DateOfIssue.ToGeorgianDateTime() : initial.ToGeorgianDateTime(); + var dateOfBirth = command.DateOfBirth != null + ? command.DateOfBirth.ToGeorgianDateTime() + : initial.ToGeorgianDateTime(); + var dateOfIssue = command.DateOfIssue != null + ? command.DateOfIssue.ToGeorgianDateTime() + : initial.ToGeorgianDateTime(); var LegalEmployerData = new Employer(command.FName, command.LName, command.ContractingPartyId, command.Gender, command.Nationalcode, command.IdNumber, command.Nationality, command.FatherName, dateOfBirth, - dateOfIssue, command.PlaceOfIssue, command.RegisterId, command.NationalId, command.EmployerLName, "حقوقی", command.Phone, - command.AgentPhone, "true", command.MclsUserName, command.MclsPassword, command.EserviceUserName, command.EservicePassword, + dateOfIssue, command.PlaceOfIssue, command.RegisterId, command.NationalId, command.EmployerLName, "حقوقی", + command.Phone, + command.AgentPhone, "true", command.MclsUserName, command.MclsPassword, command.EserviceUserName, + command.EservicePassword, command.TaxOfficeUserName, command.TaxOfficepassword, command.SanaUserName, command.SanaPassword); @@ -223,8 +264,6 @@ public class EmployerApplication : IEmployerApplication _EmployerRepository.SaveChanges(); return opration.Succcedded(); - - } public OperationResult DeActive(long id) @@ -252,8 +291,10 @@ public class EmployerApplication : IEmployerApplication } else return opration.Failed("حذف با خطا مواجه نشد"); + return opration; } + public List GetEmployers() { return _EmployerRepository.GetEmployers(); @@ -267,14 +308,13 @@ public class EmployerApplication : IEmployerApplication return opration.Failed("رکورد مورد نظر یافت نشد"); if (_EmployerRepository.Exists(x => - (x.FName == command.FName && x.LName == command.LName) && x.Nationalcode == command.Nationalcode && x.id != command.Id)) + (x.FName == command.FName && x.LName == command.LName) && x.Nationalcode == command.Nationalcode && + x.id != command.Id)) return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد"); if (!string.IsNullOrWhiteSpace(command.Nationalcode)) { try { - - char[] chArray = command.Nationalcode.ToCharArray(); int[] numArray = new int[chArray.Length]; var cunt = chArray.Length; @@ -282,6 +322,7 @@ public class EmployerApplication : IEmployerApplication { numArray[i] = (int)char.GetNumericValue(chArray[i]); } + int num2 = numArray[9]; switch (command.Nationalcode) { @@ -297,39 +338,35 @@ public class EmployerApplication : IEmployerApplication case "9999999999": - nationalCodValid = false; return opration.Failed("کد ملی وارد شده صحیح نمی باشد"); - - } - int num3 = ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + (numArray[8] * 2); + + int num3 = + ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + + (numArray[8] * 2); int num4 = num3 - ((num3 / 11) * 11); - if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10) + if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || + ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10) { - - - nationalCodValid = true; - - } else { - nationalCodValid = false; return opration.Failed("کد ملی وارد شده نا معتبر است"); } - } catch (Exception) { - nationalCodValid = false; return opration.Failed("لطفا کد ملی 10 رقمی وارد کنید"); - } - if (_EmployerRepository.Exists(x => x.Nationalcode == command.Nationalcode && !string.IsNullOrWhiteSpace(command.Nationalcode) && x.id != command.Id)) + + if (_EmployerRepository.Exists(x => + x.Nationalcode == command.Nationalcode && !string.IsNullOrWhiteSpace(command.Nationalcode) && + x.id != command.Id)) { nationalcodeIsOk = false; @@ -337,20 +374,23 @@ public class EmployerApplication : IEmployerApplication } } - + string initial = "1300/10/11"; - var dateOfBirth = command.DateOfBirth != null ? command.DateOfBirth.ToGeorgianDateTime() : initial.ToGeorgianDateTime(); - var dateOfIssue = command.DateOfIssue != null ? command.DateOfIssue.ToGeorgianDateTime() : initial.ToGeorgianDateTime(); + var dateOfBirth = command.DateOfBirth != null + ? command.DateOfBirth.ToGeorgianDateTime() + : initial.ToGeorgianDateTime(); + var dateOfIssue = command.DateOfIssue != null + ? command.DateOfIssue.ToGeorgianDateTime() + : initial.ToGeorgianDateTime(); employer.Edit(command.FName, command.LName, command.ContractingPartyId, command.Gender, command.Nationalcode, command.IdNumber, command.Nationality, command.FatherName, dateOfBirth, dateOfIssue, command.PlaceOfIssue, command.Phone, command.AgentPhone, command.MclsUserName, command.MclsPassword, command.EserviceUserName, command.EservicePassword, - command.TaxOfficeUserName, command.TaxOfficepassword, command.SanaUserName, command.SanaPassword, command.EmployerNo); + command.TaxOfficeUserName, command.TaxOfficepassword, command.SanaUserName, command.SanaPassword, + command.EmployerNo); _EmployerRepository.SaveChanges(); return opration.Succcedded(); - - } public OperationResult EditEmployerNo(EditEmployer command) @@ -370,7 +410,6 @@ public class EmployerApplication : IEmployerApplication { return null; } - } public OperationResult EditLegal(EditEmployer command) @@ -381,7 +420,8 @@ public class EmployerApplication : IEmployerApplication return opration.Failed("رکورد مورد نظر یافت نشد"); if (_EmployerRepository.Exists(x => - x.LName == command.LName && x.NationalId == command.NationalId && !string.IsNullOrWhiteSpace(command.NationalId) && x.id != command.Id)) + x.LName == command.LName && x.NationalId == command.NationalId && + !string.IsNullOrWhiteSpace(command.NationalId) && x.id != command.Id)) return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد"); @@ -395,8 +435,6 @@ public class EmployerApplication : IEmployerApplication { try { - - char[] chArray = command.Nationalcode.ToCharArray(); int[] numArray = new int[chArray.Length]; var cunt = chArray.Length; @@ -404,6 +442,7 @@ public class EmployerApplication : IEmployerApplication { numArray[i] = (int)char.GetNumericValue(chArray[i]); } + int num2 = numArray[9]; switch (command.Nationalcode) { @@ -419,37 +458,30 @@ public class EmployerApplication : IEmployerApplication case "9999999999": - nationalCodValid = false; return opration.Failed("کد ملی وارد شده صحیح نمی باشد"); - - } - int num3 = ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + (numArray[8] * 2); + + int num3 = + ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + + (numArray[8] * 2); int num4 = num3 - ((num3 / 11) * 11); - if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10) + if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || + ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10) { - - - nationalCodValid = true; - - } else { - nationalCodValid = false; return opration.Failed("کد ملی وارد شده نا معتبر است"); } - } catch (Exception) { - nationalCodValid = false; return opration.Failed("لطفا کد ملی 10 رقمی وارد کنید"); - } //if (_EmployerRepository.Exists(x => x.Nationalcode == command.Nationalcode && x.id != command.Id)) //{ @@ -458,18 +490,24 @@ public class EmployerApplication : IEmployerApplication // return opration.Failed(" کد ملی وارد شده تکراری است"); //} } + string initial = "1300/10/11"; - var dateOfBirth = command.DateOfBirth != null ? command.DateOfBirth.ToGeorgianDateTime() : initial.ToGeorgianDateTime(); - var dateOfIssue = command.DateOfIssue != null ? command.DateOfIssue.ToGeorgianDateTime() : initial.ToGeorgianDateTime(); + var dateOfBirth = command.DateOfBirth != null + ? command.DateOfBirth.ToGeorgianDateTime() + : initial.ToGeorgianDateTime(); + var dateOfIssue = command.DateOfIssue != null + ? command.DateOfIssue.ToGeorgianDateTime() + : initial.ToGeorgianDateTime(); legalEmployer.EditLegal(command.FName, command.LName, command.ContractingPartyId, command.Gender, command.Nationalcode, command.IdNumber, command.Nationality, command.FatherName, dateOfBirth, dateOfIssue, command.PlaceOfIssue, command.RegisterId, command.NationalId, command.EmployerLName, - command.Phone, command.AgentPhone, command.MclsUserName, command.MclsPassword, command.EserviceUserName, command.EservicePassword, - command.TaxOfficeUserName, command.TaxOfficepassword, command.SanaUserName, command.SanaPassword, command.EmployerNo); + command.Phone, command.AgentPhone, command.MclsUserName, command.MclsPassword, command.EserviceUserName, + command.EservicePassword, + command.TaxOfficeUserName, command.TaxOfficepassword, command.SanaUserName, command.SanaPassword, + command.EmployerNo); _EmployerRepository.SaveChanges(); return opration.Succcedded(); - } public EditEmployer GetDetails(long id) @@ -479,7 +517,7 @@ public class EmployerApplication : IEmployerApplication public List Search(EmployerSearchModel searchModel) { - var result= _EmployerRepository.Search(searchModel); + var result = _EmployerRepository.Search(searchModel); var workshopList = _workshopRepository.GetWorkshop(); var WorkshopEmployers = _workshopRepository.WorkshopEmployers(); @@ -492,6 +530,7 @@ public class EmployerApplication : IEmployerApplication //employerList = new List { item.Id }; //item.WorkshopList = _workshopRepository.GetWorkshopsByEmployerId(employerList); } + return result; } @@ -499,14 +538,17 @@ public class EmployerApplication : IEmployerApplication { return _EmployerRepository.GetEmployerByWorkshopId(workshopId); } + public List GetEmployerByContracrtingPartyID(long id) { return _EmployerRepository.GetEmployerByContracrtingPartyID(id); } + public List GetEmployerByEmployerIds(List employerIds) { return _EmployerRepository.GetEmployerByEmployerIds(employerIds); } + public OperationResult CreateForClient(CreateEmployer command) { var opration = new OperationResult(); @@ -514,7 +556,6 @@ public class EmployerApplication : IEmployerApplication { if (_EmployerRepository.ExistsEmployerAccount(command.Nationalcode)) return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد"); - } if (string.IsNullOrWhiteSpace(command.FName)) @@ -530,6 +571,7 @@ public class EmployerApplication : IEmployerApplication { numArray[i] = (int)char.GetNumericValue(chArray[i]); } + int num2 = numArray[9]; switch (command.Nationalcode) { @@ -547,9 +589,14 @@ public class EmployerApplication : IEmployerApplication nationalCodValid = false; return opration.Failed("کد ملی وارد شده صحیح نمی باشد"); } - int num3 = ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + (numArray[8] * 2); + + int num3 = + ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + + (numArray[8] * 2); int num4 = num3 - ((num3 / 11) * 11); - if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10) + if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || + ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10) { nationalCodValid = true; } @@ -558,27 +605,27 @@ public class EmployerApplication : IEmployerApplication nationalCodValid = false; return opration.Failed("کد ملی وارد شده نا معتبر است"); } - } catch (Exception) { - nationalCodValid = false; return opration.Failed("لطفا کد ملی 10 رقمی وارد کنید"); - } - - } string initial = "1300/10/11"; - var dateOfBirth = command.DateOfBirth != null ? command.DateOfBirth.ToGeorgianDateTime() : initial.ToGeorgianDateTime(); - var dateOfIssue = command.DateOfIssue != null ? command.DateOfIssue.ToGeorgianDateTime() : initial.ToGeorgianDateTime(); + var dateOfBirth = command.DateOfBirth != null + ? command.DateOfBirth.ToGeorgianDateTime() + : initial.ToGeorgianDateTime(); + var dateOfIssue = command.DateOfIssue != null + ? command.DateOfIssue.ToGeorgianDateTime() + : initial.ToGeorgianDateTime(); var employerData = new Employer(command.FName, command.LName, command.ContractingPartyId, command.Gender, command.Nationalcode, command.IdNumber, command.Nationality, command.FatherName, dateOfBirth, dateOfIssue, command.PlaceOfIssue, "*", "*", "*", "حقیقی", command.Phone, - command.AgentPhone, "true", command.MclsUserName, command.MclsPassword, command.EserviceUserName, command.EservicePassword, + command.AgentPhone, "true", command.MclsUserName, command.MclsPassword, command.EserviceUserName, + command.EservicePassword, command.TaxOfficeUserName, command.TaxOfficepassword, command.SanaUserName, command.SanaPassword); @@ -588,19 +635,20 @@ public class EmployerApplication : IEmployerApplication return opration.Succcedded(); else return opration.Failed("ثبت با خطا مواجه شد!"); - } + public List SearchForClient(EmployerSearchModel searchModel) { return _EmployerRepository.SearchForClient(searchModel); } + public List GetEmployersForClient(long acountID) { return _EmployerRepository.GetEmployersForClient(acountID); } + public OperationResult CreateLegalsForClient(CreateEmployer command) { - if (string.IsNullOrWhiteSpace(command.EmployerLName)) command.EmployerLName = "#"; var opration = new OperationResult(); @@ -611,6 +659,7 @@ public class EmployerApplication : IEmployerApplication if (_EmployerRepository.ExistsEmployerAccountNationalId(command.NationalId)) return opration.Failed(" شناسه ملی وارد شده تکراری است"); } + if (_EmployerRepository.Exists(x => x.LName == command.LName)) { if (_EmployerRepository.ExistsEmployerAccountLName(command.LName)) @@ -619,6 +668,7 @@ public class EmployerApplication : IEmployerApplication return opration.Failed("نام شرکت وارد شده تکراری است"); } } + if (_EmployerRepository.Exists(x => x.RegisterId == command.RegisterId && x.RegisterId != null)) { if (_EmployerRepository.ExistsEmployerAccountRegisterId(command.RegisterId)) @@ -632,8 +682,6 @@ public class EmployerApplication : IEmployerApplication { try { - - char[] chArray = command.Nationalcode.ToCharArray(); int[] numArray = new int[chArray.Length]; var cunt = chArray.Length; @@ -641,6 +689,7 @@ public class EmployerApplication : IEmployerApplication { numArray[i] = (int)char.GetNumericValue(chArray[i]); } + int num2 = numArray[9]; switch (command.Nationalcode) { @@ -656,37 +705,30 @@ public class EmployerApplication : IEmployerApplication case "9999999999": - nationalCodValid = false; return opration.Failed("کد ملی وارد شده صحیح نمی باشد"); - - } - int num3 = ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + (numArray[8] * 2); + + int num3 = + ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + + (numArray[8] * 2); int num4 = num3 - ((num3 / 11) * 11); - if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10) + if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || + ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10) { - - - nationalCodValid = true; - - } else { - nationalCodValid = false; return opration.Failed("کد ملی وارد شده نا معتبر است"); } - } catch (Exception) { - nationalCodValid = false; return opration.Failed("لطفا کد ملی 10 رقمی وارد کنید"); - } //if (_EmployerRepository.Exists(x => x.Nationalcode == command.Nationalcode)) //{ @@ -698,12 +740,18 @@ public class EmployerApplication : IEmployerApplication string initial = "1300/10/11"; - var dateOfBirth = command.DateOfBirth != null ? command.DateOfBirth.ToGeorgianDateTime() : initial.ToGeorgianDateTime(); - var dateOfIssue = command.DateOfIssue != null ? command.DateOfIssue.ToGeorgianDateTime() : initial.ToGeorgianDateTime(); + var dateOfBirth = command.DateOfBirth != null + ? command.DateOfBirth.ToGeorgianDateTime() + : initial.ToGeorgianDateTime(); + var dateOfIssue = command.DateOfIssue != null + ? command.DateOfIssue.ToGeorgianDateTime() + : initial.ToGeorgianDateTime(); var LegalEmployerData = new Employer(command.FName, command.LName, command.ContractingPartyId, command.Gender, command.Nationalcode, command.IdNumber, command.Nationality, command.FatherName, dateOfBirth, - dateOfIssue, command.PlaceOfIssue, command.RegisterId, command.NationalId, command.EmployerLName, "حقوقی", command.Phone, - command.AgentPhone, "true", command.MclsUserName, command.MclsPassword, command.EserviceUserName, command.EservicePassword, + dateOfIssue, command.PlaceOfIssue, command.RegisterId, command.NationalId, command.EmployerLName, "حقوقی", + command.Phone, + command.AgentPhone, "true", command.MclsUserName, command.MclsPassword, command.EserviceUserName, + command.EservicePassword, command.TaxOfficeUserName, command.TaxOfficepassword, command.SanaUserName, command.SanaPassword); @@ -714,8 +762,8 @@ public class EmployerApplication : IEmployerApplication return opration.Succcedded(); else return opration.Failed("ثبت با خطا مواجه شد!"); - } + public OperationResult EditForClient(EditEmployer command) { var opration = new OperationResult(); @@ -728,7 +776,6 @@ public class EmployerApplication : IEmployerApplication { if (_EmployerRepository.ExistsEmployerAccountById(command.Nationalcode, command.Id)) return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد"); - } if (!string.IsNullOrWhiteSpace(command.Nationalcode)) @@ -742,6 +789,7 @@ public class EmployerApplication : IEmployerApplication { numArray[i] = (int)char.GetNumericValue(chArray[i]); } + int num2 = numArray[9]; switch (command.Nationalcode) { @@ -758,9 +806,14 @@ public class EmployerApplication : IEmployerApplication nationalCodValid = false; return opration.Failed("کد ملی وارد شده صحیح نمی باشد"); } - int num3 = ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + (numArray[8] * 2); + + int num3 = + ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + + (numArray[8] * 2); int num4 = num3 - ((num3 / 11) * 11); - if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10) + if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || + ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10) { nationalCodValid = true; } @@ -769,31 +822,33 @@ public class EmployerApplication : IEmployerApplication nationalCodValid = false; return opration.Failed("کد ملی وارد شده نا معتبر است"); } - } catch (Exception) { nationalCodValid = false; return opration.Failed("لطفا کد ملی 10 رقمی وارد کنید"); } - } string initial = "1300/10/11"; - var dateOfBirth = command.DateOfBirth != null ? command.DateOfBirth.ToGeorgianDateTime() : initial.ToGeorgianDateTime(); - var dateOfIssue = command.DateOfIssue != null ? command.DateOfIssue.ToGeorgianDateTime() : initial.ToGeorgianDateTime(); + var dateOfBirth = command.DateOfBirth != null + ? command.DateOfBirth.ToGeorgianDateTime() + : initial.ToGeorgianDateTime(); + var dateOfIssue = command.DateOfIssue != null + ? command.DateOfIssue.ToGeorgianDateTime() + : initial.ToGeorgianDateTime(); employer.Edit(command.FName, command.LName, command.ContractingPartyId, command.Gender, command.Nationalcode, command.IdNumber, command.Nationality, command.FatherName, dateOfBirth, dateOfIssue, command.PlaceOfIssue, command.Phone, command.AgentPhone, command.MclsUserName, command.MclsPassword, command.EserviceUserName, command.EservicePassword, - command.TaxOfficeUserName, command.TaxOfficepassword, command.SanaUserName, command.SanaPassword, command.EmployerNo); + command.TaxOfficeUserName, command.TaxOfficepassword, command.SanaUserName, command.SanaPassword, + command.EmployerNo); _EmployerRepository.SaveChanges(); return opration.Succcedded(); - - } + public OperationResult EditLegalForClient(EditEmployer command) { var opration = new OperationResult(); @@ -812,8 +867,6 @@ public class EmployerApplication : IEmployerApplication { try { - - char[] chArray = command.Nationalcode.ToCharArray(); int[] numArray = new int[chArray.Length]; var cunt = chArray.Length; @@ -821,6 +874,7 @@ public class EmployerApplication : IEmployerApplication { numArray[i] = (int)char.GetNumericValue(chArray[i]); } + int num2 = numArray[9]; switch (command.Nationalcode) { @@ -836,37 +890,30 @@ public class EmployerApplication : IEmployerApplication case "9999999999": - nationalCodValid = false; return opration.Failed("کد ملی وارد شده صحیح نمی باشد"); - - } - int num3 = ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + (numArray[8] * 2); + + int num3 = + ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + + (numArray[8] * 2); int num4 = num3 - ((num3 / 11) * 11); - if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10) + if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || + ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))) && cunt <= 10) { - - - nationalCodValid = true; - - } else { - nationalCodValid = false; return opration.Failed("کد ملی وارد شده نا معتبر است"); } - } catch (Exception) { - nationalCodValid = false; return opration.Failed("لطفا کد ملی 10 رقمی وارد کنید"); - } //if (_EmployerRepository.Exists(x => x.Nationalcode == command.Nationalcode && x.id != command.Id)) //{ @@ -875,21 +922,28 @@ public class EmployerApplication : IEmployerApplication // return opration.Failed(" کد ملی وارد شده تکراری است"); //} } + string initial = "1300/10/11"; - var dateOfBirth = command.DateOfBirth != null ? command.DateOfBirth.ToGeorgianDateTime() : initial.ToGeorgianDateTime(); - var dateOfIssue = command.DateOfIssue != null ? command.DateOfIssue.ToGeorgianDateTime() : initial.ToGeorgianDateTime(); + var dateOfBirth = command.DateOfBirth != null + ? command.DateOfBirth.ToGeorgianDateTime() + : initial.ToGeorgianDateTime(); + var dateOfIssue = command.DateOfIssue != null + ? command.DateOfIssue.ToGeorgianDateTime() + : initial.ToGeorgianDateTime(); legalEmployer.EditLegal(command.FName, command.LName, command.ContractingPartyId, command.Gender, command.Nationalcode, command.IdNumber, command.Nationality, command.FatherName, dateOfBirth, dateOfIssue, command.PlaceOfIssue, command.RegisterId, command.NationalId, command.EmployerLName, - command.Phone, command.AgentPhone, command.MclsUserName, command.MclsPassword, command.EserviceUserName, command.EservicePassword, - command.TaxOfficeUserName, command.TaxOfficepassword, command.SanaUserName, command.SanaPassword, command.EmployerNo); + command.Phone, command.AgentPhone, command.MclsUserName, command.MclsPassword, command.EserviceUserName, + command.EservicePassword, + command.TaxOfficeUserName, command.TaxOfficepassword, command.SanaUserName, command.SanaPassword, + command.EmployerNo); _EmployerRepository.SaveChanges(); return opration.Succcedded(); - } #region Mahan + public List GetEmployersHasWorkshop() { return _EmployerRepository.GetEmployersHasWorkshop(); @@ -899,19 +953,19 @@ public class EmployerApplication : IEmployerApplication //{ // return await _EmployerRepository.GetSelectList(search); //} + #endregion #region NewByHeydari - public OperationResult DeleteEmployer(long id) { var opration = new OperationResult(); var ids = new List(); ids.Add(id); - var workshops= _workshopRepository.GetWorkshopsByEmployerId(ids); + var workshops = _workshopRepository.GetWorkshopsByEmployerId(ids); - if (workshops!=null && workshops.Count>0) + if (workshops != null && workshops.Count > 0) { return _EmployerRepository.DeActiveAll(id); } @@ -927,10 +981,12 @@ public class EmployerApplication : IEmployerApplication { return _EmployerRepository.GetEmployerWithFNameOrLName(searchText); } + public List GetEmployerWithIdNumberOrRegisterId(string searchText) { return _EmployerRepository.GetEmployerWithIdNumberOrRegisterId(searchText); } + public List GetEmployerWithNationalcodeOrNationalId(string searchText) { return _EmployerRepository.GetEmployerWithNationalcodeOrNationalId(searchText); @@ -946,267 +1002,317 @@ public class EmployerApplication : IEmployerApplication return _EmployerRepository.GetAllEmployers(); } + #endregion + + #region Insurance + + public (string employerName, bool isLegal) InsuranceEmployerByWorkshopId(long workshopId) + { + return _EmployerRepository.InsuranceEmployerByWorkshopId(workshopId); + } + + #endregion + + #region Api + + public async Task> GetEmployerList(GetEmployerSearchModel searchModel) + { + return await _EmployerRepository.GetEmployerList(searchModel); + } + + public async Task GetLegalEmployerDetail(long id) + { + var employer = await _EmployerRepository.GetLegalEmployerDetail(id); + if (employer == null) + { + throw new NotFoundException("کارفرمای مورد نطر یافت نشد"); + } + + return employer; + } + + public async Task GetRealEmployerDetail(long id) + { + var employer = await _EmployerRepository.GetRealEmployerDetail(id); + if (employer == null) + { + throw new NotFoundException("کارفرمای مورد نطر یافت نشد"); + } + + return employer; + } + + public async Task CreateReal(CreateRealEmployer command) + { + var opration = new OperationResult(); + if (_EmployerRepository.Exists(x => + (x.FName == command.FName && x.LName == command.LName) && x.Nationalcode == command.NationalCode && + x.Nationalcode != null)) + return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد"); + + if (string.IsNullOrWhiteSpace(command.FName)) + return opration.Failed("لطفا نام را وارد کنید"); + + if (!string.IsNullOrWhiteSpace(command.NationalCode)) + { + if (command.NationalCode.NationalCodeValid() != "valid") + { + return opration.Failed("کدملی وارد شده نامعتبر است"); + } + + if (_EmployerRepository.Exists(x => + x.Nationalcode == command.NationalCode && !string.IsNullOrWhiteSpace(command.NationalCode))) + { + return opration.Failed("کد ملی وارد شده تکراری است"); + } + } + + string initial = "1300/10/11"; + var dateOfBirth = command.DateOfBirth?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime(); + var dateOfIssue = command.DateOfIssue?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime(); + + var gender = command.Gender switch + { + Gender.Male => "مرد", + Gender.Female => "زن", + Gender.None => null, + _ => throw new BadRequestException("جنسیت وارد شده نامعتبر است") + }; + + var employerData = new Employer(command.FName, command.LName, command.ContractingPartyId, gender, + command.NationalCode, command.IdNumber, "ایرانی", command.FatherName, dateOfBirth, + dateOfIssue, command.PlaceOfIssue, "*", "*", "*", "حقیقی", command.PhoneNumber, + command.Telephone, "true", command.GovernmentSystemInfo.MclUsername, + command.GovernmentSystemInfo.MclPassword, command.GovernmentSystemInfo.EServiceUsername, + command.GovernmentSystemInfo.EServicePassword, + command.GovernmentSystemInfo.TaxUsername, command.GovernmentSystemInfo.TaxPassword, + command.GovernmentSystemInfo.SanaUsername, command.GovernmentSystemInfo.SanaPassword); + + await _EmployerRepository.CreateAsync(employerData); + await _EmployerRepository.SaveChangesAsync(); + + return opration.Succcedded(); + } + + public async Task CreateLegal(CreateLegalEmployer command) + { + if (string.IsNullOrWhiteSpace(command.EmployerLName)) + command.EmployerLName = "#"; + var opration = new OperationResult(); + if (_EmployerRepository.Exists(x => + x.LName == command.CompanyName && x.NationalId == command.NationalId && + x.EmployerLName == command.EmployerLName)) + return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد"); + + if (_EmployerRepository.Exists(x => + x.NationalId == command.NationalId && !string.IsNullOrWhiteSpace(command.NationalId) && + x.NationalId != null)) + { + return opration.Failed(" شناسه ملی وارد شده تکراری است"); + } + + if (_EmployerRepository.Exists(x => x.LName == command.CompanyName)) + { + return opration.Failed("نام شرکت وارد شده تکراری است"); + } + + if (_EmployerRepository.Exists(x => + x.RegisterId == command.RegisterId && !string.IsNullOrWhiteSpace(command.RegisterId) && + x.RegisterId != null)) + { + return opration.Failed(" شماره ثبت وارد شده تکراری است"); + } + + if (!string.IsNullOrEmpty(command.NationalId) && command.NationalId.Length != 11) + { + return opration.Failed(" شناسه ملی باید 11 رقم باشد"); + } + + if (!string.IsNullOrWhiteSpace(command.EmployerNationalCode)) + { + if (command.EmployerNationalCode.NationalCodeValid() != "valid") + { + return opration.Failed("کد ملی وارد شده نا معتبر است"); + } + } + + string initial = "1300/10/11"; + var dateOfBirth = command.EmployerDateOfBirth?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime(); + var dateOfIssue = command.EmployerDateOfIssue?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime(); + + var gender = command.EmployerGender switch + { + Gender.Male => "مرد", + Gender.Female => "زن", + Gender.None => null, + _ => throw new BadRequestException("جنسیت وارد شده نامعتبر است") + }; - #endregion + var legalEmployerData = new Employer(command.EmployerFName, command.CompanyName, command.ContractingPartyId, + gender, + command.EmployerNationalCode, command.EmployerIdNumber, "ایرانی", command.EmployerFatherName, dateOfBirth, + dateOfIssue, command.EmployerPlaceOfIssue, command.RegisterId, command.NationalId, command.EmployerLName, + "حقوقی", command.PhoneNumber, + command.TelephoneNumber, "true", command.GovernmentSystemInfo.MclUsername, + command.GovernmentSystemInfo.MclPassword, + command.GovernmentSystemInfo.EServiceUsername, command.GovernmentSystemInfo.EServicePassword, + command.GovernmentSystemInfo.TaxUsername, command.GovernmentSystemInfo.TaxPassword, + command.GovernmentSystemInfo.SanaUsername, command.GovernmentSystemInfo.SanaPassword); - #region Insurance + await _EmployerRepository.CreateAsync(legalEmployerData); + await _EmployerRepository.SaveChangesAsync(); - public (string employerName, bool isLegal) InsuranceEmployerByWorkshopId(long workshopId) - { - return _EmployerRepository.InsuranceEmployerByWorkshopId(workshopId); - } + return opration.Succcedded(); + } - #endregion + public async Task EditReal(EditRealEmployer command) + { + var opration = new OperationResult(); + var employer = _EmployerRepository.Get(command.Id); + if (employer == null) + return opration.Failed("رکورد مورد نظر یافت نشد"); - #region Api - public async Task> GetEmployerList(GetEmployerSearchModel searchModel) - { - return await _EmployerRepository.GetEmployerList(searchModel); - } - public async Task GetLegalEmployerDetail(long id) - { - var employer = await _EmployerRepository.GetLegalEmployerDetail(id); - if (employer == null) - { - throw new NotFoundException("کارفرمای مورد نطر یافت نشد"); - } - return employer; - } + if (_EmployerRepository.Exists(x => + (x.FName == command.FName && x.LName == command.LName) && x.Nationalcode == command.NationalCode && + x.id != command.Id)) + return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد"); + if (!string.IsNullOrWhiteSpace(command.NationalCode)) + { + if (command.NationalCode.NationalCodeValid() != "valid") + { + return opration.Failed("کد ملی وارد شده نا معتبر است"); + } + } - public async Task GetRealEmployerDetail(long id) - { - var employer = await _EmployerRepository.GetRealEmployerDetail(id); - if (employer == null) - { - throw new NotFoundException("کارفرمای مورد نطر یافت نشد"); - } - return employer; - } - - public async Task CreateReal(CreateRealEmployer command) - { - var opration = new OperationResult(); - if (_EmployerRepository.Exists(x => - (x.FName == command.FName && x.LName == command.LName) && x.Nationalcode == command.NationalCode && x.Nationalcode != null)) - return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد"); - - if (string.IsNullOrWhiteSpace(command.FName)) - return opration.Failed("لطفا نام را وارد کنید"); - - if (!string.IsNullOrWhiteSpace(command.NationalCode)) - { - if (command.NationalCode.NationalCodeValid() != "valid") - { - return opration.Failed("کدملی وارد شده نامعتبر است"); - } - if (_EmployerRepository.Exists(x => x.Nationalcode == command.NationalCode && !string.IsNullOrWhiteSpace(command.NationalCode))) - { - return opration.Failed("کد ملی وارد شده تکراری است"); - } - } - string initial = "1300/10/11"; - var dateOfBirth = command.DateOfBirth?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime(); - var dateOfIssue = command.DateOfIssue?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime(); - - var gender = command.Gender switch - { - Gender.Male => "مرد", - Gender.Female => "زن", - Gender.None => null, - _ => throw new BadRequestException("جنسیت وارد شده نامعتبر است") - }; - - var employerData = new Employer(command.FName, command.LName, command.ContractingPartyId, gender, - command.NationalCode, command.IdNumber, "ایرانی", command.FatherName, dateOfBirth, - dateOfIssue, command.PlaceOfIssue, "*", "*", "*", "حقیقی", command.PhoneNumber, - command.Telephone, "true", command.GovernmentSystemInfo.MclUsername, command.GovernmentSystemInfo.MclPassword, command.GovernmentSystemInfo.EServiceUsername, command.GovernmentSystemInfo.EServicePassword, - command.GovernmentSystemInfo.TaxUsername, command.GovernmentSystemInfo.TaxPassword, command.GovernmentSystemInfo.SanaUsername, command.GovernmentSystemInfo.SanaPassword); - - await _EmployerRepository.CreateAsync(employerData); - await _EmployerRepository.SaveChangesAsync(); - - return opration.Succcedded(); - } - - public async Task CreateLegal(CreateLegalEmployer command) - { - if (string.IsNullOrWhiteSpace(command.EmployerLName)) - command.EmployerLName = "#"; - var opration = new OperationResult(); - if (_EmployerRepository.Exists(x => - x.LName == command.CompanyName && x.NationalId == command.NationalId && x.EmployerLName == command.EmployerLName)) - return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد"); - - if (_EmployerRepository.Exists(x => x.NationalId == command.NationalId && !string.IsNullOrWhiteSpace(command.NationalId) && x.NationalId != null)) - { - return opration.Failed(" شناسه ملی وارد شده تکراری است"); - } - if (_EmployerRepository.Exists(x => x.LName == command.CompanyName)) - { - return opration.Failed("نام شرکت وارد شده تکراری است"); - } - if (_EmployerRepository.Exists(x => x.RegisterId == command.RegisterId && !string.IsNullOrWhiteSpace(command.RegisterId) && x.RegisterId != null)) - { - return opration.Failed(" شماره ثبت وارد شده تکراری است"); - } - - if (!string.IsNullOrEmpty(command.NationalId) && command.NationalId.Length != 11) - { - return opration.Failed(" شناسه ملی باید 11 رقم باشد"); - } - - if (!string.IsNullOrWhiteSpace(command.EmployerNationalCode)) - { - if (command.EmployerNationalCode.NationalCodeValid() != "valid") - { - return opration.Failed("کد ملی وارد شده نا معتبر است"); - } - } - - string initial = "1300/10/11"; - var dateOfBirth = command.EmployerDateOfBirth?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime(); - var dateOfIssue = command.EmployerDateOfIssue?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime(); - - var gender = command.EmployerGender switch - { - Gender.Male => "مرد", - Gender.Female => "زن", - Gender.None => null, - _ => throw new BadRequestException("جنسیت وارد شده نامعتبر است") - }; + if (_EmployerRepository.Exists(x => + x.Nationalcode == command.NationalCode && !string.IsNullOrWhiteSpace(command.NationalCode) && + x.id != command.Id)) + { + return opration.Failed(" کد ملی وارد شده تکراری است"); + } - var legalEmployerData = new Employer(command.EmployerFName, command.CompanyName, command.ContractingPartyId, gender, - command.EmployerNationalCode, command.EmployerIdNumber, "ایرانی", command.EmployerFatherName, dateOfBirth, - dateOfIssue, command.EmployerPlaceOfIssue, command.RegisterId, command.NationalId, command.EmployerLName, "حقوقی", command.PhoneNumber, - command.TelephoneNumber, "true", command.GovernmentSystemInfo.MclUsername, command.GovernmentSystemInfo.MclPassword, - command.GovernmentSystemInfo.EServiceUsername, command.GovernmentSystemInfo.EServicePassword, - command.GovernmentSystemInfo.TaxUsername, command.GovernmentSystemInfo.TaxPassword, command.GovernmentSystemInfo.SanaUsername, command.GovernmentSystemInfo.SanaPassword); + string initial = "1300/10/11"; - await _EmployerRepository.CreateAsync(legalEmployerData); - await _EmployerRepository.SaveChangesAsync(); + var dateOfBirth = command.DateOfBirth?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime(); + var dateOfIssue = command.DateOfIssue?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime(); - return opration.Succcedded(); - } + var gender = command.Gender switch + { + Gender.Male => "مرد", + Gender.Female => "زن", + Gender.None => null, + _ => throw new BadRequestException("جنسیت وارد شده نامعتبر است") + }; - public async Task EditReal(EditRealEmployer command) - { - var opration = new OperationResult(); - var employer = _EmployerRepository.Get(command.Id); - if (employer == null) - return opration.Failed("رکورد مورد نظر یافت نشد"); + employer.Edit(command.FName, command.LName, command.ContractingPartyId, + gender, command.NationalCode, command.IdNumber, "ایرانی", command.FatherName, + dateOfBirth, dateOfIssue, command.PlaceOfIssue, command.PhoneNumber, command.Telephone, + command.GovernmentSystemInfo.MclUsername, command.GovernmentSystemInfo.MclPassword, + command.GovernmentSystemInfo.EServiceUsername, command.GovernmentSystemInfo.EServicePassword, + command.GovernmentSystemInfo.TaxUsername, command.GovernmentSystemInfo.TaxPassword, + command.GovernmentSystemInfo.SanaUsername, command.GovernmentSystemInfo.SanaPassword, null); - if (_EmployerRepository.Exists(x => - (x.FName == command.FName && x.LName == command.LName) && x.Nationalcode == command.NationalCode && x.id != command.Id)) - return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد"); - if (!string.IsNullOrWhiteSpace(command.NationalCode)) - { - if (command.NationalCode.NationalCodeValid() != "valid") - { - return opration.Failed("کد ملی وارد شده نا معتبر است"); - } - } + await _EmployerRepository.SaveChangesAsync(); + return opration.Succcedded(); + } - if (_EmployerRepository.Exists(x => x.Nationalcode == command.NationalCode && !string.IsNullOrWhiteSpace(command.NationalCode) && x.id != command.Id)) - { + public async Task EditLegal(EditLegalEmployer command) + { + var opration = new OperationResult(); + var legalEmployer = _EmployerRepository.Get(command.Id); + if (legalEmployer == null) + return opration.Failed("رکورد مورد نظر یافت نشد"); - return opration.Failed(" کد ملی وارد شده تکراری است"); - } + if (_EmployerRepository.Exists(x => + x.LName == command.CompanyName && x.NationalId == command.NationalId && + !string.IsNullOrWhiteSpace(command.NationalId) && x.id != command.Id)) + return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد"); + if (!string.IsNullOrEmpty(command.NationalId) && command.NationalId.Length != 11) + { + return opration.Failed(" شناسه ملی باید 11 رقم باشد"); + } - string initial = "1300/10/11"; + if (!string.IsNullOrWhiteSpace(command.EmployerNationalCode)) + { + if (command.EmployerNationalCode.NationalCodeValid() != "valid") + { + return opration.Failed("کد ملی وارد شده نا معتبر است"); + } + } - var dateOfBirth = command.DateOfBirth?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime(); - var dateOfIssue = command.DateOfIssue?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime(); + var gender = command.EmployerGender switch + { + Gender.Male => "مرد", + Gender.Female => "زن", + Gender.None => null, + _ => throw new BadRequestException("جنسیت وارد شده نامعتبر است") + }; - var gender = command.Gender switch - { - Gender.Male => "مرد", - Gender.Female => "زن", - Gender.None => null, - _ => throw new BadRequestException("جنسیت وارد شده نامعتبر است") - }; + string initial = "1300/10/11"; + var dateOfBirth = command.EmployerDateOfBirth?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime(); + var dateOfIssue = command.EmployerDateOfIssue?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime(); + legalEmployer.EditLegal(command.EmployerFName, command.CompanyName, command.ContractingPartyId, gender, + command.EmployerNationalCode, command.EmployerIdNumber, "ایرانی", command.EmployerFatherName, dateOfBirth, + dateOfIssue, command.EmployerPlaceOfIssue, command.RegisterId, command.NationalId, command.EmployerLName, + command.PhoneNumber, command.TelephoneNumber, command.GovernmentSystemInfo.MclUsername, + command.GovernmentSystemInfo.MclUsername, command.GovernmentSystemInfo.EServiceUsername, + command.GovernmentSystemInfo.EServicePassword, + command.GovernmentSystemInfo.TaxUsername, command.GovernmentSystemInfo.TaxPassword, + command.GovernmentSystemInfo.SanaUsername, command.GovernmentSystemInfo.SanaPassword, null); - employer.Edit(command.FName, command.LName, command.ContractingPartyId, - gender, command.NationalCode, command.IdNumber, "ایرانی", command.FatherName, - dateOfBirth, dateOfIssue, command.PlaceOfIssue, command.PhoneNumber, command.Telephone, - command.GovernmentSystemInfo.MclUsername, command.GovernmentSystemInfo.MclPassword, command.GovernmentSystemInfo.EServiceUsername, command.GovernmentSystemInfo.EServicePassword, - command.GovernmentSystemInfo.TaxUsername, command.GovernmentSystemInfo.TaxPassword, command.GovernmentSystemInfo.SanaUsername, command.GovernmentSystemInfo.SanaPassword, null); + await _EmployerRepository.SaveChangesAsync(); + return opration.Succcedded(); + } - await _EmployerRepository.SaveChangesAsync(); - return opration.Succcedded(); - } + public async Task> GetSelectList(string search, long id) + { + return await _EmployerRepository.GetSelectList(search, id); + } - public async Task EditLegal(EditLegalEmployer command) - { - var opration = new OperationResult(); - var legalEmployer = _EmployerRepository.Get(command.Id); - if (legalEmployer == null) - return opration.Failed("رکورد مورد نظر یافت نشد"); + async Task> IEmployerApplication.Remove(long id) + { + var employer = _EmployerRepository.Get(id); + if (employer == null) + throw new NotFoundException("دیتای مورد نظر یافت نشد"); - if (_EmployerRepository.Exists(x => - x.LName == command.CompanyName && x.NationalId == command.NationalId && !string.IsNullOrWhiteSpace(command.NationalId) && x.id != command.Id)) - return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد"); + var workshops = _workshopRepository.GetWorkshopsByEmployerId([id]); + + if (workshops.Any()) + { + return await _EmployerRepository.DeactivateWithSubordinates(id); + } + + _EmployerRepository.Remove(id); + + return new OperationResult().Succcedded("Deleted"); + } + + public async Task CreateWorkflowRegistration(CreateEmployerWorkflowRegistration command) + { + var operation = new OperationResult(); + + OperationResult createEmployerResult = command.LegalType switch + { + LegalType.Real => CreateRealEmployerRegistration(command.RealEmployer, command.ContractingPartyId), + LegalType.Legal => CreateLegalEmployerRegistration(command.LegalEmployer, command.ContractingPartyId), + _ => throw new ArgumentOutOfRangeException() + }; + var employer = createEmployerResult.Data; + + if (!createEmployerResult.IsSuccedded) + return operation.Failed(createEmployerResult.Message); + + var workshopDetails = await _institutionContractRepository.GetInstitutionWorkshopDetails(command.InstitutionWorkshopDetailsId); + workshopDetails.AddEmployer(employer.id); + + await _institutionContractRepository.SaveChangesAsync(); + + } - if (!string.IsNullOrEmpty(command.NationalId) && command.NationalId.Length != 11) - { - return opration.Failed(" شناسه ملی باید 11 رقم باشد"); - } - - if (!string.IsNullOrWhiteSpace(command.EmployerNationalCode)) - { - if (command.EmployerNationalCode.NationalCodeValid() != "valid") - { - return opration.Failed("کد ملی وارد شده نا معتبر است"); - } - } - - var gender = command.EmployerGender switch - { - Gender.Male => "مرد", - Gender.Female => "زن", - Gender.None => null, - _ => throw new BadRequestException("جنسیت وارد شده نامعتبر است") - }; - - string initial = "1300/10/11"; - var dateOfBirth = command.EmployerDateOfBirth?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime(); - var dateOfIssue = command.EmployerDateOfIssue?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime(); - legalEmployer.EditLegal(command.EmployerFName, command.CompanyName, command.ContractingPartyId, gender, - command.EmployerNationalCode, command.EmployerIdNumber, "ایرانی", command.EmployerFatherName, dateOfBirth, - dateOfIssue, command.EmployerPlaceOfIssue, command.RegisterId, command.NationalId, command.EmployerLName, - command.PhoneNumber, command.TelephoneNumber, command.GovernmentSystemInfo.MclUsername, command.GovernmentSystemInfo.MclUsername, command.GovernmentSystemInfo.EServiceUsername, command.GovernmentSystemInfo.EServicePassword, - command.GovernmentSystemInfo.TaxUsername, command.GovernmentSystemInfo.TaxPassword, command.GovernmentSystemInfo.SanaUsername, command.GovernmentSystemInfo.SanaPassword, null); - - await _EmployerRepository.SaveChangesAsync(); - return opration.Succcedded(); - } - - public async Task> GetSelectList(string search,long id) - { - return await _EmployerRepository.GetSelectList(search,id); - } - - async Task> IEmployerApplication.Remove(long id) - { - var employer = _EmployerRepository.Get(id); - if (employer == null) - throw new NotFoundException("دیتای مورد نظر یافت نشد"); - - var workshops = _workshopRepository.GetWorkshopsByEmployerId([id]); - - if (workshops.Any()) - { - return await _EmployerRepository.DeactivateWithSubordinates(id); - } - - _EmployerRepository.Remove(id); - - return new OperationResult().Succcedded("Deleted"); - - } - #endregion + #endregion } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs index 8f939e98..af1f6ff9 100644 --- a/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs +++ b/CompanyManagment.EFCore/Repository/InstitutionContractRepository.cs @@ -1542,6 +1542,12 @@ public class InstitutionContractRepository : RepositoryBase GetInstitutionWorkshopDetails(long institutionWorkshopDetailsId) + { + return await _context.InstitutionContractWorkshopDetails.FirstOrDefaultAsync(x => + x.id == institutionWorkshopDetailsId); + } #endregion @@ -1556,5 +1562,7 @@ public class InstitutionContractRepository : RepositoryBase @@ -35,5 +40,11 @@ namespace ServiceHost.Areas.Admin.Controllers var result = await _institutionContractApplication.RegistrationWorkflowItems(institutionContractId); return result; } + + public async Task CreateEmployerForWorkshopDetails(CreateEmployerWorkflowRegistration command) + { + var result = await _employerApplication.CreateWorkflowRegistration(command); + return Ok(result); + } } } From d4f9c810eaab3baf64c0ec14991429e1c6b8f673 Mon Sep 17 00:00:00 2001 From: MahanCh Date: Mon, 25 Aug 2025 18:24:07 +0330 Subject: [PATCH 3/4] feat: implement workshop creation workflow and enhance employer registration process --- .../IInstitutionContractRepository.cs | 1 + .../Employer/IEmployerApplication.cs | 5 +- .../Workshop/CreateWorkshop.cs | 1 + .../Workshop/IWorkshopApplication.cs | 164 +++++++++ .../EmployerApplication.cs | 142 +++++++- .../WorkshopAppliction.cs | 343 +++++++++++++----- .../RegistrationWorkflowController.cs | 24 +- 7 files changed, 581 insertions(+), 99 deletions(-) diff --git a/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs b/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs index cdef2ea3..be7d3c5f 100644 --- a/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs +++ b/Company.Domain/InstitutionContractAgg/IInstitutionContractRepository.cs @@ -49,4 +49,5 @@ public interface IInstitutionContractRepository : IRepository GetListStats(InstitutionContractListSearchModel searchModel); Task> RegistrationWorkflowMainList(); Task> RegistrationWorkflowItems(long institutionContractId); + Task GetInstitutionWorkshopDetails(long institutionWorkshopDetailsId); } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Employer/IEmployerApplication.cs b/CompanyManagment.App.Contracts/Employer/IEmployerApplication.cs index 68572cae..fc1406ea 100644 --- a/CompanyManagment.App.Contracts/Employer/IEmployerApplication.cs +++ b/CompanyManagment.App.Contracts/Employer/IEmployerApplication.cs @@ -135,7 +135,6 @@ public class CreateEmployerWorkflowRegistration public CreateRealEmployerWorkflowRegistration RealEmployer { get; set; } public CreateLegalEmployerWorkflowRegistration LegalEmployer { get; set; } public LegalType LegalType { get; set; } - public GovernmentSystemInfo GovernmentSystemInfo { get; set; } public long InstitutionWorkshopDetailsId { get; set; } public long InstitutionContractId { get; set; } public long ContractingPartyId { get; set; } @@ -159,6 +158,8 @@ public class CreateLegalEmployerWorkflowRegistration public string CeoDateOfIssue { get; set; } public string PhoneNumber { get; set; } public string TelephoneNumber { get; set; } + public GovernmentSystemInfo GovernmentSystemInfo { get; set; } + } public class CreateRealEmployerWorkflowRegistration @@ -175,4 +176,6 @@ public class CreateRealEmployerWorkflowRegistration public string PlaceOfIssue { get; set; } public string DateOfIssue { get; set; } public string TelephoneNumber { get; set; } + public GovernmentSystemInfo GovernmentSystemInfo { get; set; } + public string Telephone { get; set; } } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Workshop/CreateWorkshop.cs b/CompanyManagment.App.Contracts/Workshop/CreateWorkshop.cs index 57b654cd..98355cbc 100644 --- a/CompanyManagment.App.Contracts/Workshop/CreateWorkshop.cs +++ b/CompanyManagment.App.Contracts/Workshop/CreateWorkshop.cs @@ -151,5 +151,6 @@ public class CreateWorkshop /// تصفیه حساب بصورت استاتیک محاصبه شود /// public bool IsStaticCheckout { get; set; } + } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/Workshop/IWorkshopApplication.cs b/CompanyManagment.App.Contracts/Workshop/IWorkshopApplication.cs index fc437ad4..9d11fcb5 100644 --- a/CompanyManagment.App.Contracts/Workshop/IWorkshopApplication.cs +++ b/CompanyManagment.App.Contracts/Workshop/IWorkshopApplication.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using _0_Framework.Application; using AccountManagement.Application.Contracts.Account; using CompanyManagment.App.Contracts.Workshop.DTOs; +using Microsoft.AspNetCore.Mvc; namespace CompanyManagment.App.Contracts.Workshop; @@ -89,4 +90,167 @@ public interface IWorkshopApplication #endregion + + Task> CreateWorkshopWorkflowRegistration(CreateWorkshopWorkflowRegistration command); +} + +public class CreateWorkshopWorkflowRegistration +{ + /// + /// شناس�� جزئیات کارگاه قرارداد مؤسسه + /// + public long InstitutionContractWorkshopDetailId { get; set; } + /// + /// نام کارگاه + /// + public string WorkshopName { get; set; } + /// + /// نام مستعار + /// + public string SureName { get; set; } + /// + /// نوع مالکیت + /// + public string TypeOfOwnership { get; set; } + /// + /// کد بایگانی + /// + public string ArchiveCode { get; set; } + /// + /// نام نماینده + /// + public string AgentName { get; set; } + /// + /// شناسه طرف قرارداد + /// + public long ContractingPartyId { get; set; } + /// + /// شهر + /// + public string City { get; set; } + /// + /// استان + /// + public string Province { get; set; } + /// + /// آدرس + /// + public string Address { get; set; } + /// + /// شناسه حساب کارشناس ارشد قرارداد + /// + public long SeniorContractAccountId { get; set; } + /// + /// شناسه حساب کارشناس قرارداد + /// + public long JuniorContractAccountId { get; set; } + /// + /// شناسه حساب کارشناس ارشد بیمه + /// + public long SeniorInsuranceAccountId { get; set; } + /// + /// شناسه حساب کارشناس بیمه + /// + public long JuniorInsuranceAccountId { get; set; } + /// + /// باز بودن در تعطیلات + /// + public bool OpenInHolidays { get; set; } + /// + /// محاسبه نوبت کاری در فیش حقوقی + /// + public bool RotatingShiftCompute { get; set; } + + /// + /// ایجاد قرارداد + /// + public bool CreateContract { get; set; } + /// + /// امضاء قراداد + /// + public bool SignContract { get; set; } + /// + /// ایجات تصف��ه حساب + /// + public bool CreateCheckout { get; set; } + /// + /// امضاء تصفیه حساب + /// + public bool SignCheckout { get; set; } + /// + /// تصفیه حساب بصورت استاتیک محاصبه شود + /// + public bool IsStaticCheckout { get; set; } + /// + /// اگر قرارداد بیش از یک ماه باشد و گزینه انتخاب شده منتهی به پایان سال باشد + /// این آیتم + /// True + /// است + /// + public IsActive CutContractEndOfYear { get; set; } + /// + /// سرویس تصفیه حساب سفارشی + /// + public string HasCustomizeCheckoutService { get; set; } + + /// + /// محاسبه اضافه کار فیش حقوقی در لیست بیمه + /// + public bool InsuranceCheckoutOvertime { get; set; } + /// + /// محاسبه حق اولاد در لیست بیمه + /// + public bool InsuranceCheckoutFamilyAllowance { get; set; } + /// + /// حضور و غیاب رایگان ویژه + /// + public string HasRollCallFreeVip { get; set; } + /// + /// مدت قرارداد + /// + public string ContractTerm { get; set; } + /// + /// مخفی کردن کل پرداخت + /// + public bool TotalPaymentHide { get; set; } + /// + /// نوع ارسال بیمه + /// + public string TypeOfInsuranceSend { get; set; } + /// + /// کد بیمه + /// + public string InsuranceCode { get; set; } + + /// + /// مشمول دستمزد مقطوع + /// + public bool FixedSalary { get; set; } + + /// + /// صنف + /// + public long InsuranceJobId { get; set; } + + /// + /// جمعیت شهر + /// + public string Population { get; set; } + + /// + /// شماره تماس نماینده کارگاه + /// + public string AgentPhone { get; set; } + + public string TypeOfContract { get; set; } + /// + /// ردیف پیمان + /// + public string AgreementNumber { get; set; } + + public string ComputeOptions { get; set; } + public bool AddYearsPay { get; set; } + public bool AddLeavePay { get; set; } + public string BonusesOptions { get; set; } + public string YearsOptions { get; set; } } \ No newline at end of file diff --git a/CompanyManagment.Application/EmployerApplication.cs b/CompanyManagment.Application/EmployerApplication.cs index 94dd9b66..166938d2 100644 --- a/CompanyManagment.Application/EmployerApplication.cs +++ b/CompanyManagment.Application/EmployerApplication.cs @@ -7,6 +7,7 @@ using _0_Framework.Application; using _0_Framework.Application.Enums; using _0_Framework.Exceptions; using Company.Domain.empolyerAgg; +using Company.Domain.InstitutionContractAgg; using Company.Domain.WorkshopAgg; using CompanyManagment.App.Contracts.Checkout; using CompanyManagment.App.Contracts.Employer; @@ -26,9 +27,10 @@ public class EmployerApplication : IEmployerApplication public bool registerIdIsOk = true; public bool nationalIdIsOk = true; - private readonly InstitutionContractRepository _institutionContractRepository; + private readonly IInstitutionContractRepository _institutionContractRepository; - public EmployerApplication(IEmployerRepository employerRepository, IWorkshopRepository workshopRepository, InstitutionContractRepository institutionContractRepository) + public EmployerApplication(IEmployerRepository employerRepository, IWorkshopRepository workshopRepository, + InstitutionContractRepository institutionContractRepository) { _EmployerRepository = employerRepository; _workshopRepository = workshopRepository; @@ -1297,8 +1299,8 @@ public class EmployerApplication : IEmployerApplication OperationResult createEmployerResult = command.LegalType switch { - LegalType.Real => CreateRealEmployerRegistration(command.RealEmployer, command.ContractingPartyId), - LegalType.Legal => CreateLegalEmployerRegistration(command.LegalEmployer, command.ContractingPartyId), + LegalType.Real => await CreateRealEmployerRegistration(command.RealEmployer, command.ContractingPartyId), + LegalType.Legal => await CreateLegalEmployerRegistration(command.LegalEmployer, command.ContractingPartyId), _ => throw new ArgumentOutOfRangeException() }; var employer = createEmployerResult.Data; @@ -1306,13 +1308,139 @@ public class EmployerApplication : IEmployerApplication if (!createEmployerResult.IsSuccedded) return operation.Failed(createEmployerResult.Message); - var workshopDetails = await _institutionContractRepository.GetInstitutionWorkshopDetails(command.InstitutionWorkshopDetailsId); + var workshopDetails = + await _institutionContractRepository.GetInstitutionWorkshopDetails(command.InstitutionWorkshopDetailsId); workshopDetails.AddEmployer(employer.id); - + await _institutionContractRepository.SaveChangesAsync(); - + return operation.Succcedded(); } + private async Task> CreateLegalEmployerRegistration( + CreateLegalEmployerWorkflowRegistration command, long contractingPartyId) + { + if (string.IsNullOrWhiteSpace(command.CeoLName)) + command.CeoLName = "#"; + var opration = new OperationResult(); + if (_EmployerRepository.Exists(x => + x.LName == command.CompanyName && x.NationalId == command.NationalId && + x.EmployerLName == command.CeoLName)) + return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد"); + + if (_EmployerRepository.Exists(x => + x.NationalId == command.NationalId && !string.IsNullOrWhiteSpace(command.NationalId) && + x.NationalId != null)) + { + return opration.Failed(" شناسه ملی وارد شده تکراری است"); + } + + if (_EmployerRepository.Exists(x => x.LName == command.CompanyName)) + { + return opration.Failed("نام شرکت وارد شده تکراری است"); + } + + if (_EmployerRepository.Exists(x => + x.RegisterId == command.RegisterId && !string.IsNullOrWhiteSpace(command.RegisterId) && + x.RegisterId != null)) + { + return opration.Failed(" شماره ثبت وارد شده تکراری است"); + } + + if (!string.IsNullOrEmpty(command.NationalId) && command.NationalId.Length != 11) + { + return opration.Failed(" شناسه ملی باید 11 رقم باشد"); + } + + if (!string.IsNullOrWhiteSpace(command.CeoNationalCode)) + { + if (command.CeoNationalCode.NationalCodeValid() != "valid") + { + return opration.Failed("کد ملی وارد شده نا معتبر است"); + } + } + + string initial = "1300/10/11"; + var dateOfBirth = command.CeoDateOfBirth?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime(); + var dateOfIssue = command.CeoDateOfBirth?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime(); + + var gender = command.Gender switch + { + Gender.Male => "مرد", + Gender.Female => "زن", + Gender.None => null, + _ => throw new BadRequestException("جنسیت وارد شده نامعتبر است") + }; + + + var legalEmployerData = new Employer(command.CeoFName, command.CompanyName, contractingPartyId, + gender, + command.CeoNationalCode, command.CeoIdNumber, "ایرانی", command.CeoFatherName, dateOfBirth, + dateOfIssue, command.CeoPlaceOfIssue, command.RegisterId, command.NationalId, command.CeoLName, + "حقوقی", command.PhoneNumber, + command.TelephoneNumber, "true", command.GovernmentSystemInfo.MclUsername, + command.GovernmentSystemInfo.MclPassword, + command.GovernmentSystemInfo.EServiceUsername, command.GovernmentSystemInfo.EServicePassword, + command.GovernmentSystemInfo.TaxUsername, command.GovernmentSystemInfo.TaxPassword, + command.GovernmentSystemInfo.SanaUsername, command.GovernmentSystemInfo.SanaPassword); + + await _EmployerRepository.CreateAsync(legalEmployerData); + await _EmployerRepository.SaveChangesAsync(); + + return opration.Succcedded(legalEmployerData); + } + + private async Task> CreateRealEmployerRegistration( + CreateRealEmployerWorkflowRegistration command, long contractingPartyId) + { + var opration = new OperationResult(); + if (_EmployerRepository.Exists(x => + (x.FName == command.FName && x.LName == command.LName) && x.Nationalcode == command.NationalCode && + x.Nationalcode != null)) + return opration.Failed("امکان ثبت رکورد تکراری وجود ندارد"); + + if (string.IsNullOrWhiteSpace(command.FName)) + return opration.Failed("لطفا نام را وارد کنید"); + + if (!string.IsNullOrWhiteSpace(command.NationalCode)) + { + if (command.NationalCode.NationalCodeValid() != "valid") + { + return opration.Failed("کدملی وارد شده نامعتبر است"); + } + + if (_EmployerRepository.Exists(x => + x.Nationalcode == command.NationalCode && !string.IsNullOrWhiteSpace(command.NationalCode))) + { + return opration.Failed("کد ملی وارد شده تکراری است"); + } + } + + string initial = "1300/10/11"; + var dateOfBirth = command.DateOfBirth?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime(); + var dateOfIssue = command.DateOfIssue?.ToGeorgianDateTime() ?? initial.ToGeorgianDateTime(); + + var gender = command.Gender switch + { + Gender.Male => "مرد", + Gender.Female => "زن", + Gender.None => null, + _ => throw new BadRequestException("جنسیت وارد شده نامعتبر است") + }; + + var employerData = new Employer(command.FName, command.LName, contractingPartyId, gender, + command.NationalCode, command.IdNumber, "ایرانی", command.FatherName, dateOfBirth, + dateOfIssue, command.PlaceOfIssue, "*", "*", "*", "حقیقی", command.PhoneNumber, + command.Telephone, "true", command.GovernmentSystemInfo.MclUsername, + command.GovernmentSystemInfo.MclPassword, command.GovernmentSystemInfo.EServiceUsername, + command.GovernmentSystemInfo.EServicePassword, + command.GovernmentSystemInfo.TaxUsername, command.GovernmentSystemInfo.TaxPassword, + command.GovernmentSystemInfo.SanaUsername, command.GovernmentSystemInfo.SanaPassword); + + await _EmployerRepository.CreateAsync(employerData); + await _EmployerRepository.SaveChangesAsync(); + + return opration.Succcedded(employerData); + } #endregion } \ No newline at end of file diff --git a/CompanyManagment.Application/WorkshopAppliction.cs b/CompanyManagment.Application/WorkshopAppliction.cs index ad306adc..4d5a4396 100644 --- a/CompanyManagment.Application/WorkshopAppliction.cs +++ b/CompanyManagment.Application/WorkshopAppliction.cs @@ -19,6 +19,7 @@ using CompanyManagment.App.Contracts.Workshop; using CompanyManagment.App.Contracts.Workshop.DTOs; using CompanyManagment.App.Contracts.WorkshopPlan; using CompanyManagment.EFCore.Migrations; +using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration.UserSecrets; using Microsoft.Identity.Client; @@ -39,7 +40,12 @@ public class WorkshopAppliction : IWorkshopApplication private readonly IRollCallServiceApplication _rollCallServiceApplication; private readonly IPasswordHasher _passwordHasher; - public WorkshopAppliction(IWorkshopRepository workshopRepository, ILeftWorkRepository leftWorkRepository, ILeftWorkInsuranceRepository leftWorkInsuranceRepository, IWorkshopPlanApplication workshopPlanApplication, IEmployeeApplication employeeApplication, IEmployeeChildrenApplication employeeChildrenApplication, IInstitutionContractRepository institutionContractRepository, IPersonalContractingPartyRepository personalContractingPartyRepository, IRollCallServiceApplication rollCallServiceApplication, IPasswordHasher passwordHasher) + public WorkshopAppliction(IWorkshopRepository workshopRepository, ILeftWorkRepository leftWorkRepository, + ILeftWorkInsuranceRepository leftWorkInsuranceRepository, IWorkshopPlanApplication workshopPlanApplication, + IEmployeeApplication employeeApplication, IEmployeeChildrenApplication employeeChildrenApplication, + IInstitutionContractRepository institutionContractRepository, + IPersonalContractingPartyRepository personalContractingPartyRepository, + IRollCallServiceApplication rollCallServiceApplication, IPasswordHasher passwordHasher) { _workshopRepository = workshopRepository; _leftWorkRepository = leftWorkRepository; @@ -135,14 +141,12 @@ public class WorkshopAppliction : IWorkshopApplication && command.CreatePlan.EditGroupPlanlist[i].JobIdList.Count > 0) { groupCounter += 1; - } } if (groupCounter >= 1) { createPlanValidations = true; - } else { @@ -166,7 +170,6 @@ public class WorkshopAppliction : IWorkshopApplication .ContractingPartyId); if (account == null || account.ClientAreaPermission != "true") return operation.Failed("بدلیل نداشتن حساب کاربری کلاینت نمیتوانید سرویس حضور غیاب را فعال کنید"); - } var workshop = new Workshop(command.WorkshopName, command.WorkshopSureName, command.InsuranceCode, @@ -197,12 +200,8 @@ public class WorkshopAppliction : IWorkshopApplication MaxPersonValid = 500, Duration = "12", HasCustomizeCheckoutService = command.HasCustomizeCheckoutService - }; _rollCallServiceApplication.Create(commandSave); - - - } //مشاغل مقطوع @@ -222,9 +221,7 @@ public class WorkshopAppliction : IWorkshopApplication var op = _workshopRepository.CreateAccountLeftWorkAndWorkshopAccounts(accountIds, workshop.id); - return operation.Succcedded(); - } public OperationResult Edit(EditWorkshop command) @@ -242,44 +239,48 @@ public class WorkshopAppliction : IWorkshopApplication { accountIds = command.AccountIdsList.ToList(); } + if (workshop == null) operation.Failed("رکورد مورد نظر وجود ندارد"); if (command.EmployerIdList == null) return operation.Failed("لطفا کارفرما را انتخاب نمایید"); var employer = command.EmployerIdList.ToList(); - //if (_workshopRepository.Exists(x => x.WorkshopName == command.WorkshopName && x.id != command.Id)) - // return operation.Failed(" نام کارگاه تکراری است "); + //if (_workshopRepository.Exists(x => x.WorkshopName == command.WorkshopName && x.id != command.Id)) + // return operation.Failed(" نام کارگاه تکراری است "); - if (command.ContractTerm != "1" && command.ContractTerm != "ForEver" && (command.CutContractEndOfYear != IsActive.False && command.CutContractEndOfYear != IsActive.True)) - return operation.Failed("لطفا تیک قرداداد منتهی به پایان سال را تعیین وضعیت کنید"); + if (command.ContractTerm != "1" && command.ContractTerm != "ForEver" && + (command.CutContractEndOfYear != IsActive.False && command.CutContractEndOfYear != IsActive.True)) + return operation.Failed("لطفا تیک قرداداد منتهی به پایان سال را تعیین وضعیت کنید"); - if (command.ContractTerm == "1" && command.ContractTerm == "ForEver") - command.CutContractEndOfYear = IsActive.None; - if (!command.CreateContract) - { - command.SignContract = false; - command.CreateCheckout = false; - command.SignCheckout = false; - } + if (command.ContractTerm == "1" && command.ContractTerm == "ForEver") + command.CutContractEndOfYear = IsActive.None; + if (!command.CreateContract) + { + command.SignContract = false; + command.CreateCheckout = false; + command.SignCheckout = false; + } - if (!command.CreateCheckout) - { - command.SignCheckout = false; - } + if (!command.CreateCheckout) + { + command.SignCheckout = false; + } - if (command.TypeOfInsuranceSend != null && string.IsNullOrEmpty(command.InsuranceCode)) + if (command.TypeOfInsuranceSend != null && string.IsNullOrEmpty(command.InsuranceCode)) return operation.Failed("لطفا کد بیمه کارگاه را وارد کنید"); - if (_workshopRepository.Exists(x => !string.IsNullOrEmpty(x.InsuranceCode) && x.InsuranceCode == command.InsuranceCode && x.id != command.Id)) + if (_workshopRepository.Exists(x => + !string.IsNullOrEmpty(x.InsuranceCode) && x.InsuranceCode == command.InsuranceCode && + x.id != command.Id)) return operation.Failed("کد بیمه کارگاه تکراری است"); if (command.Address != null && command.State == null) return operation.Failed("لطفا استان و شهر را انتخاب کنید"); if ((command.Address != null && command.State != null) && command.City == "شهرستان") return operation.Failed("لطفا شهر را انتخاب کنید"); - - if (command.Address == null && command.State != null) + + if (command.Address == null && command.State != null) return operation.Failed("لطفا آدرس را وارد کنید"); if (command.ComputeOptions == "0") @@ -294,17 +295,19 @@ public class WorkshopAppliction : IWorkshopApplication if (string.IsNullOrWhiteSpace(command.Population)) return operation.Failed("لطفا جمعیت شهر را انتخاب کنید"); } + var account = new AccountViewModel(); var institutionContract = new InstitutionContract(); if (command.HasRollCallFreeVip == "true") { - - institutionContract = _institutionContractRepository.InstitutionContractByEmployerId(employer.FirstOrDefault()); + institutionContract = + _institutionContractRepository.InstitutionContractByEmployerId(employer.FirstOrDefault()); if (institutionContract == null) return operation.Failed("بدلیل نداشتن قرار داد مالی نمیتوانید سرویس حضور غیاب را فعال کنید"); - account = _personalContractingPartyRepository.GetAccountByPersonalContractingParty(institutionContract.ContractingPartyId); + account = _personalContractingPartyRepository.GetAccountByPersonalContractingParty(institutionContract + .ContractingPartyId); if ((account == null || account.ClientAreaPermission != "true") && command.Id != 11) return operation.Failed("بدلیل نداشتن حساب کاربری کلاینت نمیتوانید سرویس حضور غیاب را فعال کنید"); var searchService = _rollCallServiceApplication.GetAllServiceByWorkshopId(command.Id); @@ -323,7 +326,7 @@ public class WorkshopAppliction : IWorkshopApplication { var hasService = searchService.FirstOrDefault(x => x.IsActiveString == "true" && x.StartService <= DateTime.Now && - x.EndService >= DateTime.Now ); + x.EndService >= DateTime.Now); if (hasService == null) { _rollCallServiceApplication.Create(commandSave); @@ -335,22 +338,18 @@ public class WorkshopAppliction : IWorkshopApplication hasService.HasCustomizeCheckoutService != "true") { _rollCallServiceApplication.AddCustomizeCheckoutServiceVip(hasService.Id); - }else if (command.HasCustomizeCheckoutService == "false" && - hasService.HasCustomizeCheckoutService == "true") + } + else if (command.HasCustomizeCheckoutService == "false" && + hasService.HasCustomizeCheckoutService == "true") { _rollCallServiceApplication.StopVipService(hasService.Id); } - } - } else { _rollCallServiceApplication.Create(commandSave); } - - - } else { @@ -366,16 +365,18 @@ public class WorkshopAppliction : IWorkshopApplication } } } - - workshop.Edit(command.WorkshopName, command.WorkshopSureName, command.InsuranceCode, command.TypeOfOwnership, + + workshop.Edit(command.WorkshopName, command.WorkshopSureName, command.InsuranceCode, command.TypeOfOwnership, command.ArchiveCode, command.AgentName, command.AgentPhone, command.State, command.City, command.Address, - command.TypeOfInsuranceSend, command.TypeOfContract,command.ContractTerm, command.AgreementNumber + command.TypeOfInsuranceSend, command.TypeOfContract, command.ContractTerm, command.AgreementNumber , command.FixedSalary, command.Population, command.InsuranceJobId, command.ZoneName, - command.AddBonusesPay, command.AddYearsPay, command.AddLeavePay, command.TotalPaymentHide,command.IsClassified, - command.ComputeOptions,command.BonusesOptions, command.YearsOptions,command.HasRollCallFreeVip, - command.WorkshopHolidayWorking, command.InsuranceCheckoutOvertime,command.InsuranceCheckoutFamilyAllowance, - command.CreateContract, command.SignContract, command.CreateCheckout, command.SignCheckout, command.CutContractEndOfYear,command.RotatingShiftCompute, command.IsStaticCheckout); + command.AddBonusesPay, command.AddYearsPay, command.AddLeavePay, command.TotalPaymentHide, + command.IsClassified, + command.ComputeOptions, command.BonusesOptions, command.YearsOptions, command.HasRollCallFreeVip, + command.WorkshopHolidayWorking, command.InsuranceCheckoutOvertime, command.InsuranceCheckoutFamilyAllowance, + command.CreateContract, command.SignContract, command.CreateCheckout, command.SignCheckout, + command.CutContractEndOfYear, command.RotatingShiftCompute, command.IsStaticCheckout); _workshopRepository.SaveChanges(); _workshopRepository.RemoveOldRelation(command.Id); @@ -383,18 +384,18 @@ public class WorkshopAppliction : IWorkshopApplication { _workshopRepository.EmployerWorkshop(workshop.id, e); } + var op = _workshopRepository.EditAccountLeftWorkAndWorkshopAccounts(accountIds, workshop.id); foreach (var item in leftWork) { var editLeft = _leftWorkRepository.Get(item.Id); - + editLeft.EditBonuses(command.AddBonusesPay, command.AddYearsPay, command.AddLeavePay); _leftWorkRepository.SaveChanges(); - } + transaction.Complete(); return operation.Succcedded(); - } public string GetWorkshopFullname(long id) @@ -410,8 +411,7 @@ public class WorkshopAppliction : IWorkshopApplication { workshop.CreatePlan = _workshopPlanApplication.GetWorkshopPlanByWorkshopId(id); } - - + return workshop; } @@ -425,6 +425,7 @@ public class WorkshopAppliction : IWorkshopApplication { return _workshopRepository.GetWorkshopAll(); } + public List GetWorkshopAccount() { return _workshopRepository.GetWorkshopAccount(); @@ -450,13 +451,17 @@ public class WorkshopAppliction : IWorkshopApplication InsurancePerson = x.InsurancePerson, ContractLeft = x.ContractLeft, InsurancetLeft = x.InsurancetLeft, - Black = ((x.ContractPerson && x.InsurancePerson && x.InsurancetLeft && x.ContractLeft) || (x.ContractPerson && !x.InsurancePerson && x.ContractLeft) || (x.InsurancePerson && !x.ContractPerson && x.InsurancetLeft)) ? true : false + Black = ((x.ContractPerson && x.InsurancePerson && x.InsurancetLeft && x.ContractLeft) || + (x.ContractPerson && !x.InsurancePerson && x.ContractLeft) || + (x.InsurancePerson && !x.ContractPerson && x.InsurancetLeft)) + ? true + : false }).ToList(); return res; - } #region Vafa + public List GetPersonnelInfo(PersonnelInfoSearchModel searchModel) { var res = _workshopRepository.GetPersonnelInfo(searchModel.WorkshopId); @@ -478,7 +483,11 @@ public class WorkshopAppliction : IWorkshopApplication InsurancePerson = x.InsurancePerson, ContractLeft = x.ContractLeft, InsuranceLeft = x.InsuranceLeft, - Black = ((x.ContractPerson && x.InsurancePerson && x.InsuranceLeft && x.ContractLeft) || (x.ContractPerson && !x.InsurancePerson && x.ContractLeft) || (x.InsurancePerson && !x.ContractPerson && x.InsuranceLeft)) ? true : false, + Black = ((x.ContractPerson && x.InsurancePerson && x.InsuranceLeft && x.ContractLeft) || + (x.ContractPerson && !x.InsurancePerson && x.ContractLeft) || + (x.InsurancePerson && !x.ContractPerson && x.InsuranceLeft)) + ? true + : false, LastStartContractWork = x.LastStartContractWork, LastLeftContractWork = x.LastLeftContractWork, LastStartInsuranceWork = x.LastStartInsuranceWork, @@ -528,7 +537,7 @@ public class WorkshopAppliction : IWorkshopApplication var workshop = _workshopRepository.Get(id); if (workshop == null) return opration.Failed("رکورد مورد نظر یافت نشد"); - + var checkLeftWork = _leftWorkRepository.searchByWorkshopId(id); var checkInsurancLeftWork = _leftWorkInsuranceRepository.searchByWorkshopId(id); if (checkLeftWork.Count > 0 || checkInsurancLeftWork.Count > 0) @@ -539,14 +548,11 @@ public class WorkshopAppliction : IWorkshopApplication { workshop.DeActive(workshop.ArchiveCode); _workshopRepository.SaveChanges(); - return opration.Succcedded(id,"عملیت با موفقیت انجام شد"); + return opration.Succcedded(id, "عملیت با موفقیت انجام شد"); } - + //var s = workshop.ArchiveCode; - - - } public WorkshopViewModel GetWorkshopInfo(long id) @@ -569,10 +575,8 @@ public class WorkshopAppliction : IWorkshopApplication #region client - public OperationResult Remove(long id) { - var opration = new OperationResult(); bool result = _workshopRepository.Remove(id); @@ -583,14 +587,15 @@ public class WorkshopAppliction : IWorkshopApplication } else return opration.Failed("حذف با خطا مواجه نشد"); - return opration; + return opration; } public List GetWorkshopByTextSearchForClient(string textSearch) { return _workshopRepository.GetWorkshopByTextSearchForClient(textSearch); } + public List SearchForClient(WorkshopSearchModel searchModel) { return _workshopRepository.SearchForClient(searchModel); @@ -598,12 +603,12 @@ public class WorkshopAppliction : IWorkshopApplication public OperationResult CreateForClient(CreateWorkshop command) { - throw new NotImplementedException(); + throw new NotImplementedException(); } public OperationResult EditForClient(EditWorkshop command) { - throw new NotImplementedException(); + throw new NotImplementedException(); } //public OperationResult CreateForClient(CreateWorkshop command) //{ @@ -664,7 +669,6 @@ public class WorkshopAppliction : IWorkshopApplication // _workshopRepository.SaveChanges(); - // foreach (var e in employer) // { // _workshopRepository.EmployerWorkshop(workshop.id, e); @@ -674,7 +678,6 @@ public class WorkshopAppliction : IWorkshopApplication // _workshopRepository.CreateWorkshopAccounts(accountIds, workshop.id); - // return operation.Succcedded(); @@ -763,6 +766,7 @@ public class WorkshopAppliction : IWorkshopApplication { return _workshopRepository.GetWorkshopAccountByAcountID(acountID); } + public bool CheckAccountWorkshop(long workshopId) { return _workshopRepository.CheckAccountWorkshop(workshopId); @@ -776,17 +780,13 @@ public class WorkshopAppliction : IWorkshopApplication #endregion - - - - #region NewByHeydari public List GetWorkshopByTextSearch(string searchText) { return _workshopRepository.GetWorkshopByTextSearch(searchText); - } + public List SearchForMain(WorkshopSearchModel searchModel) { return _workshopRepository.SearchForMain(searchModel); @@ -803,7 +803,8 @@ public class WorkshopAppliction : IWorkshopApplication //var workshopObj = _workshopRepository.Get(id); //workshopObj.DeActive(workshopObj.ArchiveCode); //_workshopRepository.SaveChanges(); - return _workshopRepository.DeActiveAll(id); ; + return _workshopRepository.DeActiveAll(id); + ; } else { @@ -818,6 +819,7 @@ public class WorkshopAppliction : IWorkshopApplication return opration; } + public OperationResult ActiveAll(long id) { return _workshopRepository.ActiveAll(id); @@ -828,7 +830,6 @@ public class WorkshopAppliction : IWorkshopApplication return _workshopRepository.PrintWorkshopList(searchModel); } - public AccountViewModel GetClientAccountByWorkshopId(long workshopId) { @@ -837,7 +838,6 @@ public class WorkshopAppliction : IWorkshopApplication } - //public List GetConnectedPersonnelsForMain(long workshopId) //{ // return _workshopRepository.GetConnectedPersonnelsForMain(workshopId); @@ -847,9 +847,9 @@ public class WorkshopAppliction : IWorkshopApplication #region Pooya + public List GetPersonnelInfoRemastered(PersonnelInfoSearchModel searchModel) { - var res = _workshopRepository.GetPersonnelInfoRemastered(searchModel.WorkshopId); res = res.Select(x => new PersonnelInfoViewModel { @@ -900,23 +900,24 @@ public class WorkshopAppliction : IWorkshopApplication res = res.Where(x => x.MaritalStatus == searchModel.MaritalStatus).ToList(); return res; } + #endregion #region Insurance public List GetWorkshopSelectListInsuransce() - { - return _workshopRepository.GetWorkshopSelectListInsuransce(); - } + { + return _workshopRepository.GetWorkshopSelectListInsuransce(); + } #endregion #region Mahan + public async Task> GetWorkshopsForEmployeeStartWork(long accountId) { return await _workshopRepository.GetWorkshopsForEmployeeStartWork(accountId); - } public async Task GetWorkshopsForEmployeeStartWorkCount(long accountId) @@ -939,8 +940,180 @@ public class WorkshopAppliction : IWorkshopApplication return await _workshopRepository.GetSelectList(search, id); } + public async Task> CreateWorkshopWorkflowRegistration( + CreateWorkshopWorkflowRegistration command) + { + bool createPlanValidations = false; + var operation = new OperationResult(); + var transaction = await _workshopRepository.BeginTransactionAsync(); + var contractWorkshopDetail = + await _institutionContractRepository.GetInstitutionWorkshopDetails(command + .InstitutionContractWorkshopDetailId); + if (contractWorkshopDetail == null) + return operation.Failed("جزئیات قرارداد موسسه یافت نشد"); + + var employerIds = contractWorkshopDetail.Employers.Select(x => x.EmployerId).ToList(); + + if (employerIds.Count == 0) + return operation.Failed("لطفا کارفرما را انتخاب نمایید"); + + + if (!string.IsNullOrEmpty(command.TypeOfInsuranceSend) && command.TypeOfInsuranceSend != "false" && + string.IsNullOrEmpty(command.InsuranceCode)) + return operation.Failed("لطفا کد بیمه کارگاه را وارد کنید"); + + + if (string.IsNullOrEmpty(command.WorkshopName) || string.IsNullOrEmpty(command.ArchiveCode)) + return operation.Failed("موارد اجباری را پر کنید"); + + //if (_workshopRepository.Exists(x => x.WorkshopName == command.WorkshopName)) + // return operation.Failed("نام کارگاه تکراری است"); + + if (command.ContractTerm != "1" && command.ContractTerm != "ForEver" && + (command.CutContractEndOfYear != IsActive.False && command.CutContractEndOfYear != IsActive.True)) + return operation.Failed("لطفا تیک قرداداد منتهی به پایان سال را تعیین وضعیت کنید"); + + if (command.ContractTerm == "1" && command.ContractTerm == "ForEver") + command.CutContractEndOfYear = IsActive.None; + if (!command.CreateContract) + { + command.SignContract = false; + command.CreateCheckout = false; + command.SignCheckout = false; + } + + if (!command.CreateCheckout) + { + command.SignCheckout = false; + } + + + if (_workshopRepository.Exists(x => + !string.IsNullOrEmpty(x.InsuranceCode) && x.InsuranceCode == command.InsuranceCode)) + return operation.Failed("کد بیمه کارگاه تکراری است"); + + if (!string.IsNullOrEmpty(command.Address) && string.IsNullOrEmpty(command.Province)) + return operation.Failed("لطفا استان و شهر را انتخاب کنید"); + if ((!string.IsNullOrEmpty(command.Address) && !string.IsNullOrEmpty(command.Province)) && + command.City == "شهرستان") + return operation.Failed("لطفا شهر را انتخاب کنید"); + if (string.IsNullOrEmpty(command.Address) && !string.IsNullOrEmpty(command.Province)) + return operation.Failed("لطفا آدرس را وارد کنید"); + + + if (command.FixedSalary) + { + if (command.InsuranceJobId == 0 || command.InsuranceJobId == null) + return operation.Failed("لطفا صنف را انتخاب کنید"); + if (string.IsNullOrWhiteSpace(command.Population)) + return operation.Failed("لطفا جمعیت شهر را انتخاب کنید"); + } + + // if (command.IsClassified) + // { + // if (string.IsNullOrWhiteSpace(command.CreatePlan.ExecutionDateFa) || + // command.CreatePlan.ExecutionDateFa.Length < 10) + // return operation.Failed("تاریخ اجرای طرح را بصورت صحیح وارد کنید"); + // if (string.IsNullOrWhiteSpace(command.CreatePlan.IncludingDateFa) || + // command.CreatePlan.IncludingDateFa.Length < 10) + // return operation.Failed("تاریخ شمول طرح را بصورت صحیح وارد کنید"); + // var groupCounter = 0; + // // var planEmployeeCounter = command.CreatePlan.EditWorkshopPlanEmployeeList == null ? 0 : command.CreatePlan.EditWorkshopPlanEmployeeList.Count; + // for (int i = 0; i <= command.CreatePlan.EditGroupPlanlist.Count - 1; i++) + // { + // if (!string.IsNullOrWhiteSpace(command.CreatePlan.EditGroupPlanlist[i].AnnualSalaryStr) + // && !string.IsNullOrWhiteSpace(command.CreatePlan.EditGroupPlanlist[i].BaseSalaryStr) + // && !string.IsNullOrWhiteSpace(command.CreatePlan.EditGroupPlanlist[i].JobSalaryStr) + // && command.CreatePlan.EditGroupPlanlist[i].JobIdList.Count > 0) + // { + // groupCounter += 1; + // + // } + // } + // + // if (groupCounter >= 1) + // { + // createPlanValidations = true; + // + // } + // else + // { + // createPlanValidations = false; + // return operation.Failed("وارد کردن اطلاعات تمامی گروه ها الزامی است"); + // } + // } + + //if (string.IsNullOrWhiteSpace(command.TypeOfInsuranceSend)) + // return operation.Failed("لطفا نوع ارسال لیست بیمه را مشخص کنید"); + var account = new AccountViewModel(); + var institutionContract = new InstitutionContract(); + + if (command.HasRollCallFreeVip == "true") + { + institutionContract = _institutionContractRepository.Get(contractWorkshopDetail.InstitutionContractId); + + if (institutionContract == null) + return operation.Failed("بدلیل نداشتن قرار داد مالی نمیتوانید سرویس حضور غیاب را فعال کنید"); + + account = _personalContractingPartyRepository.GetAccountByPersonalContractingParty(institutionContract + .ContractingPartyId); + if (account == null || account.ClientAreaPermission != "true") + return operation.Failed("بدلیل نداشتن حساب کاربری کلاینت نمیتوانید سرویس حضور غیاب را فعال کنید"); + } + + var workshop = new Workshop(command.WorkshopName, command.SureName, command.InsuranceCode, + command.TypeOfOwnership, + command.ArchiveCode, command.AgentName, command.AgentPhone, command.Province, command.City, + command.Address, + command.TypeOfInsuranceSend, command.TypeOfContract, command.ContractTerm, command.AgreementNumber + , command.FixedSalary, command.Population, command.InsuranceJobId, null, false, + command.AddYearsPay, command.AddLeavePay, command.TotalPaymentHide, false, + command.ComputeOptions, + command.BonusesOptions, command.YearsOptions, command.HasRollCallFreeVip, command.OpenInHolidays, + command.InsuranceCheckoutOvertime, command.InsuranceCheckoutFamilyAllowance, command.CreateContract, + command.SignContract, + command.CreateCheckout, command.SignCheckout, command.CutContractEndOfYear, command.RotatingShiftCompute, + command.IsStaticCheckout, institutionContract.ContractingPartyId); + await _workshopRepository.CreateAsync(workshop); + await _workshopRepository.SaveChangesAsync(); + + if (command.HasRollCallFreeVip == "true") + { + var commandSave = new CreateRollCallService() + { + AccountId = account.Id, + WorkshopId = workshop.id, + ServiceType = "vip", + EndService = institutionContract.ContractEndGr, + Amount = 1000, + MaxPersonValid = 500, + Duration = "12", + HasCustomizeCheckoutService = command.HasCustomizeCheckoutService + }; + _rollCallServiceApplication.Create(commandSave); + } + + + foreach (var e in employerIds) + { + _workshopRepository.EmployerWorkshop(workshop.id, e); + } + + var accountIds = StaticWorkshopAccounts.StaticAccountIds.ToList(); + accountIds.Add(command.SeniorContractAccountId); + accountIds.Add(command.JuniorContractAccountId); + accountIds.Add(command.SeniorInsuranceAccountId); + accountIds.Add(command.JuniorInsuranceAccountId); + + var op = _workshopRepository.CreateAccountLeftWorkAndWorkshopAccounts(accountIds.Distinct().ToList(), + workshop.id); + + if (!op.IsSuccedded) + return op; + + await transaction.CommitAsync(); + return operation.Succcedded(); + } + #endregion - - - } \ No newline at end of file diff --git a/ServiceHost/Areas/Admin/Controllers/RegistrationWorkflowController.cs b/ServiceHost/Areas/Admin/Controllers/RegistrationWorkflowController.cs index b282c1e6..b3907b27 100644 --- a/ServiceHost/Areas/Admin/Controllers/RegistrationWorkflowController.cs +++ b/ServiceHost/Areas/Admin/Controllers/RegistrationWorkflowController.cs @@ -1,7 +1,9 @@ -using CompanyManagment.App.Contracts.AdminMonthlyOverview; +using _0_Framework.Application; +using CompanyManagment.App.Contracts.AdminMonthlyOverview; using CompanyManagment.App.Contracts.Employer; using CompanyManagment.App.Contracts.InstitutionContract; using CompanyManagment.App.Contracts.TemporaryClientRegistration; +using CompanyManagment.App.Contracts.Workshop; using Microsoft.AspNetCore.Mvc; using ServiceHost.BaseControllers; @@ -12,14 +14,16 @@ namespace ServiceHost.Areas.Admin.Controllers private readonly ITemporaryClientRegistrationApplication _temporaryClientRegistrationApplication; private readonly IInstitutionContractApplication _institutionContractApplication; private readonly IEmployerApplication _employerApplication; - + private readonly IWorkshopApplication _workshopApplication; + public RegistrationWorkflowController(ITemporaryClientRegistrationApplication temporaryClientRegistrationApplication, - IInstitutionContractApplication institutionContractApplication, IEmployerApplication employerApplication) + IInstitutionContractApplication institutionContractApplication, IEmployerApplication employerApplication, IWorkshopApplication workshopApplication) { _temporaryClientRegistrationApplication = temporaryClientRegistrationApplication; _institutionContractApplication = institutionContractApplication; _employerApplication = employerApplication; + _workshopApplication = workshopApplication; } /// @@ -40,11 +44,19 @@ namespace ServiceHost.Areas.Admin.Controllers var result = await _institutionContractApplication.RegistrationWorkflowItems(institutionContractId); return result; } - - public async Task CreateEmployerForWorkshopDetails(CreateEmployerWorkflowRegistration command) + [HttpPost("create-employer")] + public async Task> CreateEmployerForWorkshopDetails(CreateEmployerWorkflowRegistration command) { var result = await _employerApplication.CreateWorkflowRegistration(command); - return Ok(result); + return result; + } + + [HttpPost("create-workshop")] + public async Task> CreateWorkshop( + CreateWorkshopWorkflowRegistration command) + { + var result = await _workshopApplication.CreateWorkshopWorkflowRegistration(command); + return result; } } } From b1a15bfa54cec6b4ad0285c08d6341c6c8ab69fc Mon Sep 17 00:00:00 2001 From: MahanCh Date: Tue, 26 Aug 2025 09:57:50 +0330 Subject: [PATCH 4/4] feat: update institution plan calculator to use total amount directly and remove workshop list parameter --- .../ITemporaryClientRegistrationApplication.cs | 6 +++--- .../TemporaryClientRegistrationApplication.cs | 13 +++++++------ .../Controllers/institutionContractController.cs | 5 ++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/CompanyManagment.App.Contracts/TemporaryClientRegistration/ITemporaryClientRegistrationApplication.cs b/CompanyManagment.App.Contracts/TemporaryClientRegistration/ITemporaryClientRegistrationApplication.cs index 92b42050..6e9f67be 100644 --- a/CompanyManagment.App.Contracts/TemporaryClientRegistration/ITemporaryClientRegistrationApplication.cs +++ b/CompanyManagment.App.Contracts/TemporaryClientRegistration/ITemporaryClientRegistrationApplication.cs @@ -67,13 +67,13 @@ public interface ITemporaryClientRegistrationApplication /// و هنوز در دیتابیس ثبت نشده اند /// /// - /// + /// /// - /// /// + /// /// Task GetTotalPaymentAndWorkshopList(long contractingPartyTempId, - List workshopList, + double totalPaymentMonth, InstitutionContractDuration duration = InstitutionContractDuration.TwelveMonths, string contractStartType = "currentMonth"); /// diff --git a/CompanyManagment.Application/TemporaryClientRegistrationApplication.cs b/CompanyManagment.Application/TemporaryClientRegistrationApplication.cs index 4f16de8e..8f99e5d8 100644 --- a/CompanyManagment.Application/TemporaryClientRegistrationApplication.cs +++ b/CompanyManagment.Application/TemporaryClientRegistrationApplication.cs @@ -514,18 +514,19 @@ public class TemporaryClientRegistrationApplication : ITemporaryClientRegistrati } public async Task GetTotalPaymentAndWorkshopList(long contractingPartyTempId, - List workshops, InstitutionContractDuration duration = InstitutionContractDuration.TwelveMonths, string contractStartType = "currentMonth") + double totalPaymentMonth, InstitutionContractDuration duration = InstitutionContractDuration.TwelveMonths, string contractStartType = "currentMonth") { //دریافت کارگاه ها double totalPayment1MonthDouble = 0; - //بدست آوردن جمع کل برای یک ماه - foreach (var workshop in workshops) - { - totalPayment1MonthDouble += workshop.WorkshopServicesAmount; - } + // //بدست آوردن جمع کل برای یک ماه + // foreach (var workshop in workshops) + // { + // totalPayment1MonthDouble += workshop.WorkshopServicesAmount; + // } + totalPayment1MonthDouble = totalPaymentMonth; if (totalPayment1MonthDouble == 0) return new ReviewAndPaymentViewModel(); diff --git a/ServiceHost/Areas/Admin/Controllers/institutionContractController.cs b/ServiceHost/Areas/Admin/Controllers/institutionContractController.cs index 3d0b8e2f..1d64670c 100644 --- a/ServiceHost/Areas/Admin/Controllers/institutionContractController.cs +++ b/ServiceHost/Areas/Admin/Controllers/institutionContractController.cs @@ -609,8 +609,7 @@ public class institutionContractController : AdminBaseController public async Task> InstitutionPlanCalculator( [FromBody] InstitutionPlanCalculatorRequest request) { - var res = await _temporaryClientRegistration.GetTotalPaymentAndWorkshopList(0, - request.workshopList, contractStartType: request.ContractStartType,duration:request.Duration); + var res = await _temporaryClientRegistration.GetTotalPaymentAndWorkshopList(0, request.TotalAmountMonth,duration: request.Duration, contractStartType: request.ContractStartType); var response = new InstitutionPlanCalculatorResponse { Installments = res.MonthlyInstallments, @@ -680,7 +679,7 @@ public class WorkshopServiceCalculatorResponse public string TotalAmount { get; set; } } -public record InstitutionPlanCalculatorRequest(List workshopList, +public record InstitutionPlanCalculatorRequest(double TotalAmountMonth, InstitutionContractDuration Duration = InstitutionContractDuration.TwelveMonths, string PaymentModel = "OneTime", string ContractStartType = "currentMonth");