Ejemplo n.º 1
0
        public ActionResult SendToOP(OBK_AssessmentDeclaration declaration)
        {
            var declarationStage = repo.OBK_AssessmentStage.FirstOrDefault(x => x.DeclarationId == declaration.Id && x.StageId == 15);

            if (declarationStage == null)
            {
                declarationStage = new OBK_AssessmentStage
                {
                    Id            = Guid.NewGuid(),
                    StageId       = 15,
                    StageStatusId = 2,
                    DeclarationId = declaration.Id,
                    StartDate     = DateTime.Now
                };
                repo.OBK_AssessmentStage.Add(declarationStage);
            }
            else
            {
                declarationStage.StageStatusId = 2;
                declarationStage.StartDate     = DateTime.Now;
            }

            var executor = repo.OBK_AssessmentStageExecutors.FirstOrDefault(x => x.AssessmentStageId == declarationStage.Id && x.ExecutorType == 2);

            if (executor == null)
            {
                executor = new OBK_AssessmentStageExecutors
                {
                    AssessmentStageId = declarationStage.Id,
                    ExecutorId        = UserHelper.GetCurrentEmployee().Id,
                    ExecutorType      = 2
                };
                repo.OBK_AssessmentStageExecutors.Add(executor);
            }
            else
            {
                executor.ExecutorId = UserHelper.GetCurrentEmployee().Id;
            }

            var stage = repo.OBK_AssessmentStage.FirstOrDefault(x => x.DeclarationId == declaration.Id && x.StageId == 2);

            stage.StageStatusId = 13;
            stage.EndDate       = DateTime.Now;
            stage.FactEndDate   = stage.EndDate;
            declaration         = repo.OBK_AssessmentDeclaration.FirstOrDefault(x => x.Id == declaration.Id);
            var status = repo.OBK_Ref_Status.FirstOrDefault(x => x.Code == "30");

            declaration.StatusId = status.Id;
            repo.SaveChanges();
            return(Json(new { isSuccess = true }));
        }
Ejemplo n.º 2
0
        public string GetSignData(Guid id)
        {
            var reslutStage = AppContext.OBK_AssessmentStage.FirstOrDefault(
                e => e.DeclarationId == id && e.StageId == CodeConstManager.STAGE_OBK_EXPERTISE_DOC);

            if (reslutStage == null)
            {
                return(null);
            }

            OBK_AssessmentStage ad = new OBK_AssessmentStage {
                Id            = reslutStage.Id,
                DeclarationId = reslutStage.DeclarationId
            };
            var xmlData = SerializeHelper.SerializeDataContract(ad);

            return(xmlData.Replace("utf-16", "utf-8"));
        }
Ejemplo n.º 3
0
        public ActionResult GetSign(Guid id)
        {
            var reslutStage = repo.OBK_AssessmentStage.FirstOrDefault(
                e => e.DeclarationId == id && e.StageId == CodeConstManager.STAGE_OBK_PIMS);

            if (reslutStage == null)
            {
                return(null);
            }

            OBK_AssessmentStage ad = new OBK_AssessmentStage
            {
                Id            = reslutStage.Id,
                DeclarationId = reslutStage.DeclarationId
            };
            var xmlData  = SerializeHelper.SerializeDataContract(ad);
            var signData = xmlData.Replace("utf-16", "utf-8");

            return(Json(new { data = signData }, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 4
0
        public ActionResult Program(Guid declarationId)
        {
            var stage = repo.OBK_AssessmentStage.FirstOrDefault(x => x.DeclarationId == declarationId && x.StageId == programStageId);

            if (stage == null)
            {
                stage = new OBK_AssessmentStage
                {
                    Id            = Guid.NewGuid(),
                    StartDate     = DateTime.Now,
                    DeclarationId = declarationId,
                    StageId       = programStageId,
                    StageStatusId = repo.OBK_Ref_StageStatus.Where(x => x.Code == "OPProgramNew").Select(x => x.Id).FirstOrDefault()
                };
                repo.OBK_AssessmentStage.Add(stage);

                var currentEmployeeId = UserHelper.GetCurrentEmployee().Id;
                var members           = repo.OBK_OP_Commission
                                        .Where(x => x.DeclarationId == declarationId)
                                        .Select(x => new { x.RoleId, x.EmployeeId })
                                        .ToList();
                members.ForEach(member =>
                {
                    var executor = new OBK_AssessmentStageExecutors
                    {
                        AssessmentStageId = stage.Id,
                        ExecutorId        = member.EmployeeId,
                        ExecutorType      = member.RoleId == repo.OBK_OP_CommissionRoles.Single(x => x.Code == "Chairman").Id
                            ? CodeConstManager.OBK_CONTRACT_STAGE_EXECUTOR_TYPE_ASSIGNING
                            : CodeConstManager.OBK_CONTRACT_STAGE_EXECUTOR_TYPE_EXECUTOR
                    };
                    repo.OBK_AssessmentStageExecutors.Add(executor);
                });
                repo.SaveChanges();
            }
            return(PartialView(declarationId));
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Перевод заявления на следующий этап
        /// </summary>
        /// <param name="declaration"></param>
        /// <param name="stageCode"></param>
        public bool ToNextStage(Guid declarationId, Guid?fromStageId, int[] nextStageIds, out string resultDescription)
        {
            resultDescription = null;
            string[] activeStageCodes =
            {
                OBK_Ref_StageStatus.New, OBK_Ref_StageStatus.InWork,
                OBK_Ref_StageStatus.InReWork
            };
            //var declaration = AppContext.OBK_AssessmentDeclaration.FirstOrDefault(e => e.Id == declarationId);
            //if (declaration.EXP_DIC_Type.Code != EXP_DIC_Type.Registration)
            //{
            //  //return ToNextStage(declaration, fromStageId, nextStageIds, out resultDescription);
            //}
            var currentStage = fromStageId != null
                ? AppContext.OBK_AssessmentStage.FirstOrDefault(e => e.Id == fromStageId)
                : AppContext.OBK_AssessmentStage.FirstOrDefault(
                e => e.DeclarationId == declarationId && activeStageCodes.Contains(e.OBK_Ref_StageStatus.Code));

            var stageStatusNew = GetStageStatusByCode(OBK_Ref_StageStatus.New);

            //закрываем предыдущий этап
            if (currentStage != null) //&& CanCloseStage(currentStage, nextStageIds)
            {
                currentStage.StageStatusId = GetStageStatusByCode(OBK_Ref_StageStatus.Completed).Id;
                currentStage.FactEndDate   = DateTime.Now;
            }
            var isAnalitic = false;

            foreach (var nextStageId in nextStageIds)
            {
                //if (!CanSendToStep(declarationId, fromStageId, nextStageId, out resultDescription)) return false;
                //если имеется уже выполняющийся этап то продолжаем его дальше
                if (AppContext.OBK_AssessmentStage.Any(e => e.DeclarationId == declarationId &&
                                                       e.StageId == nextStageId &&
                                                       e.OBK_Ref_StageStatus.Code != OBK_Ref_StageStatus.Completed &&
                                                       !e.IsHistory))
                {
                    continue;
                }
                //todo переделать дату окончания этапа
                var daysOnStage = 0;//GetExpStageDaysOnExecution(declaration.TypeId, nextStageId);
                var startDate   = DateTime.Now;
                var newStage    = new OBK_AssessmentStage()
                {
                    Id            = Guid.NewGuid(),
                    DeclarationId = declarationId,
                    StageId       = nextStageId,
                    ParentStageId = currentStage != null ? (Guid?)currentStage.Id : null,
                    StageStatusId = stageStatusNew.Id,
                    StartDate     = startDate,
                    EndDate       = daysOnStage != null ? (DateTime?)startDate.AddDays(daysOnStage) : null
                };
                //todo брать руководителя цоз из настроек
                newStage.Employees.Add(GetExecutorByDicStageId(nextStageId));
                AppContext.OBK_AssessmentStage.Add(newStage);
                //if (nextStageId == CodeConstManager.STAGE_ANALITIC)
                //{
                //    isAnalitic = true;
                //}
            }
            AppContext.SaveChanges();
            //if (isAnalitic)
            //{
            //    CreateDirectionMaterial(declarationId, GetExecutorByDicStageId(CodeConstManager.STAGE_ANALITIC));
            //}
            return(true);
        }
Ejemplo n.º 6
0
 /// <summary>
 /// Сохранение этапов заявления
 /// </summary>
 /// <param name="stage"></param>
 public void SaveStage(OBK_AssessmentStage stage)
 {
     AppContext.OBK_AssessmentStage.AddOrUpdate(stage);
     AppContext.SaveChanges();
 }
Ejemplo n.º 7
0
        public ActionResult SendToUOBK(Guid declarationId)
        {
            var declarationStage = repo.OBK_AssessmentStage.FirstOrDefault(x => x.DeclarationId == declarationId && x.StageId == 3);

            if (declarationStage == null)
            {
                declarationStage = new OBK_AssessmentStage
                {
                    Id            = Guid.NewGuid(),
                    StageId       = 2,
                    StageStatusId = 1,
                    DeclarationId = declarationId,
                    StartDate     = DateTime.Now
                };
                repo.OBK_AssessmentStage.Add(declarationStage);
            }
            else
            {
                declarationStage.StageStatusId = 1;
                declarationStage.StartDate     = DateTime.Now;
            }

            var executor = repo.OBK_AssessmentStageExecutors.FirstOrDefault(x => x.AssessmentStageId == declarationStage.Id && x.ExecutorType == 1);

            var expertOrganization = repo.OBK_AssessmentDeclaration.FirstOrDefault(x => x.Id == declarationId).OBK_Contract.ExpertOrganization;
            var organization       = (repo.Units.FirstOrDefault(e => e.ParentId == expertOrganization && e.Code == OrganizationConsts.UobkDepartament) ??
                                      repo.Units.FirstOrDefault(e => e.Parent.ParentId == expertOrganization && e.Code == OrganizationConsts.UobkDepartament)) ??
                                     repo.Units.FirstOrDefault(e => e.Parent.Parent.ParentId == expertOrganization && e.Code == OrganizationConsts.UobkDepartament);

            var employeeIdstr = organization.BossId;
            var employeeId    = new Guid(employeeIdstr);

            if (executor == null)
            {
                executor = new OBK_AssessmentStageExecutors
                {
                    AssessmentStageId = declarationStage.Id,
                    ExecutorId        = employeeId,
                    ExecutorType      = CodeConstManager.OBK_CONTRACT_STAGE_EXECUTOR_TYPE_ASSIGNING
                };
                repo.OBK_AssessmentStageExecutors.Add(executor);
            }
            else
            {
                executor.ExecutorId = employeeId;
            }

            var stage = repo.OBK_AssessmentStage.FirstOrDefault(x => x.DeclarationId == declarationId && x.StageId == 15);

            stage.StageStatusId = repo.OBK_Ref_StageStatus.Where(x => x.Code == "OPCompleted").Select(x => x.Id).Single();
            stage.EndDate       = DateTime.Now;
            stage.FactEndDate   = stage.EndDate;
            var declaration = repo.OBK_AssessmentDeclaration.FirstOrDefault(x => x.Id == declarationId);
            var status      = repo.OBK_Ref_Status.FirstOrDefault(x => x.Code == "6");

            declaration.StatusId = status.Id;

            var reportOP = repo.OBK_AssessmentReportOP.FirstOrDefault(x => x.DeclarationId == declarationId);

            reportOP.StageStatusId = repo.OBK_Ref_StageStatus.Where(x => x.Code == "OPReportCompleted").Select(x => x.Id).FirstOrDefault();

            repo.SaveChanges();


            //  new SafetyAssessmentRepository().AddHistory(declarationId, OBK_Ref_StageStatus.OPCompleted);

            return(Json(new { isSuccess = true }));
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Перевод заявления на следующий этап
        /// </summary>
        /// <param name="declaration"></param>
        /// <param name="stageCode"></param>
        public bool ToNextStage(OBK_AssessmentDeclaration declaration, Guid?fromStageId, int[] nextStageIds, out string resultDescription)
        {
            resultDescription = null;
            string[] activeStageCodes =
            {
                OBK_Ref_StageStatus.New, OBK_Ref_StageStatus.InWork,
                OBK_Ref_StageStatus.InReWork
            };
            //var declaration = AppContext.OBK_AssessmentDeclaration.FirstOrDefault(e => e.Id == declarationId);
            //if (declaration.EXP_DIC_Type.Code != EXP_DIC_Type.Registration)
            //{
            //  //return ToNextStage(declaration, fromStageId, nextStageIds, out resultDescription);
            //}
            var currentStage = fromStageId != null
                ? AppContext.OBK_AssessmentStage.FirstOrDefault(e => e.Id == fromStageId)
                : AppContext.OBK_AssessmentStage.FirstOrDefault(
                e => e.DeclarationId == declaration.Id && activeStageCodes.Contains(e.OBK_Ref_StageStatus.Code));

            var stageStatusNew = GetStageStatusByCode(OBK_Ref_StageStatus.New);

            //закрываем предыдущий этап
            if (currentStage != null) //&& CanCloseStage(currentStage, nextStageIds)
            {
                currentStage.StageStatusId = GetStageStatusByCode(OBK_Ref_StageStatus.Completed).Id;
                currentStage.FactEndDate   = DateTime.Now;
            }
            var isAnalitic = false;

            foreach (var nextStageId in nextStageIds)
            {
                //if (!CanSendToStep(declarationId, fromStageId, nextStageId, out resultDescription)) return false;
                //если имеется уже выполняющийся этап то продолжаем его дальше
                if (AppContext.OBK_AssessmentStage.Any(e => e.DeclarationId == declaration.Id &&
                                                       e.StageId == nextStageId &&
                                                       e.OBK_Ref_StageStatus.Code != OBK_Ref_StageStatus.Completed &&
                                                       !e.IsHistory))
                {
                    continue;
                }
                //todo переделать дату окончания этапа
                var daysOnStage = 0;//GetExpStageDaysOnExecution(declaration.TypeId, nextStageId);
                var startDate   = DateTime.Now;
                var newStage    = new OBK_AssessmentStage()
                {
                    Id            = Guid.NewGuid(),
                    DeclarationId = declaration.Id,
                    StageId       = nextStageId,
                    ParentStageId = currentStage != null ? (Guid?)currentStage.Id : null,
                    StageStatusId = stageStatusNew.Id,
                    StartDate     = startDate,
                    EndDate       = daysOnStage != null ? (DateTime?)startDate.AddDays(daysOnStage) : null
                };
                var newStageExecutor = new OBK_AssessmentStageExecutors
                {
                    AssessmentStageId = newStage.Id,
                    ExecutorId        = GetExecutorByDicStageId(nextStageId, declaration.OBK_Contract.ExpertOrganization, declaration.TypeId).Id,
                    ExecutorType      = CodeConstManager.OBK_CONTRACT_STAGE_EXECUTOR_TYPE_ASSIGNING
                };


                newStage.OBK_AssessmentStageExecutors.Add(newStageExecutor);

                var ex = AppContext.OBK_AssessmentDeclaration.Where(r => r.ContractId == newStage.DeclarationId).FirstOrDefault();

                new SafetyAssessmentRepository().AddHistory(declaration.Id, OBK_Ref_StageStatus.New, newStageExecutor.ExecutorId);

                AppContext.OBK_AssessmentStage.Add(newStage);
            }
            AppContext.SaveChanges();
            return(true);
        }