示例#1
0
        public async Task <IDataResult <GroupedTaskDto> > GetAsMonthly(GetByDateDto getByDateDto)
        {
            if (!getByDateDto.EndDate.HasValue)
            {
                return(new ErrorDataResult <GroupedTaskDto>(Messages.InvalidEndDate));
            }

            var list = _userTaskDal.GetList(x =>
                                            (x.StartDate.Date >= getByDateDto.StartDate.Date && x.StartDate <= getByDateDto.EndDate.Value.Date) ||
                                            (x.EndDate.Date >= getByDateDto.StartDate.Date && x.EndDate.Date <= getByDateDto.EndDate.Value.Date),
                                            t => t.TaskType);
            var minStartMonth = getByDateDto.StartDate.Month;
            var minStartYear  = getByDateDto.StartDate.Year;
            var maxEndMonth   = getByDateDto.EndDate.Value.Month;
            var maxEndYear    = getByDateDto.EndDate.Value.Year;
            var groupedTask   = new GroupedTaskDto(TaskScheduleType.Monthly);

            for (int month = minStartMonth; month <= maxEndMonth; month++)
            {
                var value = _mapper.Map <IList <UserTaskDto> >(list.Where(x => (x.StartDate.Month == month && x.StartDate.Year == minStartYear) || (x.EndDate.Month == month && x.EndDate.Year == minStartYear)));
                var key   = minStartYear + " " + month.ToString();
                AddOrUpdateToDictionary(groupedTask.UserTasks, key, value);

                if (month == maxEndMonth && minStartYear != maxEndYear)
                {
                    minStartYear++;
                    month = 0;
                }
            }

            return(new SuccessDataResult <GroupedTaskDto>(groupedTask));
        }
示例#2
0
        public async Task <IDataResult <GroupedTaskDto> > GetAsDaily(GetByDateDto getByDateDto)
        {
            if (!getByDateDto.EndDate.HasValue)
            {
                return(new ErrorDataResult <GroupedTaskDto>(Messages.InvalidEndDate));
            }

            var list = _userTaskDal.GetList(x =>
                                            (x.StartDate.Date >= getByDateDto.StartDate.Date && x.StartDate.Date <= getByDateDto.EndDate.Value.Date) ||
                                            (x.EndDate.Date >= getByDateDto.StartDate && x.EndDate.Date <= getByDateDto.EndDate.Value.Date),
                                            t => t.TaskType);
            var      groupedTask = new GroupedTaskDto(TaskScheduleType.Daily);
            DateTime day         = getByDateDto.StartDate.Date;

            while (day <= getByDateDto.EndDate.Value)
            {
                var value = _mapper.Map <IList <UserTaskDto> >(list.Where(x => x.StartDate.Date >= day || x.EndDate <= day));
                var key   = day.ToShortDateString();
                AddOrUpdateToDictionary(groupedTask.UserTasks, key, value);
                day = day.AddDays(1);
            }

            return(new SuccessDataResult <GroupedTaskDto>(groupedTask));
        }