public ActionResult SaveProtocol(OBK_AssessmentProtocolOP dto) { var old = repo.OBK_AssessmentProtocolOP.FirstOrDefault(x => x.Id == dto.Id); old.Number = dto.Number; old.Executor = dto.Executor; old.ExecuteResult = dto.ExecuteResult; old.Date = DateTime.Now; repo.SaveChanges(); return(Json(new { isSuccess = true }, JsonRequestBehavior.AllowGet)); }
public ActionResult MeetRequirements(Guid declarationId, string comment) { try { var stage = repo.OBK_AssessmentStage .FirstOrDefault(x => x.DeclarationId == declarationId && x.StageId == programStageId); if (stage == null) { throw new ArgumentException("Stage not found"); } var executors = stage.OBK_AssessmentStageExecutors .Where(x => x.ExecutorType == CodeConstManager.OBK_CONTRACT_STAGE_EXECUTOR_TYPE_EXECUTOR) .ToList(); var currentEmployeeId = UserHelper.GetCurrentEmployee().Id; var executor = executors.FirstOrDefault(x => x.ExecutorId == currentEmployeeId); if (executor == null) { throw new ArgumentException("Current employee is not executor"); } executor.ExecuteComment = comment; executor.ExecuteResult = 1; executor.Date = DateTime.Now; repo.SaveChanges(); // Если не все еще подтвердили, просто возвращаем результат bool isAllConfirmed = executors.All(x => x.ExecuteResult == 1); if (!isAllConfirmed) { return(Json(new { isSuccess = true }, JsonRequestBehavior.AllowGet)); } // Если подтвердили все - двигаем заявку дальше на заполнение протоколов и заполнение отчета ОП stage.StageStatusId = repo.OBK_Ref_StageStatus .Where(x => x.Code == "OPProgramConfirmed") .Select(x => x.Id) .FirstOrDefault(); var protocolList = new List <OBK_AssessmentProtocolOP>(); var i = 0; stage.OBK_AssessmentDeclaration .OBK_Contract .OBK_RS_Products .Where(x => x.ExpertisePlace == 1) .ToList().ForEach(product => { var protocol = new OBK_AssessmentProtocolOP { DeclarationId = stage.DeclarationId, ExecuteResult = null, Executor = null, Number = $"{stage.OBK_AssessmentDeclaration.Number}-{(++i).ToString()}", NameRu = product.NameRu, NameKz = product.NameKz }; protocolList.Add(protocol); }); repo.OBK_AssessmentProtocolOP.AddRange(protocolList); var reportOP = new OBK_AssessmentReportOP { Date = null, ExecuteResult = null, Result = null, DeclarationId = declarationId, StageStatusId = repo.OBK_Ref_StageStatus.Where(x => x.Code == "OPReportNew").Select(x => x.Id).Single() }; repo.OBK_AssessmentReportOP.Add(reportOP); repo.SaveChanges(); var reportExecutors = new List <OBK_AssessmentReportOPExecutors>(); repo.OBK_AssessmentStageExecutors .Where(x => x.AssessmentStageId == stage.Id) .ToList() .ForEach(e => { var newExecutor = new OBK_AssessmentReportOPExecutors { ReportId = reportOP.Id, EmployeeId = e.ExecutorId, ExecuteResult = null, Type = e.ExecutorType }; repo.OBK_AssessmentReportOPExecutors.Add(newExecutor); }); repo.SaveChanges(); return(Json(new { isSuccess = true, data = new { StatusCode = "OPProgramConfirmed" } }, JsonRequestBehavior.AllowGet)); } catch (ArgumentException ex) { Response.StatusCode = 400; return(Json(ex, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { Response.StatusCode = 500; return(Json(ex, JsonRequestBehavior.AllowGet)); } }