From ba640494d2e69b65b28abd3f4da7f5bdb2ae88e2 Mon Sep 17 00:00:00 2001 From: mahan Date: Wed, 26 Nov 2025 12:36:51 +0330 Subject: [PATCH] update workshop plan calculation to use latest roll call service status --- .../Pages/Company/AndroidApk/Index.cshtml.cs | 61 +++++++++++-------- 1 file changed, 37 insertions(+), 24 deletions(-) diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/AndroidApk/Index.cshtml.cs b/ServiceHost/Areas/AdminNew/Pages/Company/AndroidApk/Index.cshtml.cs index da0344e2..0939b03c 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/AndroidApk/Index.cshtml.cs +++ b/ServiceHost/Areas/AdminNew/Pages/Company/AndroidApk/Index.cshtml.cs @@ -28,6 +28,7 @@ using Parbad; using Parbad.AspNetCore; using Parbad.Gateway.Sepehr; using System.ComponentModel.DataAnnotations; +using _0_Framework.Application.Enums; using CompanyManagement.Infrastructure.Excel.WorkshopsRollCall; using static ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk.IndexModel2; @@ -46,18 +47,18 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk private readonly IOnlinePayment _onlinePayment; - [BindProperty] public IFormFile File { get; set; } - + [BindProperty] [Required(ErrorMessage = "لطفا نام ورژن را وارد کنید")] [Display(Name = "نام ورژن")] public string VersionName { get; set; } - + [BindProperty] [Required(ErrorMessage = "لطفا کد ورژن را وارد کنید")] [Display(Name = "کد ورژن")] public string VersionCode { get; set; } + [BindProperty] public ApkType SelectedApkType { get; set; } [BindProperty] public bool IsForce { get; set; } @@ -82,7 +83,7 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk public async Task OnPostUpload() { - var result = await _application.CreateAndActive(File,SelectedApkType, VersionName, VersionCode, IsForce); + var result = await _application.CreateAndActive(File, SelectedApkType, VersionName, VersionCode, IsForce); ViewData["message"] = result.Message; return Page(); } @@ -103,35 +104,35 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk var amount = 10000; - var transaction = new PaymentTransaction(30427, amount, "سید حسن مصباح", "https://client.gozareshgir.ir", PaymentTransactionGateWay.SepehrPay); + var transaction = new PaymentTransaction(30427, amount, "سید حسن مصباح", "https://client.gozareshgir.ir", + PaymentTransactionGateWay.SepehrPay); _context.PaymentTransactions.Add(transaction); await _context.SaveChangesAsync(); - var command = new CreatePaymentGatewayRequest() + var command = new CreatePaymentGatewayRequest() { TransactionId = transaction.id.ToString(), Amount = amount, CallBackUrl = callBack - }; + }; var createRes = await _paymentGateway.Create(command); if (createRes.IsSuccess) { - transaction.SetTransactionId(createRes.Token); - await _context.SaveChangesAsync(); + transaction.SetTransactionId(createRes.Token); + await _context.SaveChangesAsync(); - var payUrl = _paymentGateway.GetStartPayUrl(createRes.Token); - return Redirect(payUrl); + var payUrl = _paymentGateway.GetStartPayUrl(createRes.Token); + return Redirect(payUrl); } else { - return BadRequest(createRes.Status + "خطا در ارسال به درگاه پرداخت"); + return BadRequest(createRes.Status + "خطا در ارسال به درگاه پرداخت"); } } - public async Task OnPostShiftDateNew() { @@ -158,21 +159,22 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk .ThenInclude(x => x.LeftWorks) .Include(x => x.Workshop) .ThenInclude(x => x.WorkshopEmployers) - .ThenInclude(x=>x.Employer) + .ThenInclude(x => x.Employer) .Select(x => new WorkshopRollCallExcelViewModel() { EmployerName = x.Workshop.WorkshopEmployers.First().Employer.FullName, IsActive = x.IsActiveString == "true", PersonnelCount = x.Workshop.LeftWorks.Count(l => l.StartWorkDate <= now && l.LeftWorkDate >= now), WorkshopName = x.Workshop.WorkshopFullName - }).OrderByDescending(x=>x.IsActive).ToList(); + }).OrderByDescending(x => x.IsActive).ToList(); var dataBytes = WorkshopRollCallExcelExporter.Export(data); return File(dataBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "RollCallServices.xlsx"); ViewData["message"] = "تومام دو"; return Page(); } - private async System.Threading.Tasks.Task CreateDadmehrWorkshopFaceEmbedding() + + private async System.Threading.Tasks.Task CreateDadmehrWorkshopFaceEmbedding() { var basePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "faces"); @@ -253,7 +255,7 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk } } } - + public async Task OnPostPaymentGateWay(CancellationToken cancellationToken) { var command = new CreatePaymentGatewayRequest() @@ -809,8 +811,10 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk { var today = DateTime.Today; var transaction = await _context.Database.BeginTransactionAsync(); - List ids = [1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062]; - var query = _context.InstitutionContractSet.Where(x=>ids.Contains(x.id)) + + var query = _context.InstitutionContractSet + .Where(a => a.VerifyCode == null + && a.PublicId == Guid.Empty) .Include(x => x.WorkshopGroup) .Join(_context.PersonalContractingParties .Include(x => x.Employers) @@ -820,8 +824,8 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk contract => contract.ContractingPartyId, contractingParty => contractingParty.id, (contract, contractingParty) => new { contract, contractingParty }); - - + + var remoteContractsQuery = query .Where(x => x.contractingParty.Employers .Any(e => e.WorkshopEmployers @@ -844,13 +848,17 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk var personnelCount = w.LeftWorks.Count(lw => lw.StartWorkDate <= today && lw.LeftWorkDate >= today); + var rollCallService = _context.RollCallServices + .Where(x => x.WorkshopId == w.id) + .ToList().MaxBy(x => x.StartService); + var calculation = _clientRegistrationApplication .GetInstitutionPlanForWorkshop(new WorkshopTempViewModel() { CustomizeCheckout = false, Insurance = true, InsuranceInPerson = false, - RollCall = true, + RollCall = rollCallService != null, WorkshopName = "", ContractAndCheckout = true, ContractAndCheckoutInPerson = false, @@ -905,14 +913,19 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk .SelectMany(e => e.WorkshopEmployers.Select(we => we.Workshop)).ToList() .DistinctBy(x => x.id).ToList(); + var initialWorkshop = workshops .Select(w => { var personnelCount = w.LeftWorks.Count(lw => lw.StartWorkDate <= today && lw.LeftWorkDate >= today); - bool hasRollCallPlan = true; - bool hasRollCallPlanInPerson = false; + var rollCallService = _context.RollCallServices + .Where(x => x.WorkshopId == w.id) + .ToList().MaxBy(x => x.StartService); + + bool hasRollCallPlan = rollCallService != null; + bool hasRollCallPlanInPerson = rollCallService != null; bool hasCustomizeCheckoutPlan = w.id == 170; bool hasContractPlan = true; bool hasContractPlanInPerson = true;