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)); }
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 })); }
/// <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)); }
/// <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); }