예제 #1
0
        /// <summary>
        /// Обновление даты начала исполнения и завершения задачи
        /// </summary>
        private void UpdateStartAndCompletionDates()
        {
            #region StartDate
            {
                var newList          = ExecutionHistory.Where(x => x.ExecutionState.ExecutionStateType == TaskExecutionStateType.New).Select(x => x.Date);
                var lastNewStateDate = DateTimeUtils.GetMaxDate(newList);

                var execList = ExecutionHistory.Where(x => x.ExecutionState.ExecutionStateType != TaskExecutionStateType.New).Select(x => x.Date);
                // Если статуса "новая" задача не имела, то берем все даты исполнений со статусом "в работе"
                var execStateDate = DateTimeUtils.GetMinDate(execList.Where(x => lastNewStateDate != null ? x > lastNewStateDate : true));

                if (StartDate != execStateDate)
                {
                    StartDate = execStateDate;  // выставляем новую дату начала исполнения
                }
            }
            #endregion

            #region ComletionDate
            {
                var openList          = ExecutionHistory.Where(x => x.ExecutionState.ExecutionStateType != TaskExecutionStateType.Completed).Select(x => x.Date);
                var lastOpenStateDate = DateTimeUtils.GetMaxDate(openList);

                var comletedList = ExecutionHistory.Where(x => x.ExecutionState.ExecutionStateType == TaskExecutionStateType.Completed).Select(x => x.Date);
                // Если "открытых" статусов задача не имела, то берем все даты исполнений с "закрытым" статусом
                var comletionStateDate = DateTimeUtils.GetMinDate(comletedList.Where(x => lastOpenStateDate != null ? x > lastOpenStateDate : true));

                if (FactualCompletionDate != comletionStateDate)
                {
                    FactualCompletionDate = comletionStateDate;
                }
            }
            #endregion
        }
예제 #2
0
        /// <summary>
        /// Обновить задачу по последнему исполнению
        /// </summary>
        protected internal virtual void UpdateByLastExecution()
        {
            var maxDate       = DateTimeUtils.GetMaxDate(ExecutionHistory.Select(x => x.Date));
            var lastExecution = ExecutionHistory.Where(x => x.Date == maxDate).First();

            UpdateTaskExecutionState(lastExecution);
            CompletionPercentage = lastExecution.CompletionPercentage;
            UpdateStartAndCompletionDates();
        }