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