public async Task <ActionResult> ApproveChecklist(int id, int ver) { var checklist = await _repo.GetChecklist(id, ver); var draft = await _repo.GetApprovedDraft(id, ver); var lastEditBy = draft.FileBy; var lastEditTime = draft.FileTime; //make sure checklist is in Draft Status if (checklist.Status != "Draft") { return(BadRequest("Checklist is not in Draft Status")); } //make sure user is not the last edited user if (user == lastEditBy) { return(BadRequest("You were the last to edit this checklist")); } //set previous approved to Archived if (checklist.Version > 1) { var previous = checklist.Version - 1; var archived = await _repo.GetApprovedChecklist(id, (short)previous); archived.Status = "Archived"; var history = LogHistory(archived, "Marked As Archived", (short)previous); _repo.Add(history); } //set currnet Draft version to Approved checklist.Status = "Approved"; var Approvehistory = LogHistory(checklist, "Marked as Approved", checklist.Version); _repo.Add(Approvehistory); await _repo.SaveAll(); //TODO:: send email return(NoContent()); }