Reopen estimate: carry signature strokes on the estimate payload
Reopening an already-validated estimate showed an empty pad: the
strokes were stored server-side but never sent back. Embed them in the
estimate payload and load them straight into the pad, in the same wire
format PostIt captured — no separate fetch.
- Server: Signature inverse navs get STJ [JsonIgnore] (cycle-safe
under System.Text.Json, matching ApplicationUser); the four estimate
read endpoints Include(e => e.Signatures) so strokes ride the payload
- Client: EstimateDto.Signatures with EstimateSignatureDto (Strokes,
Type=Pro/0|Client/1, CoordinateMax, CapturedAtUtc)
- PostIt: SignaturePadControl.Load(int[]) replaces the buffer and
raises RedrawRequested; EstimateValidationPageViewModel.LoadExisting
Signature() picks the perspective's side off the estimate and loads
it on Attach
- Tests: server asserts GET estimate/{id} carries the strokes; PostIt
VM tests cover load + side-by-perspective
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
parent
827fe6b41f
commit
adc27a006b
7 changed files with 177 additions and 7 deletions
|
|
@ -40,7 +40,7 @@ namespace Yavsc.Controllers
|
|||
else if (!UserIsAdminOrThis(ownerId)) // throw new Exception("Not authorized") ;
|
||||
// or just do nothing
|
||||
return new StatusCodeResult(StatusCodes.Status403Forbidden);
|
||||
return Ok(_context.Estimates.Include(e => e.Bill).Where(e => e.OwnerId == ownerId));
|
||||
return Ok(_context.Estimates.Include(e => e.Bill).Include(e => e.Signatures).Where(e => e.OwnerId == ownerId));
|
||||
}
|
||||
// GET: api/Estimate/5
|
||||
[HttpGet("{id}", Name = "GetEstimate")]
|
||||
|
|
@ -51,7 +51,7 @@ namespace Yavsc.Controllers
|
|||
return BadRequest(ModelState);
|
||||
}
|
||||
|
||||
Estimate estimate = _context.Estimates.Include(e => e.Bill).Single(m => m.Id == id);
|
||||
Estimate estimate = _context.Estimates.Include(e => e.Bill).Include(e => e.Signatures).Single(m => m.Id == id);
|
||||
|
||||
if (estimate == null)
|
||||
{
|
||||
|
|
@ -209,7 +209,7 @@ namespace Yavsc.Controllers
|
|||
public IActionResult GetOngoingEstimatesAsClient()
|
||||
{
|
||||
var uid = User.GetUserId();
|
||||
return Ok(_context.Estimates.Include(e => e.Bill)
|
||||
return Ok(_context.Estimates.Include(e => e.Bill).Include(e => e.Signatures)
|
||||
.Where(e => e.ClientId == uid
|
||||
&& e.ProviderValidationDate != default
|
||||
&& e.ClientValidationDate == default));
|
||||
|
|
@ -222,7 +222,7 @@ namespace Yavsc.Controllers
|
|||
public IActionResult GetOngoingEstimatesAsProvider()
|
||||
{
|
||||
var uid = User.GetUserId();
|
||||
return Ok(_context.Estimates.Include(e => e.Bill)
|
||||
return Ok(_context.Estimates.Include(e => e.Bill).Include(e => e.Signatures)
|
||||
.Where(e => e.OwnerId == uid && e.ClientValidationDate == default));
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue