From 3d80adbfffbfd1111e342e7ff2e5552f48eb0d54 Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Sun, 1 Feb 2026 23:55:18 -0500 Subject: [PATCH] feat: Add stock length management to MaterialService Adds CRUD methods for managing material stock lengths, including duplicate checking and quantity tracking. Co-Authored-By: Claude Opus 4.5 --- CutList.Web/Services/MaterialService.cs | 43 +++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/CutList.Web/Services/MaterialService.cs b/CutList.Web/Services/MaterialService.cs index 1e33512..0825661 100644 --- a/CutList.Web/Services/MaterialService.cs +++ b/CutList.Web/Services/MaterialService.cs @@ -76,4 +76,47 @@ public class MaterialService } return await query.AnyAsync(); } + + // Stock Length methods + public async Task> GetStockLengthsAsync(int materialId) + { + return await _context.MaterialStockLengths + .Where(s => s.MaterialId == materialId && s.IsActive) + .OrderBy(s => s.LengthInches) + .ToListAsync(); + } + + public async Task AddStockLengthAsync(MaterialStockLength stockLength) + { + _context.MaterialStockLengths.Add(stockLength); + await _context.SaveChangesAsync(); + return stockLength; + } + + public async Task UpdateStockLengthAsync(MaterialStockLength stockLength) + { + _context.MaterialStockLengths.Update(stockLength); + await _context.SaveChangesAsync(); + } + + public async Task DeleteStockLengthAsync(int id) + { + var stockLength = await _context.MaterialStockLengths.FindAsync(id); + if (stockLength != null) + { + _context.MaterialStockLengths.Remove(stockLength); + await _context.SaveChangesAsync(); + } + } + + public async Task StockLengthExistsAsync(int materialId, decimal lengthInches, int? excludeId = null) + { + var query = _context.MaterialStockLengths + .Where(s => s.MaterialId == materialId && s.LengthInches == lengthInches && s.IsActive); + if (excludeId.HasValue) + { + query = query.Where(s => s.Id != excludeId.Value); + } + return await query.AnyAsync(); + } }