Example #1
0
        /// <summary>
        /// Метод "Заблокировать возможность"
        /// </summary>
        public static List <TaskWithCriticalDeadlineResult> MethodForBlockAbility(TaskWithCriticalDeadlineSettings setting, IRepository <Notice> repo)
        {
            var result  = new List <TaskWithCriticalDeadlineResult>();
            var notices = repo.GetAll().Where(x => !x.Deleted && x.VersionIsCurrent &&
                                              (x.StatusInRelationToOos == StatusInRelationToOos.IsPublished || x.StatusInRelationToOos == StatusInRelationToOos.Editing) &&
                                              x.PlacingWay.PlacingType == setting.PlacingType);

            foreach (var notice in notices)
            {
                DateTime time = (DateTime)notice.PlacementPlanDate;
                if (!setting.WorkingDays)
                {
                    time = time.AddDays(-setting.DaysForImplementation);
                    result.Add(new TaskWithCriticalDeadlineResult {
                        Id = notice.Id, CriticalDate = time
                    });
                }
                else
                {
                    time = time.AddDays(-CountDaysWithoutWeekendsToDeadline(time, setting.DaysForImplementation));
                    result.Add(new TaskWithCriticalDeadlineResult {
                        Id = notice.Id, CriticalDate = time
                    });
                }
            }
            return(result);
        }
Example #2
0
        /// <summary>
        /// Выбор метода для задачи с критическим сроком
        /// </summary>
        public static List <TaskWithCriticalDeadlineResult> MethodChoise(TaskWithCriticalDeadlineSettings setting)
        {
            IWindsorContainer    container = ApplicationContext.Current.Container;
            IRepository <Notice> repo      = container.Resolve <IRepository <Notice> >();

            List <TaskWithCriticalDeadlineResult> result = new List <TaskWithCriticalDeadlineResult>();

            switch (setting.TaskType)
            {
            case TaskType.BlockAbility: result = MethodForBlockAbility(setting, repo); break;

            case TaskType.RequiredAction: result = MethodForRequiredAction(setting, repo); break;
            }
            return(result);
        }
Example #3
0
        /// <summary>
        /// Метод "Необходимое действие"
        /// </summary>
        public static List <TaskWithCriticalDeadlineResult> MethodForRequiredAction(TaskWithCriticalDeadlineSettings setting, IRepository <Notice> repo)
        {
            var result  = new List <TaskWithCriticalDeadlineResult>();
            var notices = repo.GetAll().Where(x => !x.Deleted && x.VersionIsCurrent &&
                                              x.StatusInRelationToOos != StatusInRelationToOos.IsPublished && x.StatusInRelationToOos != StatusInRelationToOos.Editing && x.PlacementPlanDate != null);

            foreach (var notice in notices)
            {
                DateTime time = (DateTime)notice.PlacementPlanDate;
                time = time.AddDays(-setting.DaysForImplementation);
                result.Add(new TaskWithCriticalDeadlineResult {
                    Id = notice.Id, CriticalDate = time
                });
            }
            return(result);
        }