update workshop plan calculation to use latest roll call service status

This commit is contained in:
2025-11-26 12:36:51 +03:30
parent 6974a505b4
commit ba640494d2

View File

@@ -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<IActionResult> 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<IActionResult> 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<IActionResult> 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<long> 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;