public ActionResult UpsertStageExecutor(Guid employeeId, Guid declarationId)
        {
            var stageIds = repo.OBK_AssessmentStage
                           .Where(x => x.StageId == programStageId && x.DeclarationId == declarationId)
                           .Select(x => x.Id);

            var old = repo.OBK_AssessmentStageExecutors
                      .FirstOrDefault(x =>
                                      stageIds.Contains(x.AssessmentStageId) &&
                                      x.ExecutorId == employeeId);

            if (old == null)
            {
                var newExecutor = new OBK_AssessmentStageExecutors
                {
                    ExecutorId        = employeeId,
                    ExecutorType      = CodeConstManager.OBK_CONTRACT_STAGE_EXECUTOR_TYPE_EXECUTOR,
                    AssessmentStageId = stageIds.FirstOrDefault()
                };

                repo.OBK_AssessmentStageExecutors.Add(newExecutor);

                repo.SaveChanges();
            }

            return(Json(new { isSuccess = true }, JsonRequestBehavior.AllowGet));
        }
Exemple #2
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 }));
        }
Exemple #3
0
        /// <summary>
        /// Отправка этапов ОБК в работу выбранным исполнителям
        /// </summary>
        /// <param name="stageIds"></param>
        /// <param name="executorIds"></param>
        public void SendToWork(Guid[] stageIds, Guid[] executorIds)
        {
            var stages    = AppContext.OBK_AssessmentStage.Where(e => stageIds.Contains(e.Id)).ToList();
            var executors = AppContext.Employees.Where(e => executorIds.Contains(e.Id)).ToList();

            foreach (var stage in stages)
            {
                foreach (var executor in executors)
                {
                    var stageExecutor = new OBK_AssessmentStageExecutors
                    {
                        AssessmentStageId = stage.Id,
                        ExecutorId        = executor.Id,
                        ExecutorType      = CodeConstManager.OBK_CONTRACT_STAGE_EXECUTOR_TYPE_EXECUTOR
                    };
                    stage.StageStatusId = GetStageStatusByCode(OBK_Ref_StageStatus.InWork).Id;
                    AppContext.OBK_AssessmentStageExecutors.AddOrUpdate(stageExecutor);
                    AppContext.SaveChanges();
                }
            }
        }
        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));
        }
Exemple #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 брать руководителя цоз из настроек

                var newStageExecutor = new OBK_AssessmentStageExecutors
                {
                    AssessmentStageId = newStage.Id,
                    ExecutorId        = GetExecutorByDicStageId(nextStageId).Id,
                    ExecutorType      = CodeConstManager.OBK_CONTRACT_STAGE_EXECUTOR_TYPE_ASSIGNING
                };

                newStage.OBK_AssessmentStageExecutors.Add(newStageExecutor);
                AppContext.OBK_AssessmentStage.Add(newStage);
                //if (nextStageId == CodeConstManager.STAGE_ANALITIC)
                //{
                //    isAnalitic = true;
                //}
            }
            AppContext.SaveChanges();
            //if (isAnalitic)
            //{
            //    CreateDirectionMaterial(declarationId, GetExecutorByDicStageId(CodeConstManager.STAGE_ANALITIC));
            //}
            return(true);
        }