From 597181bd78a642c09c3b679c678b2ea3623b78af Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Sat, 1 Aug 2026 08:38:20 -0400 Subject: [PATCH] feat: replace Add to Order List with a direct Lock Job action --- CutList.Web/Components/Pages/Jobs/Edit.razor | 70 ++++---------------- 1 file changed, 13 insertions(+), 57 deletions(-) diff --git a/CutList.Web/Components/Pages/Jobs/Edit.razor b/CutList.Web/Components/Pages/Jobs/Edit.razor index 25704bb..84cf971 100644 --- a/CutList.Web/Components/Pages/Jobs/Edit.razor +++ b/CutList.Web/Components/Pages/Jobs/Edit.razor @@ -4,7 +4,6 @@ @inject MaterialService MaterialService @inject StockItemService StockItemService @inject CutListPackingService PackingService -@inject PurchaseItemService PurchaseItemService @inject NavigationManager Navigation @inject IJSRuntime JS @using CutList.Core @@ -374,8 +373,8 @@ else private MultiMaterialPackResult? packResult; private MultiMaterialPackingSummary? summary; private bool optimizing; - private bool addingToOrderList; - private bool addedToOrderList; + private bool lockingJob; + private bool jobLocked; private IEnumerable DistinctShapes => materials.Select(m => m.Shape).Distinct().OrderBy(s => s); private IEnumerable FilteredMaterials => !selectedShape.HasValue @@ -443,7 +442,7 @@ else if (packResult != null) { summary = PackingService.GetSummary(packResult); - addedToOrderList = job.IsLocked; + jobLocked = job.IsLocked; } } catch @@ -1049,18 +1048,18 @@ else
Purchase List
@if (summary.TotalToBePurchasedBins > 0) { - @if (addedToOrderList) + @if (jobLocked) { - Added to orders + Job Locked } else { - } } @@ -1072,12 +1071,6 @@ else } else { - @if (addedToOrderList) - { -
- Items added to order list. View Orders -
- }
@@ -1214,7 +1207,7 @@ else // Refresh job to get updated OptimizedAt job = (await JobService.GetByIdAsync(Id!.Value))!; - addedToOrderList = job.IsLocked; + jobLocked = job.IsLocked; } finally { @@ -1222,55 +1215,18 @@ else } } - private async Task AddToOrderList() + private async Task LockJob() { - addingToOrderList = true; + lockingJob = true; try { - var purchaseItems = new List(); - var stockItems = await StockItemService.GetAllAsync(); - - foreach (var materialResult in packResult!.MaterialResults) - { - if (materialResult.ToBePurchasedBins.Count == 0) continue; - - var materialId = materialResult.Material.Id; - - // Group bins by length to consolidate quantities - foreach (var group in materialResult.ToBePurchasedBins.GroupBy(b => b.Length)) - { - var lengthInches = (decimal)group.Key; - var quantity = group.Count(); - - // Find the matching stock item - var stockItem = stockItems.FirstOrDefault(s => - s.MaterialId == materialId && s.LengthInches == lengthInches); - - if (stockItem != null) - { - purchaseItems.Add(new PurchaseItem - { - StockItemId = stockItem.Id, - Quantity = quantity, - JobId = Id!.Value, - Status = PurchaseItemStatus.Pending - }); - } - } - } - - if (purchaseItems.Count > 0) - { - await PurchaseItemService.CreateBulkAsync(purchaseItems); - } - await JobService.LockAsync(Id!.Value); job = (await JobService.GetByIdAsync(Id!.Value))!; - addedToOrderList = true; + jobLocked = true; } finally { - addingToOrderList = false; + lockingJob = false; } }