From 4707e96359fde0ac0c598b3fb2f5723b024031cb Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Fri, 20 Feb 2026 08:54:07 -0500 Subject: [PATCH] feat: resolve drawing revisions on PDF upload When a PDF hash is set on an export record, resolve or create the associated Drawing and bump its revision if the content hash changed. Co-Authored-By: Claude Opus 4.6 --- FabWorks.Api/Controllers/ExportsController.cs | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/FabWorks.Api/Controllers/ExportsController.cs b/FabWorks.Api/Controllers/ExportsController.cs index 81cb8ea..6ed38d5 100644 --- a/FabWorks.Api/Controllers/ExportsController.cs +++ b/FabWorks.Api/Controllers/ExportsController.cs @@ -212,11 +212,50 @@ namespace FabWorks.Api.Controllers if (record == null) return NotFound(); record.PdfContentHash = request.PdfContentHash; + + if (!string.IsNullOrEmpty(record.DrawingNumber) && !string.IsNullOrEmpty(request.PdfContentHash)) + { + var drawing = await ResolveDrawingAsync(record.DrawingNumber, record.Title, request.PdfContentHash); + record.DrawingId = drawing.Id; + } + await _db.SaveChangesAsync(); return NoContent(); } + private async Task ResolveDrawingAsync(string drawingNumber, string title, string pdfContentHash) + { + var drawing = await _db.Drawings + .FirstOrDefaultAsync(d => d.DrawingNumber == drawingNumber); + + if (drawing == null) + { + drawing = new Drawing + { + DrawingNumber = drawingNumber, + Title = title, + PdfContentHash = pdfContentHash, + Revision = 1 + }; + _db.Drawings.Add(drawing); + } + else if (drawing.PdfContentHash != pdfContentHash) + { + drawing.PdfContentHash = pdfContentHash; + drawing.Revision++; + if (!string.IsNullOrEmpty(title)) + drawing.Title = title; + } + // If hash matches, keep same revision (just update title if needed) + else if (!string.IsNullOrEmpty(title)) + { + drawing.Title = title; + } + + return drawing; + } + [HttpGet("previous-cut-template")] public async Task> GetPreviousCutTemplate( [FromQuery] string drawingNumber,