diff --git a/Api.SeaHavenIndustries/Controllers/WorkOrderController.cs b/Api.SeaHavenIndustries/Controllers/WorkOrderController.cs index b4706d0..a3cd6b1 100644 --- a/Api.SeaHavenIndustries/Controllers/WorkOrderController.cs +++ b/Api.SeaHavenIndustries/Controllers/WorkOrderController.cs @@ -785,6 +785,43 @@ namespace Api.SeaHavenIndustries.Controllers } } + [HttpPost] + [Route("ChangeAssignment")] + public async Task 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] [Route("AddComment")] public async Task AddComment([FromForm] Comments_DTO model)