コード例 #1
0
        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());
        }