mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-10-04 13:42:14 +00:00
Add ChangeAssignment endpoint with audit logging
- POST /api/WorkOrder/ChangeAssignment?id=&assignTo= - Logs old and new user names in audit trail - Returns updated assignment name
This commit is contained in:
parent
d07e24e419
commit
8959efc06b
1 changed files with 37 additions and 0 deletions
|
|
@ -785,6 +785,43 @@ namespace Api.SeaHavenIndustries.Controllers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
|
[Route("ChangeAssignment")]
|
||||||
|
public async Task<IActionResult> ChangeAssignment(int id, string? assignTo)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var data = await _db.workOrders.Where(w => w.Id == id).FirstOrDefaultAsync();
|
||||||
|
if (data == null)
|
||||||
|
return BadRequest(new Response { Status = "Error", Message = "Work order not found" });
|
||||||
|
if (data.AssignTo != assignTo)
|
||||||
|
{
|
||||||
|
var oldUser = data.AssignTo != null ? await _db.Users.FindAsync(data.AssignTo) : null;
|
||||||
|
var newUser = assignTo != null ? await _db.Users.FindAsync(assignTo) : null;
|
||||||
|
_db.WorkOrderAuditLogs.Add(new WorkOrderAuditLog
|
||||||
|
{
|
||||||
|
WorkOrderId = id,
|
||||||
|
UserId = User.FindFirstValue(ClaimTypes.NameIdentifier),
|
||||||
|
FieldName = "AssignedTo",
|
||||||
|
OldValue = oldUser != null ? (oldUser.FirstName + " " + oldUser.LastName).Trim() : "",
|
||||||
|
NewValue = newUser != null ? (newUser.FirstName + " " + newUser.LastName).Trim() : "Unassigned",
|
||||||
|
Action = "assignment_change",
|
||||||
|
CreatedAt = DateTime.UtcNow
|
||||||
|
});
|
||||||
|
}
|
||||||
|
data.AssignTo = assignTo;
|
||||||
|
await _db.SaveChangesAsync();
|
||||||
|
|
||||||
|
var assignedUser = assignTo != null ? await _db.Users.FindAsync(assignTo) : null;
|
||||||
|
var assignedName = assignedUser != null ? (assignedUser.FirstName + " " + assignedUser.LastName).Trim() : "";
|
||||||
|
return Ok(new { message = "Updated Successfully", assignedTo = assignedName });
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(new Response { Status = "Error", Message = ex.Message });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[Route("AddComment")]
|
[Route("AddComment")]
|
||||||
public async Task<IActionResult> AddComment([FromForm] Comments_DTO model)
|
public async Task<IActionResult> AddComment([FromForm] Comments_DTO model)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue