public JsonResult CompleteStepInRunProcess(int idStep) { string IdUser = User.Identity.GetUserId(); HttpStatusCode status = HttpStatusCode.OK; string message; object response; StepRun runstep = stepService.findsteprun(idStep); stepService.changestatustep(runstep.Id, IdUser); ProcessRun processrun = processService.findProcessRun(runstep.idProcess); List <Step> liststep = stepService.findStepsOfProcess(processrun.IdProcess); List <TaskProcessRun> listruntask = taskService.findruntaskofstep(idStep); List <TaskProcessRun> listtaskclose = listruntask.Where(x => x.Status1.Name == "Finish").ToList(); List <Step> nextstep = new List <Step>(); StepRun runnextstep = new StepRun(); foreach (Step item in liststep) { if (runstep.NextStep1 == item.Key && item.StartStep == false) { nextstep.Add(item); } } if (nextstep != null) { if (listtaskclose.Count == listruntask.Count) { runnextstep = stepService.completestepinrunprocess(processrun.Id, nextstep); } } foreach (Step nexts in nextstep) { List <TaskProcess> listtasknextstep = taskService.findTaskOfStep(nexts.Id); taskService.addlistruntask(listtasknextstep, runnextstep); } message = "Created ProcessRun Successfully"; response = new { message = message, status = status }; SetFlash(FlashType.success, "Next step success"); return(Json(response, JsonRequestBehavior.AllowGet)); }