From 16c00cbd0e7635bb904190e3a4387a6e96534a0f Mon Sep 17 00:00:00 2001 From: MahanCh Date: Thu, 10 Jul 2025 14:43:13 +0330 Subject: [PATCH] feat: create method for query getting workhsop excel datas --- .../Pages/Company/AndroidApk/Index.cshtml.cs | 1076 +++++++++-------- 1 file changed, 562 insertions(+), 514 deletions(-) diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/AndroidApk/Index.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Company/AndroidApk/Index.cshtml.cs index d4956894..53f77a29 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/AndroidApk/Index.cshtml.cs +++ b/ServiceHost/Areas/AdminNew/Pages/Company/AndroidApk/Index.cshtml.cs @@ -13,553 +13,601 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.EntityFrameworkCore; -namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk +namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk; + +[Authorize] +public class IndexModel : PageModel { - [Authorize] - public class IndexModel : PageModel + private readonly IAndroidApkVersionApplication _application; + private readonly IRollCallDomainService _rollCallDomainService; + private readonly CompanyContext _context; + private readonly AccountContext _accountContext; + + [BindProperty] + public IFormFile File { get; set; } + + public IndexModel(IAndroidApkVersionApplication application, IRollCallDomainService rollCallDomainService, CompanyContext context, AccountContext accountContext) { - private readonly IAndroidApkVersionApplication _application; - private readonly IRollCallDomainService _rollCallDomainService; - private readonly CompanyContext _context; - private readonly AccountContext _accountContext; + _application = application; + _rollCallDomainService = rollCallDomainService; + _context = context; + _accountContext = accountContext; + } - [BindProperty] - public IFormFile File { get; set; } + public void OnGet() + { + } - public IndexModel(IAndroidApkVersionApplication application, IRollCallDomainService rollCallDomainService, CompanyContext context, AccountContext accountContext) + public async Task OnPostUpload() + { + var result = await _application.CreateAndActive(File); + ViewData["message"] = result.Message; + return Page(); + } + + + + public IActionResult OnPostShiftDate() + { + //var startRollCall = new DateTime(2025, 2, 19); + //var rollCalls = _context.RollCalls.Where(x => x.ShiftDate >= startRollCall); + + //var endedRollCalls = rollCalls.Where(x => x.EndDate != null).ToList(); + + //var notEndedRollCalls = rollCalls.Where(x => x.EndDate == null).ToList(); + //RefactorAllTheRollCallsOnEsfand(endedRollCalls, notEndedRollCalls); + //CreateRewardForKebabMahdi().GetAwaiter().GetResult(); + SetEntityIdForCheckoutValues(); + SetEntityIdForCheckoutValuesTemp(); + ViewData["message"] = "ایجاد شد"; + return Page(); + } + + public IActionResult OnPostShiftDateNew() + { + var startRollCall = new DateTime(2025, 4, 21); + //var employees = _context.CustomizeWorkshopEmployeeSettings + // .Where(x => x.WorkshopShiftStatus == WorkshopShiftStatus.Rotating).Select(x => x.EmployeeId).ToList(); + + var rollCalls = _context.RollCalls.Where(x => x.ShiftDate >= startRollCall && x.EndDate != null).ToList(); + var r1 = rollCalls.ToList(); + + Console.ForegroundColor = ConsoleColor.DarkRed; + Console.WriteLine("endStep 1 ============"); + SetBreakTime(r1); + + + ViewData["message"] = "تومام یک"; + return Page(); + } + public async Task OnPostShiftDateNew2() + { + //var startRollCall = new DateTime(2025, 3, 21); + //var rollCalls = _context.RollCalls.Where(x => x.StartDate >= startRollCall && x.EndDate != null ).ToList(); + //var r1 = rollCalls.Skip(10000).Take(10000).ToList(); + + //Console.ForegroundColor = ConsoleColor.DarkRed; + //Console.WriteLine("endStep 1 ============"); + //SetRollCall(r1); + + await ChangeFridayWorkToWeeklyDayOfWeek(); + ViewData["message"] = "تومام دو"; + return Page(); + } + + private async System.Threading.Tasks.Task SetWorkshopRoleSubAccount() + { + var subAccountRoles = _accountContext.SubAccountRoles.Include(x=>x.SubAccounts).ToList(); + + subAccountRoles.ForEach(role => { - _application = application; - _rollCallDomainService = rollCallDomainService; - _context = context; - _accountContext = accountContext; - } - - public void OnGet() - { - } - - public async Task OnPostUpload() - { - var result = await _application.CreateAndActive(File); - ViewData["message"] = result.Message; - return Page(); - } - - - - public IActionResult OnPostShiftDate() - { - //var startRollCall = new DateTime(2025, 2, 19); - //var rollCalls = _context.RollCalls.Where(x => x.ShiftDate >= startRollCall); - - //var endedRollCalls = rollCalls.Where(x => x.EndDate != null).ToList(); - - //var notEndedRollCalls = rollCalls.Where(x => x.EndDate == null).ToList(); - //RefactorAllTheRollCallsOnEsfand(endedRollCalls, notEndedRollCalls); - //CreateRewardForKebabMahdi().GetAwaiter().GetResult(); - SetEntityIdForCheckoutValues(); - SetEntityIdForCheckoutValuesTemp(); - ViewData["message"] = "ایجاد شد"; - return Page(); - } - - public IActionResult OnPostShiftDateNew() - { - var startRollCall = new DateTime(2025, 4, 21); - //var employees = _context.CustomizeWorkshopEmployeeSettings - // .Where(x => x.WorkshopShiftStatus == WorkshopShiftStatus.Rotating).Select(x => x.EmployeeId).ToList(); - - var rollCalls = _context.RollCalls.Where(x => x.ShiftDate >= startRollCall && x.EndDate != null).ToList(); - var r1 = rollCalls.ToList(); - - Console.ForegroundColor = ConsoleColor.DarkRed; - Console.WriteLine("endStep 1 ============"); - SetBreakTime(r1); - - - ViewData["message"] = "تومام یک"; - return Page(); - } - public async Task OnPostShiftDateNew2() - { - //var startRollCall = new DateTime(2025, 3, 21); - //var rollCalls = _context.RollCalls.Where(x => x.StartDate >= startRollCall && x.EndDate != null ).ToList(); - //var r1 = rollCalls.Skip(10000).Take(10000).ToList(); - - //Console.ForegroundColor = ConsoleColor.DarkRed; - //Console.WriteLine("endStep 1 ============"); - //SetRollCall(r1); - - await ChangeFridayWorkToWeeklyDayOfWeek(); - ViewData["message"] = "تومام دو"; - return Page(); - } - - private async System.Threading.Tasks.Task SetWorkshopRoleSubAccount() - { - var subAccountRoles = _accountContext.SubAccountRoles.Include(x=>x.SubAccounts).ToList(); - - subAccountRoles.ForEach(role => + var getSubAccount = role.SubAccounts.FirstOrDefault(); + if (getSubAccount != null) { - var getSubAccount = role.SubAccounts.FirstOrDefault(); - if (getSubAccount != null) - { - var subAccount = getSubAccount.id; + var subAccount = getSubAccount.id; - 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); - } + 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(); - } + }); + await _accountContext.SaveChangesAsync(); + } - private void SetEntityIdForCheckoutValuesTemp() + private void SetEntityIdForCheckoutValuesTemp() + { + var customizeCheckouts = _context.CustomizeCheckoutTemps.ToList(); + foreach (var customizeCheckout in customizeCheckouts) { - var customizeCheckouts = _context.CustomizeCheckoutTemps.ToList(); - foreach (var customizeCheckout in customizeCheckouts) + var newRewards = new List(); + foreach (var customizeCheckoutReward in customizeCheckout.CustomizeCheckoutRewards) { - 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); + if (reward != null) { - 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); - - if (salary != null) - { - 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); - if (fines != null) - { - newFines.Add(new CustomizeCheckoutTempFine(fines.Title, fines.Amount.ToMoney(), fines.FineDate.ToFarsi(), fines.FineDate, fines.IsActive, fines.CreationDate, fines.id)); - } - } - - var newInstallments = new List(); - - 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 loans = _context.Loans - .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(), - 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(); - foreach (var customizeCheckout in customizeCheckouts) - { - 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); - if (reward != null) - { - 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); - - if (salary != null) - { - newSalary.Add(new CustomizeCheckoutSalaryAid(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); - if (fines != null) - { - newFines.Add(new CustomizeCheckoutFine(fines.Title, fines.Amount.ToMoney(), fines.FineDate.ToFarsi(), fines.FineDate, fines.IsActive, fines.CreationDate, fines.id)); - } - } - - var newInstallments = new List(); - - 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 loans = _context.Loans - .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 CustomizeCheckoutLoanInstallments(installment.AmountForMonth.ToMoney(), - installment.Month, installment.Year, installment.IsActive, - customizeCheckoutLoanInstallment.LoanRemaining, customizeCheckoutLoanInstallment.LoanAmount, - installment.Id)); - } - } - customizeCheckout.SetValueObjects(newFines, newInstallments, newSalary, newRewards); - - - _context.SaveChanges(); - - } - } - - - private async System.Threading.Tasks.Task SetCalculationDateInSalaryAid() - { - var salaryAids = await _context.SalaryAids.ToListAsync(); - foreach (var salaryAid in salaryAids) - { - var calculationDate = salaryAid.SalaryAidDateTime; - - var calculationMonth = Convert.ToInt32(calculationDate.ToFarsiMonth()); - var calculationYear = Convert.ToInt32(calculationDate.ToFarsiYear()); - - salaryAid.Edit(salaryAid.Amount,salaryAid.SalaryAidDateTime,0,UserType.Anonymous,calculationMonth, calculationYear); - } - await _context.SaveChangesAsync(); - } - - private async System.Threading.Tasks.Task RemoveEmployeeClientTemps() - { - var employeeDocuments = _context.EmployeeDocuments - .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(); - - foreach (var employeeClientTemp in employeeClientTemps) + var newSalary = new List(); + foreach (var customizeCheckoutSalaryAid in customizeCheckout.CustomizeCheckoutSalaryAids) { - _context.EmployeeClientTemps.Remove(employeeClientTemp); - } + var salary = _context.SalaryAids.FirstOrDefault(x => x.SalaryAidDateTime == customizeCheckoutSalaryAid.SalaryAidDateTime && + x.Amount == customizeCheckoutSalaryAid.Amount.MoneyToDouble() && + x.EmployeeId == customizeCheckout.EmployeeId && x.WorkshopId == customizeCheckout.WorkshopId); - await _context.SaveChangesAsync(); - } - - private async System.Threading.Tasks.Task ChangeIsConfirmed() - { - var employeeDocuments = await _context.EmployeeDocuments.Include(x=>x.EmployeeDocumentItemCollection).ToListAsync(); - foreach (var employeeDocument in employeeDocuments) - { - employeeDocument.UpdateRequiredItemsSubmittedByClient(); - employeeDocument.UpdateHasRejectedItems(); - 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(); - foreach (var employeeDocumentItem in employeeDocumentItems) - { - 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() - { - //var esfandCustomizeCheckouts = _context.CustomizeCheckouts - // .Where(x => x.WorkshopId == 170 && x.MonthInt == 12 && x.YearInt == 1403); - - //var sinzdahBedarDate = new DateTime(2025, 04, 2); - //var chahardah = sinzdahBedarDate.AddDays(1); - - - //var workingEmp = _context.LeftWorkList.Where(x => x.WorkshopId == 170 && x.StartWorkDate <= sinzdahBedarDate && x.LeftWorkDate >= sinzdahBedarDate) - // .GroupBy(x => x.EmployeeId).Select(x=>x.Key); - - - //var employeesHaveRollCall = _context.RollCallEmployees - // .Where(x => workingEmp.Contains(x.EmployeeId) && x.WorkshopId == 170) - // .Include(x => x.EmployeesStatus) - // .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)); - - - //var absentEmployeesInSinzdah = employeeSettings.Where(x => !_context.RollCalls - // .Any(a => a.EmployeeId == x.EmployeeId && a.ShiftDate == sinzdahBedarDate)) - // .ToList(); - - //var absentEmployeesInChahardah = employeeSettings.Where(x => !_context.RollCalls - // .Any(a => a.EmployeeId == x.EmployeeId && a.ShiftDate == chahardah)) - // .ToList(); - - //foreach (var employeeSetting in absentEmployeesInSinzdah) - //{ - // var amount = (int)employeeSetting.Salary / 30; - // var reward = new Reward(employeeSetting.EmployeeId, 170, amount, "", 0, sinzdahBedarDate, - // "بابت تعطیلی روز 13 فروردین"); - // _context.Rewards.Add(reward); - //} - - //foreach (var employeeSetting in absentEmployeesInChahardah) - //{ - // var amount = (int)employeeSetting.Salary / 30; - // var reward = new Reward(employeeSetting.EmployeeId, 170, amount, "", 0, sinzdahBedarDate.AddDays(1), - // "بابت تعطیلی روز 14 فروردین"); - // _context.Rewards.Add(reward); - //} - - //await _context.SaveChangesAsync(); - } - - #endregion - - - #region AccountLeftwork - - private void AddToAccountLeftWork() - { - List roleIds = [3, 5, 7, 8, 23, 24]; - var accounts = _accountContext.Accounts - .Where(x => roleIds.Contains(x.RoleId)).Where(x => x.AdminAreaPermission == "true"); - var accountsIds = accounts.Select(x => x.id).ToList(); - var workshopAccount = _context.WorkshopAccounts - .Where(x => accountsIds.Contains(x.AccountId)) - .GroupBy(x => x.AccountId); - - List oldAccountleftworkActiveNow = [300, 332, 333, 334, 18, 25, 14]; - List oldAccountleftworkDeActivedNow = [50, 49, 15]; - var continueWorking = _0_Framework.Application.StaticWorkshopAccounts.ContinuesWorkingDate; - - - foreach (var item in workshopAccount) - { - - - var oldActive = item.FirstOrDefault(x => oldAccountleftworkActiveNow.Contains(x.AccountId)); - if (oldActive != null) + if (salary != null) { - var roleId = accounts.FirstOrDefault(x => x.id == oldActive.AccountId)!.RoleId; - var startGr = item.Key != 25 ? new DateTime(2024, 07, 22) : new DateTime(2024, 08, 22); - //if (item.Key is 380 or 381) - // startGr = new DateTime(2025, 02, 19); - if (item.Key is 14 or 18) - startGr = new DateTime(2020, 05, 21); - if (item.Key is 300) - startGr = new DateTime(2024, 05, 22); - - foreach (var workshop in item) - { - _accountContext.AccountLeftWorks.Add(new AccountLeftWork(startGr, continueWorking, workshop.AccountId, workshop.WorkshopId, roleId, true)); - - } - _accountContext.SaveChanges(); - + newSalary.Add(new CustomizeCheckoutTempSalaryAid(salary.Amount.ToMoney(), salary.SalaryAidDateTime, + salary.SalaryAidDateTime.ToFarsi(), salary.CalculationDate, salary.CalculationDate.ToFarsi(), salary.id)); } + } - var oldDeActive = item.FirstOrDefault(x => oldAccountleftworkDeActivedNow.Contains(x.AccountId)); - if (oldDeActive != null) + 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); + if (fines != null) { - var roleId = accounts.FirstOrDefault(x => x.id == oldDeActive.AccountId)!.RoleId; - var startGr = new DateTime(2022, 03, 21); - if (item.Key == 49) - startGr = new DateTime(2023, 04, 21); - if (item.Key == 50) - 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.SaveChanges(); - + newFines.Add(new CustomizeCheckoutTempFine(fines.Title, fines.Amount.ToMoney(), fines.FineDate.ToFarsi(), fines.FineDate, fines.IsActive, fines.CreationDate, fines.id)); } - - } - Console.WriteLine("finished"); - } + var newInstallments = new List(); - #endregion - - #region RefactorRollcall - - private void RefactorAllTheRollCallsOnEsfand(List endedRollCalls, List notEndedRollCalls) - { - var countEndedRollCalls = endedRollCalls.Count; - var countNotEndedRollCalls = notEndedRollCalls.Count; - - var step1 = 1; - foreach (var rollCall in endedRollCalls) + foreach (var customizeCheckoutLoanInstallment in customizeCheckout.CustomizeCheckoutLoanInstallments) { - rollCall.setStartAndEnd(rollCall.StartDate.Value, rollCall.EndDate.Value, _rollCallDomainService); - Console.WriteLine($"{step1} - {countEndedRollCalls} ended Edit {rollCall.id}"); - step1 += 1; - } - var step2 = 1; - foreach (var notEndedRollCall in notEndedRollCalls) - { - notEndedRollCall.SetStartAgain(notEndedRollCall.StartDate.Value); - Console.WriteLine($"{step2} - {countNotEndedRollCalls} not ended startAgain {notEndedRollCall.id}"); - step2 += 1; + 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(); + + var installment = installments.First(x => loans.Any(l => l.id == x.LoanId)); + + if (installment != null) + { + 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 SetBreakTime(List r1) - { - foreach (var rollCall in r1) - { - } - - _context.SaveChanges(); - } - private void SetRollCall(List r1) - { - - var endedRollCalls2 = r1.Where(x => x.EndDate != null).ToList(); - var countSetTDRollCall = endedRollCalls2.Count; - var stepSetTDRollCal = 1; - - foreach (var rollCall in endedRollCalls2) - { - 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}"); - stepSetTDRollCal += 1; - } - - _context.SaveChanges(); - } - - - 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}"); - stepSetTDRollCal += 1; - } - - //_context.SaveChanges(); - } - #endregion - //public async Task OnPostShiftDate() - //{ - // var customizeWorkshopSettings = _context.CustomizeWorkshopSettings.AsSplitQuery(); - - - // customizeWorkshopSettings = customizeWorkshopSettings.Where(x => x.WorkshopId == 499); - - // var rollCalls = - // _context.RollCalls.Where(x => customizeWorkshopSettings.Any(a => a.WorkshopId == x.WorkshopId)) - // .ToList(); - - // foreach (var rollCall in rollCalls) - // { - // rollCall.SetShiftDate(_rollCallDomainService); - // Console.WriteLine(rollCall.id); - // } - - // await _context.SaveChangesAsync(); - // ViewData["message"] = "تومام"; - // return Page(); - //} - - private async System.Threading.Tasks.Task ChangeFridayWorkToWeeklyDayOfWeek() - { - var employeeSettingsEnumerable = await _context.CustomizeWorkshopEmployeeSettings.Where(x => x.FridayWork == FridayWork.Default).ToListAsync(); - foreach (var employeeSetting in employeeSettingsEnumerable) - { - employeeSetting.FridayWorkToWeeklyDayOfWeek(); - } - - var groupSettings = await _context.CustomizeWorkshopGroupSettings - .Where(x => x.FridayWork == FridayWork.Default).ToListAsync(); - - foreach (var groupSetting in groupSettings) - { - groupSetting.FridayWorkToWeeklyDayOfWeek(); - } - - var workshopSettings = await _context.CustomizeWorkshopSettings - .Where(x => x.FridayWork == FridayWork.Default).ToListAsync(); - foreach (var workshopSetting in workshopSettings) - { - workshopSetting.FridayWorkToWeeklyDayOfWeek(); - } - - await _context.SaveChangesAsync(); - } } + private void SetEntityIdForCheckoutValues() + { + var customizeCheckouts = _context.CustomizeCheckouts.ToList(); + foreach (var customizeCheckout in customizeCheckouts) + { + 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); + if (reward != null) + { + 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); + + if (salary != null) + { + newSalary.Add(new CustomizeCheckoutSalaryAid(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); + if (fines != null) + { + newFines.Add(new CustomizeCheckoutFine(fines.Title, fines.Amount.ToMoney(), fines.FineDate.ToFarsi(), fines.FineDate, fines.IsActive, fines.CreationDate, fines.id)); + } + } + + var newInstallments = new List(); + + 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 loans = _context.Loans + .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 CustomizeCheckoutLoanInstallments(installment.AmountForMonth.ToMoney(), + installment.Month, installment.Year, installment.IsActive, + customizeCheckoutLoanInstallment.LoanRemaining, customizeCheckoutLoanInstallment.LoanAmount, + installment.Id)); + } + } + customizeCheckout.SetValueObjects(newFines, newInstallments, newSalary, newRewards); + + + _context.SaveChanges(); + + } + } + + + private async System.Threading.Tasks.Task SetCalculationDateInSalaryAid() + { + var salaryAids = await _context.SalaryAids.ToListAsync(); + foreach (var salaryAid in salaryAids) + { + var calculationDate = salaryAid.SalaryAidDateTime; + + var calculationMonth = Convert.ToInt32(calculationDate.ToFarsiMonth()); + var calculationYear = Convert.ToInt32(calculationDate.ToFarsiYear()); + + salaryAid.Edit(salaryAid.Amount,salaryAid.SalaryAidDateTime,0,UserType.Anonymous,calculationMonth, calculationYear); + + } + + await _context.SaveChangesAsync(); + } + + private async System.Threading.Tasks.Task RemoveEmployeeClientTemps() + { + var employeeDocuments = _context.EmployeeDocuments + .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(); + + foreach (var employeeClientTemp in employeeClientTemps) + { + _context.EmployeeClientTemps.Remove(employeeClientTemp); + } + + await _context.SaveChangesAsync(); + } + + private async System.Threading.Tasks.Task ChangeIsConfirmed() + { + var employeeDocuments = await _context.EmployeeDocuments.Include(x=>x.EmployeeDocumentItemCollection).ToListAsync(); + foreach (var employeeDocument in employeeDocuments) + { + employeeDocument.UpdateRequiredItemsSubmittedByClient(); + employeeDocument.UpdateHasRejectedItems(); + 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(); + foreach (var employeeDocumentItem in employeeDocumentItems) + { + 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() + { + //var esfandCustomizeCheckouts = _context.CustomizeCheckouts + // .Where(x => x.WorkshopId == 170 && x.MonthInt == 12 && x.YearInt == 1403); + + //var sinzdahBedarDate = new DateTime(2025, 04, 2); + //var chahardah = sinzdahBedarDate.AddDays(1); + + + //var workingEmp = _context.LeftWorkList.Where(x => x.WorkshopId == 170 && x.StartWorkDate <= sinzdahBedarDate && x.LeftWorkDate >= sinzdahBedarDate) + // .GroupBy(x => x.EmployeeId).Select(x=>x.Key); + + + //var employeesHaveRollCall = _context.RollCallEmployees + // .Where(x => workingEmp.Contains(x.EmployeeId) && x.WorkshopId == 170) + // .Include(x => x.EmployeesStatus) + // .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)); + + + //var absentEmployeesInSinzdah = employeeSettings.Where(x => !_context.RollCalls + // .Any(a => a.EmployeeId == x.EmployeeId && a.ShiftDate == sinzdahBedarDate)) + // .ToList(); + + //var absentEmployeesInChahardah = employeeSettings.Where(x => !_context.RollCalls + // .Any(a => a.EmployeeId == x.EmployeeId && a.ShiftDate == chahardah)) + // .ToList(); + + //foreach (var employeeSetting in absentEmployeesInSinzdah) + //{ + // var amount = (int)employeeSetting.Salary / 30; + // var reward = new Reward(employeeSetting.EmployeeId, 170, amount, "", 0, sinzdahBedarDate, + // "بابت تعطیلی روز 13 فروردین"); + // _context.Rewards.Add(reward); + //} + + //foreach (var employeeSetting in absentEmployeesInChahardah) + //{ + // var amount = (int)employeeSetting.Salary / 30; + // var reward = new Reward(employeeSetting.EmployeeId, 170, amount, "", 0, sinzdahBedarDate.AddDays(1), + // "بابت تعطیلی روز 14 فروردین"); + // _context.Rewards.Add(reward); + //} + + //await _context.SaveChangesAsync(); + } + + #endregion + + + #region AccountLeftwork + + private void AddToAccountLeftWork() + { + List roleIds = [3, 5, 7, 8, 23, 24]; + var accounts = _accountContext.Accounts + .Where(x => roleIds.Contains(x.RoleId)).Where(x => x.AdminAreaPermission == "true"); + var accountsIds = accounts.Select(x => x.id).ToList(); + var workshopAccount = _context.WorkshopAccounts + .Where(x => accountsIds.Contains(x.AccountId)) + .GroupBy(x => x.AccountId); + + List oldAccountleftworkActiveNow = [300, 332, 333, 334, 18, 25, 14]; + List oldAccountleftworkDeActivedNow = [50, 49, 15]; + var continueWorking = _0_Framework.Application.StaticWorkshopAccounts.ContinuesWorkingDate; + + + foreach (var item in workshopAccount) + { + + + var oldActive = item.FirstOrDefault(x => oldAccountleftworkActiveNow.Contains(x.AccountId)); + if (oldActive != null) + { + var roleId = accounts.FirstOrDefault(x => x.id == oldActive.AccountId)!.RoleId; + var startGr = item.Key != 25 ? new DateTime(2024, 07, 22) : new DateTime(2024, 08, 22); + //if (item.Key is 380 or 381) + // startGr = new DateTime(2025, 02, 19); + if (item.Key is 14 or 18) + startGr = new DateTime(2020, 05, 21); + if (item.Key is 300) + startGr = new DateTime(2024, 05, 22); + + foreach (var workshop in item) + { + _accountContext.AccountLeftWorks.Add(new AccountLeftWork(startGr, continueWorking, workshop.AccountId, workshop.WorkshopId, roleId, true)); + + } + _accountContext.SaveChanges(); + + } + + var oldDeActive = item.FirstOrDefault(x => oldAccountleftworkDeActivedNow.Contains(x.AccountId)); + if (oldDeActive != null) + { + var roleId = accounts.FirstOrDefault(x => x.id == oldDeActive.AccountId)!.RoleId; + var startGr = new DateTime(2022, 03, 21); + if (item.Key == 49) + startGr = new DateTime(2023, 04, 21); + if (item.Key == 50) + 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.SaveChanges(); + + } + + + } + + Console.WriteLine("finished"); + } + + #endregion + + #region RefactorRollcall + + private void RefactorAllTheRollCallsOnEsfand(List endedRollCalls, List notEndedRollCalls) + { + var countEndedRollCalls = endedRollCalls.Count; + var countNotEndedRollCalls = notEndedRollCalls.Count; + + var step1 = 1; + foreach (var rollCall in endedRollCalls) + { + rollCall.setStartAndEnd(rollCall.StartDate.Value, rollCall.EndDate.Value, _rollCallDomainService); + Console.WriteLine($"{step1} - {countEndedRollCalls} ended Edit {rollCall.id}"); + step1 += 1; + } + + var step2 = 1; + foreach (var notEndedRollCall in notEndedRollCalls) + { + notEndedRollCall.SetStartAgain(notEndedRollCall.StartDate.Value); + Console.WriteLine($"{step2} - {countNotEndedRollCalls} not ended startAgain {notEndedRollCall.id}"); + step2 += 1; + } + + _context.SaveChanges(); + + + } + + private void SetBreakTime(List r1) + { + foreach (var rollCall in r1) + { + } + + _context.SaveChanges(); + } + private void SetRollCall(List r1) + { + + var endedRollCalls2 = r1.Where(x => x.EndDate != null).ToList(); + var countSetTDRollCall = endedRollCalls2.Count; + var stepSetTDRollCal = 1; + + foreach (var rollCall in endedRollCalls2) + { + 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}"); + stepSetTDRollCal += 1; + } + + _context.SaveChanges(); + } + + + 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}"); + stepSetTDRollCal += 1; + } + + //_context.SaveChanges(); + } + #endregion + //public async Task OnPostShiftDate() + //{ + // var customizeWorkshopSettings = _context.CustomizeWorkshopSettings.AsSplitQuery(); + + + // customizeWorkshopSettings = customizeWorkshopSettings.Where(x => x.WorkshopId == 499); + + // var rollCalls = + // _context.RollCalls.Where(x => customizeWorkshopSettings.Any(a => a.WorkshopId == x.WorkshopId)) + // .ToList(); + + // foreach (var rollCall in rollCalls) + // { + // rollCall.SetShiftDate(_rollCallDomainService); + // Console.WriteLine(rollCall.id); + // } + + // await _context.SaveChangesAsync(); + // ViewData["message"] = "تومام"; + // return Page(); + //} + + private async System.Threading.Tasks.Task ChangeFridayWorkToWeeklyDayOfWeek() + { + var employeeSettingsEnumerable = await _context.CustomizeWorkshopEmployeeSettings.Where(x => x.FridayWork == FridayWork.Default).ToListAsync(); + foreach (var employeeSetting in employeeSettingsEnumerable) + { + employeeSetting.FridayWorkToWeeklyDayOfWeek(); + } + + var groupSettings = await _context.CustomizeWorkshopGroupSettings + .Where(x => x.FridayWork == FridayWork.Default).ToListAsync(); + + foreach (var groupSetting in groupSettings) + { + groupSetting.FridayWorkToWeeklyDayOfWeek(); + } + + var workshopSettings = await _context.CustomizeWorkshopSettings + .Where(x => x.FridayWork == FridayWork.Default).ToListAsync(); + foreach (var workshopSetting in workshopSettings) + { + workshopSetting.FridayWorkToWeeklyDayOfWeek(); + } + + await _context.SaveChangesAsync(); + + } + + #region GetDataForExcel + + private async System.Threading.Tasks.Task GetExcelPricingData() + { + _context.PersonalContractingParties.Include(x => x.Employers) + .ThenInclude(x => x.WorkshopEmployers) + .ThenInclude(x => x.Workshop).ThenInclude(x => ).AsSplitQuery().Select(x => new DataExcelResult() + { + ContractingPartyId = x.id, + ContractingPartyName = x.FName + " " + x.LName, + Employers = x.Employers.Select(e => new EmployerExcelResultData() + { + EmployerName = e.FullName, + Id = e.id, + Workshops = e.WorkshopEmployers.Select(we => new WorkshopExcelResultData() + { + Id = we.Workshop.id, + }).ToList() + }).ToList() + }); + } + + #endregion } + +internal class DataExcelResult +{ + public long ContractingPartyId { get; set; } + public string ContractingPartyName { get; set; } + public List Employers { get; set; } +} + +internal class EmployerExcelResultData +{ + public long Id { get; set; } + public string EmployerName { get; set; } + public List Workshops { get; set; } + +} + +class WorkshopExcelResultData +{ + public long Id { get; set; } + public string WorkshopName { get; set; } + public bool HasContract { get; set; } + public bool HasInsurance { get; set; } + public bool HasRollCall { get; set; } + public bool HasCustomizeCheckout { get; set; } +} \ No newline at end of file