public async Task <ActionResult> CreateDraft(int id, short ver, LogChecklist checklist) { if (id < 0 || ver < 0) { return(BadRequest("Id or version was not supplied")); } if (checklist.Status != "Approved") { return(BadRequest("Invalid Status")); } if (await _repo.CheckForDraft(id) != null) { return(BadRequest("Draft already exists")); } var steps = new List <LogChecklistSteps>(); short newVer = ver += 1; foreach (var step in checklist.LogChecklistSteps) { var copy = new LogChecklistSteps { Idchecklist = id, Version = newVer, Step = step.Step, StepText = step.StepText, Title = step.Title }; steps.Add(copy); } var newChecklist = new LogChecklist { Idchecklist = id, Version = newVer, Status = "Draft", Title = checklist.Title, ProdLine = checklist.ProdLine, Rel = checklist.Rel, Scope = checklist.Scope, Type = checklist.Type, LogChecklistSteps = steps }; _repo.Add(newChecklist); _repo.Add(LogHistory(newChecklist, "Create new Checklist Version", newChecklist.Version)); await _repo.SaveAll(); return(CreatedAtAction("GetbyId", new { id = newChecklist.Idchecklist, ver = newChecklist.Version }, newChecklist)); }