diff --git a/Company.Domain/InstitutionContractAgg/InstitutionContract.cs b/Company.Domain/InstitutionContractAgg/InstitutionContract.cs index 891b5081..6a87105c 100644 --- a/Company.Domain/InstitutionContractAgg/InstitutionContract.cs +++ b/Company.Domain/InstitutionContractAgg/InstitutionContract.cs @@ -235,6 +235,11 @@ public class InstitutionContract : EntityBase VerifyCode = code; VerifyCodeCreation = DateTime.Now; } + + public void SetWorkshopGroup(InstitutionContractWorkshopGroup workshopGroup) + { + WorkshopGroup = workshopGroup; + } } public class InstitutionContractAmendment : EntityBase diff --git a/Company.Domain/InstitutionContractAgg/InstitutionContractWorkshopInitial.cs b/Company.Domain/InstitutionContractAgg/InstitutionContractWorkshopInitial.cs index ba79f1e8..d4f51869 100644 --- a/Company.Domain/InstitutionContractAgg/InstitutionContractWorkshopInitial.cs +++ b/Company.Domain/InstitutionContractAgg/InstitutionContractWorkshopInitial.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using _0_Framework.Domain; using CompanyManagment.App.Contracts.InstitutionContract; @@ -30,9 +31,22 @@ public class InstitutionContractWorkshopInitial:InstitutionContractWorkshopBase WorkshopCurrent = new InstitutionContractWorkshopCurrent(WorkshopName,Services.RollCall,Services.RollCallInPerson, Services.CustomizeCheckout,Services.Contract,Services.ContractInPerson,Services.Insurance, Services.InsuranceInPerson,PersonnelCount,Price,InstitutionContractWorkshopGroupId); - } + public static InstitutionContractWorkshopInitial CreateManual(string workshopName, bool hasRollCallPlan, + bool hasRollCallPlanInPerson, bool hasCustomizeCheckoutPlan, bool hasContractPlan, + bool hasContractPlanInPerson, bool hasInsurancePlan, bool hasInsurancePlanInPerson, + int personnelCount, double price, long workshopId,List employerIds) + { + + var entity = new InstitutionContractWorkshopInitial(workshopName, hasRollCallPlan, + hasRollCallPlanInPerson, hasCustomizeCheckoutPlan, hasContractPlan, hasContractPlanInPerson, + hasInsurancePlan, hasInsurancePlanInPerson, personnelCount, price); + entity.WorkshopCreated = true; + entity.WorkshopId = workshopId; + entity.SetEmployers(employerIds); + return entity; + } } public class InstitutionContractWorkshopDetailEmployer : EntityBase diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/AndroidApk/Index.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Company/AndroidApk/Index.cshtml.cs index d5f2a892..79fcae8f 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/AndroidApk/Index.cshtml.cs +++ b/ServiceHost/Areas/AdminNew/Pages/Company/AndroidApk/Index.cshtml.cs @@ -13,8 +13,12 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.EntityFrameworkCore; using System.Net.Http; +using System.Security.Cryptography.Xml; using System.Text.Json.Serialization; using _0_Framework.Application.PaymentGateway; +using Company.Domain.InstitutionContractAgg; +using Company.Domain.InstitutionPlanAgg; +using CompanyManagment.App.Contracts.TemporaryClientRegistration; using Microsoft.Extensions.Options; using static ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk.IndexModel2; @@ -28,17 +32,21 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk private readonly CompanyContext _context; private readonly AccountContext _accountContext; private readonly IPaymentGateway _paymentGateway; + private readonly ITemporaryClientRegistrationApplication _clientRegistrationApplication; - [BindProperty] - public IFormFile File { get; set; } + [BindProperty] public IFormFile File { get; set; } - public IndexModel(IAndroidApkVersionApplication application, IRollCallDomainService rollCallDomainService, CompanyContext context, AccountContext accountContext, IHttpClientFactory httpClientFactory,IOptions appSetting) + public IndexModel(IAndroidApkVersionApplication application, IRollCallDomainService rollCallDomainService, + CompanyContext context, AccountContext accountContext, IHttpClientFactory httpClientFactory, + IOptions appSetting, + ITemporaryClientRegistrationApplication clientRegistrationApplication) { _application = application; _rollCallDomainService = rollCallDomainService; _context = context; _accountContext = accountContext; + _clientRegistrationApplication = clientRegistrationApplication; _paymentGateway = new AqayePardakhtPaymentGateway(httpClientFactory, appSetting); } @@ -54,7 +62,6 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk } - public IActionResult OnPostShiftDate() { //var startRollCall = new DateTime(2025, 2, 19); @@ -88,6 +95,7 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk ViewData["message"] = "تومام یک"; return Page(); } + public async Task OnPostShiftDateNew2() { //var startRollCall = new DateTime(2025, 3, 21); @@ -100,9 +108,11 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk //await ChangeFridayWorkToWeeklyDayOfWeek(); //await SetPublicId(); + await UpdateInstitutionContract(); ViewData["message"] = "تومام دو"; return Page(); } + public async Task OnPostPaymentGateWay(CancellationToken cancellationToken) { var command = new CreatePaymentGatewayRequest() @@ -122,13 +132,11 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk //TranslateCode(result?.ErrorCode); return Page(); - } - public async System.Threading.Tasks.Task OnGetCallback(string? transid, string? cardnumber, string? tracking_number, string status) + public async System.Threading.Tasks.Task OnGetCallback(string? transid, string? cardnumber, + string? tracking_number, string status) { - - if (string.IsNullOrEmpty(cardnumber) || string.IsNullOrEmpty(tracking_number)) { ViewData["message"] = "پرداخت ناموفق بوده است"; @@ -138,7 +146,6 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk { ViewData["message"] = "پرداخت موفق بوده است"; return; - } //var client = _httpClientFactory.CreateClient(); //var response = await client.PostAsJsonAsync("https://panel.aqayepardakht.ir/api/v2/verify", new @@ -162,11 +169,10 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk { var subAccount = getSubAccount.id; - var workshopIds = _context.WorkshopSubAccounts.Where(x => x.SubAccountId == subAccount).Select(x => x.WorkshopId).ToList(); + var workshopIds = _context.WorkshopSubAccounts.Where(x => x.SubAccountId == subAccount) + .Select(x => x.WorkshopId).ToList(); role.Edit(role.Title, role.RolePermissions.Select(x => x.PermissionCode).ToList(), workshopIds); } - - }); await _accountContext.SaveChangesAsync(); } @@ -180,35 +186,44 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk var newRewards = new List(); foreach (var customizeCheckoutReward in customizeCheckout.CustomizeCheckoutRewards) { - var reward = _context.Rewards.FirstOrDefault(x => x.GrantDate == customizeCheckoutReward.GrantDate && x.Title == customizeCheckoutReward.Title && x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId); + var reward = _context.Rewards.FirstOrDefault(x => + x.GrantDate == customizeCheckoutReward.GrantDate && x.Title == customizeCheckoutReward.Title && + x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId); if (reward != null) { - newRewards.Add(new CustomizeCheckoutTempReward(reward.Amount.ToMoney(), reward.Description, reward.GrantDate, reward.GrantDate.ToFarsi(), reward.IsActive, reward.Title, reward.id)); + newRewards.Add(new CustomizeCheckoutTempReward(reward.Amount.ToMoney(), reward.Description, + reward.GrantDate, reward.GrantDate.ToFarsi(), reward.IsActive, reward.Title, reward.id)); } } var newSalary = new List(); foreach (var customizeCheckoutSalaryAid in customizeCheckout.CustomizeCheckoutSalaryAids) { - var salary = _context.SalaryAids.FirstOrDefault(x => x.SalaryAidDateTime == customizeCheckoutSalaryAid.SalaryAidDateTime && - x.Amount == customizeCheckoutSalaryAid.Amount.MoneyToDouble() && - x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId); + var salary = _context.SalaryAids.FirstOrDefault(x => + x.SalaryAidDateTime == customizeCheckoutSalaryAid.SalaryAidDateTime && + x.Amount == customizeCheckoutSalaryAid.Amount.MoneyToDouble() && + x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId); if (salary != null) { - newSalary.Add(new CustomizeCheckoutTempSalaryAid(salary.Amount.ToMoney(), salary.SalaryAidDateTime, - salary.SalaryAidDateTime.ToFarsi(), salary.CalculationDate, salary.CalculationDate.ToFarsi(), salary.id)); + newSalary.Add(new CustomizeCheckoutTempSalaryAid(salary.Amount.ToMoney(), + salary.SalaryAidDateTime, + salary.SalaryAidDateTime.ToFarsi(), salary.CalculationDate, + salary.CalculationDate.ToFarsi(), salary.id)); } } var newFines = new List(); foreach (var checkoutFine in customizeCheckout.CheckoutFines) { - var fines = _context.Fines.FirstOrDefault(x => x.Amount == checkoutFine.Amount.MoneyToDouble() && x.FineDate == checkoutFine.FineDateGr && - x.Title == checkoutFine.Title && x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId); + var fines = _context.Fines.FirstOrDefault(x => + x.Amount == checkoutFine.Amount.MoneyToDouble() && x.FineDate == checkoutFine.FineDateGr && + x.Title == checkoutFine.Title && x.EmployeeId == customizeCheckout.EmployeeId && + x.WorkshopId == customizeCheckout.WorkshopId); if (fines != null) { - newFines.Add(new CustomizeCheckoutTempFine(fines.Title, fines.Amount.ToMoney(), fines.FineDate.ToFarsi(), fines.FineDate, fines.IsActive, fines.CreationDate, fines.id)); + newFines.Add(new CustomizeCheckoutTempFine(fines.Title, fines.Amount.ToMoney(), + fines.FineDate.ToFarsi(), fines.FineDate, fines.IsActive, fines.CreationDate, fines.id)); } } @@ -216,28 +231,34 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk foreach (var customizeCheckoutLoanInstallment in customizeCheckout.CustomizeCheckoutLoanInstallments) { - - var installments = _context.Loans.SelectMany(x => x.LoanInstallments).AsNoTracking().Where(x => x.Month == customizeCheckoutLoanInstallment.Month && x.Year == customizeCheckoutLoanInstallment.Year && x.AmountForMonth == customizeCheckoutLoanInstallment.AmountForMonth.MoneyToDouble()).ToList(); + var installments = _context.Loans.SelectMany(x => x.LoanInstallments).AsNoTracking().Where(x => + x.Month == customizeCheckoutLoanInstallment.Month && + x.Year == customizeCheckoutLoanInstallment.Year && + x.AmountForMonth == customizeCheckoutLoanInstallment.AmountForMonth.MoneyToDouble()).ToList(); var loans = _context.Loans - .Where(x => x.Amount == customizeCheckoutLoanInstallment.LoanAmount.MoneyToDouble() && x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId).ToList(); + .Where(x => x.Amount == customizeCheckoutLoanInstallment.LoanAmount.MoneyToDouble() && + x.EmployeeId == customizeCheckout.EmployeeId && + x.WorkshopId == customizeCheckout.WorkshopId).ToList(); var installment = installments.First(x => loans.Any(l => l.id == x.LoanId)); if (installment != null) { - newInstallments.Add(new CustomizeCheckoutTempLoanInstallments(installment.AmountForMonth.ToMoney(), + newInstallments.Add(new CustomizeCheckoutTempLoanInstallments( + installment.AmountForMonth.ToMoney(), installment.Month, installment.Year, installment.IsActive, customizeCheckoutLoanInstallment.LoanRemaining, customizeCheckoutLoanInstallment.LoanAmount, installment.Id)); } } + customizeCheckout.SetValueObjects(newFines, newInstallments, newSalary, newRewards); _context.SaveChanges(); - } } + private void SetEntityIdForCheckoutValues() { var customizeCheckouts = _context.CustomizeCheckouts.ToList(); @@ -246,35 +267,43 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk var newRewards = new List(); foreach (var customizeCheckoutReward in customizeCheckout.CustomizeCheckoutRewards) { - var reward = _context.Rewards.FirstOrDefault(x => x.GrantDate == customizeCheckoutReward.GrantDate && x.Title == customizeCheckoutReward.Title && x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId); + var reward = _context.Rewards.FirstOrDefault(x => + x.GrantDate == customizeCheckoutReward.GrantDate && x.Title == customizeCheckoutReward.Title && + x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId); if (reward != null) { - newRewards.Add(new CustomizeCheckoutReward(reward.Amount.ToMoney(), reward.Description, reward.GrantDate, reward.GrantDate.ToFarsi(), reward.IsActive, reward.Title, reward.id)); + newRewards.Add(new CustomizeCheckoutReward(reward.Amount.ToMoney(), reward.Description, + reward.GrantDate, reward.GrantDate.ToFarsi(), reward.IsActive, reward.Title, reward.id)); } } var newSalary = new List(); foreach (var customizeCheckoutSalaryAid in customizeCheckout.CustomizeCheckoutSalaryAids) { - var salary = _context.SalaryAids.FirstOrDefault(x => x.SalaryAidDateTime == customizeCheckoutSalaryAid.SalaryAidDateTime && - x.Amount == customizeCheckoutSalaryAid.Amount.MoneyToDouble() && - x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId); + var salary = _context.SalaryAids.FirstOrDefault(x => + x.SalaryAidDateTime == customizeCheckoutSalaryAid.SalaryAidDateTime && + x.Amount == customizeCheckoutSalaryAid.Amount.MoneyToDouble() && + x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId); if (salary != null) { newSalary.Add(new CustomizeCheckoutSalaryAid(salary.Amount.ToMoney(), salary.SalaryAidDateTime, - salary.SalaryAidDateTime.ToFarsi(), salary.CalculationDate, salary.CalculationDate.ToFarsi(), salary.id)); + salary.SalaryAidDateTime.ToFarsi(), salary.CalculationDate, + salary.CalculationDate.ToFarsi(), salary.id)); } } var newFines = new List(); foreach (var checkoutFine in customizeCheckout.CheckoutFines) { - var fines = _context.Fines.FirstOrDefault(x => x.Amount == checkoutFine.Amount.MoneyToDouble() && x.FineDate == checkoutFine.FineDateGr && - x.Title == checkoutFine.Title && x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId); + var fines = _context.Fines.FirstOrDefault(x => + x.Amount == checkoutFine.Amount.MoneyToDouble() && x.FineDate == checkoutFine.FineDateGr && + x.Title == checkoutFine.Title && x.EmployeeId == customizeCheckout.EmployeeId && + x.WorkshopId == customizeCheckout.WorkshopId); if (fines != null) { - newFines.Add(new CustomizeCheckoutFine(fines.Title, fines.Amount.ToMoney(), fines.FineDate.ToFarsi(), fines.FineDate, fines.IsActive, fines.CreationDate, fines.id)); + newFines.Add(new CustomizeCheckoutFine(fines.Title, fines.Amount.ToMoney(), + fines.FineDate.ToFarsi(), fines.FineDate, fines.IsActive, fines.CreationDate, fines.id)); } } @@ -282,10 +311,14 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk foreach (var customizeCheckoutLoanInstallment in customizeCheckout.CustomizeCheckoutLoanInstallments) { - - var installments = _context.Loans.SelectMany(x => x.LoanInstallments).AsNoTracking().Where(x => x.Month == customizeCheckoutLoanInstallment.Month && x.Year == customizeCheckoutLoanInstallment.Year && x.AmountForMonth == customizeCheckoutLoanInstallment.AmountForMonth.MoneyToDouble()).ToList(); + var installments = _context.Loans.SelectMany(x => x.LoanInstallments).AsNoTracking().Where(x => + x.Month == customizeCheckoutLoanInstallment.Month && + x.Year == customizeCheckoutLoanInstallment.Year && + x.AmountForMonth == customizeCheckoutLoanInstallment.AmountForMonth.MoneyToDouble()).ToList(); var loans = _context.Loans - .Where(x => x.Amount == customizeCheckoutLoanInstallment.LoanAmount.MoneyToDouble() && x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId).ToList(); + .Where(x => x.Amount == customizeCheckoutLoanInstallment.LoanAmount.MoneyToDouble() && + x.EmployeeId == customizeCheckout.EmployeeId && + x.WorkshopId == customizeCheckout.WorkshopId).ToList(); var installment = installments.First(x => loans.Any(l => l.id == x.LoanId)); @@ -297,11 +330,11 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk installment.Id)); } } + customizeCheckout.SetValueObjects(newFines, newInstallments, newSalary, newRewards); _context.SaveChanges(); - } } @@ -316,8 +349,8 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk var calculationMonth = Convert.ToInt32(calculationDate.ToFarsiMonth()); var calculationYear = Convert.ToInt32(calculationDate.ToFarsiYear()); - salaryAid.Edit(salaryAid.Amount, salaryAid.SalaryAidDateTime, 0, UserType.Anonymous, calculationMonth, calculationYear); - + salaryAid.Edit(salaryAid.Amount, salaryAid.SalaryAidDateTime, 0, UserType.Anonymous, calculationMonth, + calculationYear); } await _context.SaveChangesAsync(); @@ -329,7 +362,8 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk .Include(x => x.EmployeeDocumentItemCollection) .Where(x => x.IsConfirmed); - var employeeClientTemps = await _context.EmployeeClientTemps.Where(x => employeeDocuments.Any(a => a.WorkshopId == x.WorkshopId && a.EmployeeId == x.EmployeeId)).ToListAsync(); + var employeeClientTemps = await _context.EmployeeClientTemps.Where(x => + employeeDocuments.Any(a => a.WorkshopId == x.WorkshopId && a.EmployeeId == x.EmployeeId)).ToListAsync(); foreach (var employeeClientTemp in employeeClientTemps) { @@ -341,7 +375,8 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk private async System.Threading.Tasks.Task ChangeIsConfirmed() { - var employeeDocuments = await _context.EmployeeDocuments.Include(x => x.EmployeeDocumentItemCollection).ToListAsync(); + var employeeDocuments = await _context.EmployeeDocuments.Include(x => x.EmployeeDocumentItemCollection) + .ToListAsync(); foreach (var employeeDocument in employeeDocuments) { employeeDocument.UpdateRequiredItemsSubmittedByClient(); @@ -349,24 +384,25 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk employeeDocument.UpdateIsSentToChecker(); employeeDocument.UpdateIsConfirmed(); } + await _context.SaveChangesAsync(); } public async System.Threading.Tasks.Task RefactorEmployeeDocumentItem() { - var employeeDocumentItems = await _context.EmployeeDocumentItems.Where(x => x.UploaderType == UserType.Admin).ToListAsync(); + var employeeDocumentItems = await _context.EmployeeDocumentItems + .Where(x => x.UploaderType == UserType.Admin).ToListAsync(); foreach (var employeeDocumentItem in employeeDocumentItems) { - var roleId = _accountContext.Accounts.FirstOrDefault(x => x.id == employeeDocumentItem.UploaderId)?.RoleId ?? 0; + var roleId = _accountContext.Accounts.FirstOrDefault(x => x.id == employeeDocumentItem.UploaderId) + ?.RoleId ?? 0; employeeDocumentItem.SetRoleId(roleId); } await _context.SaveChangesAsync(); - } - #region Create reward for kebab mahdi public async System.Threading.Tasks.Task CreateRewardForKebabMahdi() @@ -388,8 +424,6 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk // .Where(x => x.EmployeesStatus.Any(s => s.StartDate <= sinzdahBedarDate && s.EndDate >= sinzdahBedarDate)).Select(x=>x.EmployeeId); - - //var employeeSettings = _context.CustomizeWorkshopEmployeeSettings // .Where(x => x.WorkshopId == 170 && // employeesHaveRollCall.Any(c => c == x.EmployeeId)); @@ -444,8 +478,6 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk foreach (var item in workshopAccount) { - - var oldActive = item.FirstOrDefault(x => oldAccountleftworkActiveNow.Contains(x.AccountId)); if (oldActive != null) { @@ -460,11 +492,11 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk foreach (var workshop in item) { - _accountContext.AccountLeftWorks.Add(new AccountLeftWork(startGr, continueWorking, workshop.AccountId, workshop.WorkshopId, roleId, true)); - + _accountContext.AccountLeftWorks.Add(new AccountLeftWork(startGr, continueWorking, + workshop.AccountId, workshop.WorkshopId, roleId, true)); } - _accountContext.SaveChanges(); + _accountContext.SaveChanges(); } var oldDeActive = item.FirstOrDefault(x => oldAccountleftworkDeActivedNow.Contains(x.AccountId)); @@ -478,14 +510,12 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk startGr = new DateTime(2023, 03, 21); foreach (var workshop in item) { - _accountContext.Add(new AccountLeftWork(startGr, new DateTime(2024, 07, 21), workshop.AccountId, workshop.WorkshopId, roleId, false)); - + _accountContext.Add(new AccountLeftWork(startGr, new DateTime(2024, 07, 21), workshop.AccountId, + workshop.WorkshopId, roleId, false)); } + _accountContext.SaveChanges(); - } - - } Console.WriteLine("finished"); @@ -495,7 +525,8 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk #region RefactorRollcall - private void RefactorAllTheRollCallsOnEsfand(List endedRollCalls, List notEndedRollCalls) + private void RefactorAllTheRollCallsOnEsfand(List endedRollCalls, + List notEndedRollCalls) { var countEndedRollCalls = endedRollCalls.Count; var countNotEndedRollCalls = notEndedRollCalls.Count; @@ -517,8 +548,6 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk } _context.SaveChanges(); - - } private void SetBreakTime(List r1) @@ -529,9 +558,9 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk _context.SaveChanges(); } + private void SetRollCall(List r1) { - var endedRollCalls2 = r1.Where(x => x.EndDate != null).ToList(); var countSetTDRollCall = endedRollCalls2.Count; var stepSetTDRollCal = 1; @@ -540,11 +569,13 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk { rollCall.ClearTimeDiff(); } + _context.SaveChanges(); foreach (var endedRollCall in endedRollCalls2) { endedRollCall.Edit(endedRollCall.StartDate.Value, endedRollCall.EndDate.Value, _rollCallDomainService); - Console.WriteLine($"{stepSetTDRollCal} - {countSetTDRollCall} ended Set Time Differences{endedRollCall.id}"); + Console.WriteLine( + $"{stepSetTDRollCal} - {countSetTDRollCall} ended Set Time Differences{endedRollCall.id}"); stepSetTDRollCal += 1; } @@ -554,21 +585,22 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk private void SetRollCall2(List r2) { - - var endedRollCalls2 = r2.Where(x => x.EndDate != null).ToList(); var countSetTDRollCall = endedRollCalls2.Count; var stepSetTDRollCal = 1; foreach (var endedRollCall in endedRollCalls2) { endedRollCall.SetEndDateTime(endedRollCall.EndDate.Value, _rollCallDomainService); - Console.WriteLine($"{stepSetTDRollCal} - {countSetTDRollCall} ended Set Time Differences{endedRollCall.id}"); + Console.WriteLine( + $"{stepSetTDRollCal} - {countSetTDRollCall} ended Set Time Differences{endedRollCall.id}"); stepSetTDRollCal += 1; } //_context.SaveChanges(); } + #endregion + //public async Task OnPostShiftDate() //{ // var customizeWorkshopSettings = _context.CustomizeWorkshopSettings.AsSplitQuery(); @@ -593,7 +625,8 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk private async System.Threading.Tasks.Task ChangeFridayWorkToWeeklyDayOfWeek() { - var employeeSettingsEnumerable = await _context.CustomizeWorkshopEmployeeSettings.Where(x => x.FridayWork == FridayWork.Default).ToListAsync(); + var employeeSettingsEnumerable = await _context.CustomizeWorkshopEmployeeSettings + .Where(x => x.FridayWork == FridayWork.Default).ToListAsync(); foreach (var employeeSetting in employeeSettingsEnumerable) { employeeSetting.FridayWorkToWeeklyDayOfWeek(); @@ -615,19 +648,169 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk } await _context.SaveChangesAsync(); - } private async System.Threading.Tasks.Task SetPublicId() { - var financialStatements = await _context.FinancialStatments.Where(x=>x.PublicId ==Guid.Empty).ToListAsync(); + var financialStatements = + await _context.FinancialStatments.Where(x => x.PublicId == Guid.Empty).ToListAsync(); foreach (var financialStatement in financialStatements) { financialStatement.SetPublicId(); } + await _context.SaveChangesAsync(); } + + #region InstitutionContract + + private async System.Threading.Tasks.Task UpdateInstitutionContract() + { + var today = DateTime.Today; + var transaction = await _context.Database.BeginTransactionAsync(); + var query = _context.InstitutionContractSet + .Include(x => x.WorkshopGroup) + .Join(_context.PersonalContractingParties + .Include(x => x.Employers) + .ThenInclude(x => x.WorkshopEmployers) + .ThenInclude(x => x.Workshop) + .ThenInclude(x => x.LeftWorks), + contract => contract.ContractingPartyId, + contractingParty => contractingParty.id, + (contract, contractingParty) => new { contract, contractingParty }); + + + var remoteContractsQuery = query + .Where(x => x.contractingParty.Employers + .Any(e => e.WorkshopEmployers + .Any(we => we.Workshop.ArchiveCode == "99"))); + + var remoteContracts = remoteContractsQuery.ToList(); + + foreach (var item in remoteContracts) + { + //TODO: set data for institution price + var workshops = item.contractingParty.Employers + .SelectMany(e => e.WorkshopEmployers.Select(we => we.Workshop)).ToList(); + + var initialWorkshop = workshops + .Select(w => + { + var personnelCount = + w.LeftWorks.Count(lw => lw.StartWorkDate <= today && lw.LeftWorkDate >= today); + + var calculation = _clientRegistrationApplication + .GetInstitutionPlanForWorkshop(new WorkshopTempViewModel() + { + CustomizeCheckout = false, + Insurance = true, + InsuranceInPerson = false, + RollCall = true, + WorkshopName = "", + ContractAndCheckout = true, + ContractAndCheckoutInPerson = false, + ContractingPartyTempId = 0, + CountPerson = personnelCount + }); + var amount = calculation.OnlineAndInPersonSumAmountDouble; + + var initial = InstitutionContractWorkshopInitial.CreateManual(w.WorkshopFullName, false, + false, false, true, + false, true, false, personnelCount, amount, + w.id, w.WorkshopEmployers.Select(x => x.EmployerId + ).ToList()); + return initial; + }).ToList(); + + var group = new InstitutionContractWorkshopGroup(item.contract.id, initialWorkshop); + + var current = initialWorkshop.Select(x => + { + var entity = new InstitutionContractWorkshopCurrent(x.WorkshopName, + x.Services.RollCall, x.Services.RollCallInPerson, x.Services.CustomizeCheckout, + x.Services.Contract, + x.Services.ContractInPerson, x.Services.Insurance, x.Services.InsuranceInPerson, + x.PersonnelCount, + x.Price, x.InstitutionContractWorkshopGroupId); + entity.SetEmployers(x.Employers.Select(e => e.EmployerId).ToList()); + + return entity; + }).ToList(); + + group.UpdateCurrentWorkshops(current); + + await _context.AddAsync(group); + await _context.SaveChangesAsync(); + + + item.contract.SetWorkshopGroup(group); + } + + var inPersonContracts = query.Except(remoteContracts); + foreach (var item in inPersonContracts) + { + var workshops = item.contractingParty.Employers + .SelectMany(e => e.WorkshopEmployers.Select(we => we.Workshop)).ToList(); + + var initialWorkshop = workshops + .Select(w => + { + var personnelCount = + w.LeftWorks.Count(lw => lw.StartWorkDate <= today && lw.LeftWorkDate >= today); + + var calculation = _clientRegistrationApplication + .GetInstitutionPlanForWorkshop(new WorkshopTempViewModel() + { + CustomizeCheckout = false, + Insurance = true, + InsuranceInPerson = false, + RollCall = true, + WorkshopName = "", + ContractAndCheckout = true, + ContractAndCheckoutInPerson = false, + ContractingPartyTempId = 0, + CountPerson = personnelCount + }); + + var initial = InstitutionContractWorkshopInitial.CreateManual(w.WorkshopFullName, false, + false, false, true, + false, true, false, personnelCount,0, + w.id, w.WorkshopEmployers.Select(x => x.EmployerId + ).ToList()); + return initial; + }).ToList(); + + var group = new InstitutionContractWorkshopGroup(item.contract.id, initialWorkshop); + + var current = initialWorkshop.Select(x => + { + var entity = new InstitutionContractWorkshopCurrent(x.WorkshopName, + x.Services.RollCall, x.Services.RollCallInPerson, x.Services.CustomizeCheckout, + x.Services.Contract, + x.Services.ContractInPerson, x.Services.Insurance, x.Services.InsuranceInPerson, + x.PersonnelCount, + x.Price, x.InstitutionContractWorkshopGroupId); + entity.SetEmployers(x.Employers.Select(e => e.EmployerId).ToList()); + + return entity; + }).ToList(); + + group.UpdateCurrentWorkshops(current); + + await _context.AddAsync(group); + await _context.SaveChangesAsync(); + + item.contract.SetWorkshopGroup(group); + } + + await _context.SaveChangesAsync(); + + await transaction.CommitAsync(); + } + + #endregion } + public class IndexModel2 : PageModel { private readonly ILogger logger; @@ -639,12 +822,10 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk this.httpClientFactory = httpClientFactory; } - [BindProperty] - public string? Message { get; set; } + [BindProperty] public string? Message { get; set; } public void OnGet() { - } public async Task OnPostAsync() @@ -656,7 +837,8 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk { pin = "aqayepardakht", amount = 100, - callback = System.Web.HttpUtility.UrlEncode(Url.Page("./Index", "Callback", null, Request.Scheme, Request.Host.Value)), + callback = System.Web.HttpUtility.UrlEncode(Url.Page("./Index", "Callback", null, Request.Scheme, + Request.Host.Value)), card_number = "1111111111111111", invoice_id = "{C771E841-B810-413D-9D4C-9F659575B8CC}", mobile = "09121111111", @@ -674,7 +856,8 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk return Page(); } - public async System.Threading.Tasks.Task OnGetCallbackAsync(string? transid, string? cardnumber, string? tracking_number) + public async System.Threading.Tasks.Task OnGetCallbackAsync(string? transid, string? cardnumber, + string? tracking_number) { Message = null; @@ -756,14 +939,11 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk public class TokenResponse { - [JsonPropertyName("status")] - public string? Status { get; set; } + [JsonPropertyName("status")] public string? Status { get; set; } - [JsonPropertyName("code")] - public int? ErrorCode { get; set; } + [JsonPropertyName("code")] public int? ErrorCode { get; set; } - [JsonPropertyName("transid")] - public string? TransactionId { get; set; } + [JsonPropertyName("transid")] public string? TransactionId { get; set; } } } -} +} \ No newline at end of file