using Microsoft.AspNetCore.Diagnostics; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace JobTrackerApi.Services; public sealed class RevisionConflictExceptionHandler : IExceptionHandler { public async ValueTask TryHandleAsync(HttpContext context, Exception exception, CancellationToken cancellationToken) { if (exception is not DbUpdateConcurrencyException) return false; context.Response.StatusCode = StatusCodes.Status409Conflict; await context.Response.WriteAsJsonAsync(new ProblemDetails { Status = StatusCodes.Status409Conflict, Title = "The record changed", Detail = "Your draft was not saved. Reload and review the current record before saving again.", Extensions = { ["code"] = "revision_conflict" }, }, cancellationToken); return true; } }