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 <noreply@anthropic.com>
This commit is contained in:
2026-02-20 08:54:07 -05:00
parent c5bd7fb4c8
commit 4707e96359

View File

@@ -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<Drawing> 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<ActionResult<CutTemplateDto>> GetPreviousCutTemplate(
[FromQuery] string drawingNumber,