Beispiel #1
0
        public PartialViewResult ShowCreateRegistrationStep()
        {
            var step = new EXP_RegistrationExpSteps();

            ViewBag.IsUpdate = false;
            return(PartialView("CreateUpdateRegistrationStepPartial", step));
        }
        public JsonResult CreateRegistrationStep(EXP_RegistrationExpSteps step, bool needParallelWithNext, Guid?prevStepId, Guid registrationTypeId, bool isUpdate)
        {
            int priority = 1;

            if (prevStepId != null)
            {
                var prevStep     = db.EXP_RegistrationExpSteps.First(x => x.Id == prevStepId);
                var prevPriority = prevStep.Priority;
                priority = prevPriority + 1;
                var moreThenPrevPrioritySteps =
                    db.EXP_RegistrationExpSteps.Where(
                        x => x.RegistrationId == registrationTypeId && x.Priority > prevPriority);
                if (moreThenPrevPrioritySteps.Any() && !needParallelWithNext)
                {
                    var nextMinPriority = moreThenPrevPrioritySteps.Select(x => x.Priority).Min();
                    var diff            = nextMinPriority - prevPriority;

                    if (diff == 1)
                    {
                        moreThenPrevPrioritySteps.Each(x => x.Priority++);
                    }
                }
                else
                {
                    if (!moreThenPrevPrioritySteps.Any() && needParallelWithNext)
                    {
                        priority = prevPriority;
                    }
                }
            }
            else
            {
                if (!needParallelWithNext)
                {
                    db.EXP_RegistrationExpSteps.Where(x => x.RegistrationId == registrationTypeId).Each(x => x.Priority++);
                }
            }

            if (!isUpdate)
            {
                step.Id             = Guid.NewGuid();
                step.Priority       = priority;
                step.RegistrationId = registrationTypeId;
                db.EXP_RegistrationExpSteps.Add(step);
            }
            else
            {
                var curStep = db.EXP_RegistrationExpSteps.First(x => x.Id == step.Id);
                curStep.Priority = priority;
                curStep.Duration = step.Duration;
            }

            db.SaveChanges();
            return(Json(new { success = true }, JsonRequestBehavior.AllowGet));
        }
Beispiel #3
0
        public ActionResult GetNextExpRegStepName(Guid?id, Guid regId)
        {
            EXP_RegistrationExpSteps step = null;

            if (id != null)
            {
                var prevStep = db.EXP_RegistrationExpSteps.FirstOrDefault(x => x.Id == id);
                if (prevStep != null)
                {
                    step =
                        db.EXP_RegistrationExpSteps.Where(x => x.RegistrationId == regId && x.Id != id && x.Priority > prevStep.Priority)
                        .OrderBy(x => x.Priority)
                        .FirstOrDefault();
                }
            }
            else
            {
                step = db.EXP_RegistrationExpSteps.Where(x => x.RegistrationId == regId).OrderBy(x => x.Priority).FirstOrDefault();
            }
            var stepName = step != null ? step.Name : "";

            return(Json(new { NextStepName = stepName }));
        }
Beispiel #4
0
        public JsonResult CreateRegistrationStep(EXP_RegistrationExpSteps step, bool needParallelWithNext, Guid?prevStepId, Guid registrationTypeId, bool isUpdate)
        {
            int priority = 1;

            if (prevStepId != null)
            {
                var prevStep     = db.EXP_RegistrationExpSteps.First(x => x.Id == prevStepId);
                var prevPriority = prevStep.Priority;
                priority = prevPriority + 1;
                var moreThenPrevPrioritySteps =
                    db.EXP_RegistrationExpSteps.Where(
                        x => x.RegistrationId == registrationTypeId && x.Priority > prevPriority);
                if (moreThenPrevPrioritySteps.Any() && !needParallelWithNext)
                {
                    var nextMinPriority = moreThenPrevPrioritySteps.Select(x => x.Priority).Min();
                    var diff            = nextMinPriority - prevPriority;

                    if (diff == 1)
                    {
                        moreThenPrevPrioritySteps.Each(x => x.Priority++);
                    }
                }
                else
                {
                    if (!moreThenPrevPrioritySteps.Any() && needParallelWithNext)
                    {
                        priority = prevPriority;
                    }
                }
            }
            else
            {
                if (!needParallelWithNext)
                {
                    db.EXP_RegistrationExpSteps.Where(x => x.RegistrationId == registrationTypeId).Each(x => x.Priority++);
                }
            }
            if (db.EXP_RegistrationExpSteps.Count(e =>
                                                  e.RegistrationId == registrationTypeId && e.RefId == step.RefId) > 1)
            {
                return(Json(new { success = false, message = "Для данного типа регистрации уже задан этап." }, JsonRequestBehavior.AllowGet));
            }
            if (!isUpdate)
            {
                step.Id             = Guid.NewGuid();
                step.Priority       = priority;
                step.RegistrationId = registrationTypeId;
                step.Name           = db.EXP_DIC_Stage.FirstOrDefault(e => e.Id == step.RefId).NameRu;
                step.Executors.AddRange(db.Employees.Where(e => step.ExecutorsIds.Contains(e.Id)));
                db.EXP_RegistrationExpSteps.Add(step);
            }
            else
            {
                var curStep = db.EXP_RegistrationExpSteps.First(x => x.Id == step.Id);
                curStep.Priority = priority;
                curStep.Duration = step.Duration;
                curStep.SupervisingEmployeeId = step.SupervisingEmployeeId;
                curStep.Executors.Clear();
                db.SaveChanges();
                curStep.Executors.AddRange(db.Employees.Where(e => step.ExecutorsIds.Contains(e.Id)));
            }

            db.SaveChanges();
            return(Json(new { success = true }, JsonRequestBehavior.AllowGet));
        }