Exemple #1
0
        public List <GetDaysDataResponse> GetDaysData(QueryTasks queryTasks)
        {
            var result = new List <GetDaysDataResponse>();

            var taskDayQuery = this._context.TaskDay.Where(
                x => x.User.Guid == queryTasks.OwnerGuid &&
                queryTasks.StartDate.Date <= x.Date.Date &&
                x.Date.Date <= queryTasks.EndDate.Date).AsNoTracking();

            var taskDayGuids = taskDayQuery.Select(x => x.Guid);

            foreach (var taskDay in taskDayQuery.ToList())
            {
                var tasks = this._context.Task.Where(x => taskDayGuids.Contains(x.TaskDay.Guid) && x.Date.Date == taskDay.Date.Date)
                            .OrderBy(x => x.DisplayOrder)
                            .Include(x => x.TaskSource)
                            .Include(x => x.TaskType)
                            .AsNoTracking()
                            .ToList();

                result.Add(new GetDaysDataResponse()
                {
                    Guid     = taskDay.Guid,
                    Date     = taskDay.Date,
                    IsLeave  = taskDay.IsLeave,
                    FormData = tasks
                });
            }

            return(result);
        }
        public IEnumerable <MultiSimpleSummary> GetTaskTimeSummaryDetail(QueryPeopleTasks queryPeopleTasks)
        {
            var summaryDict = new Dictionary <DateTime, MultiSimpleSummary>();

            foreach (var date in queryPeopleTasks.StartDate.EachDay(queryPeopleTasks.EndDate))
            {
                summaryDict[date] = new MultiSimpleSummary()
                {
                    Date = date.Date
                };
            }

            foreach (var OwnerGuid in queryPeopleTasks.OwnerGuids)
            {
                var queryTasks = new QueryTasks()
                {
                    OwnerGuid = OwnerGuid,
                    StartDate = queryPeopleTasks.StartDate,
                    EndDate   = queryPeopleTasks.EndDate
                };
                var simpleSummary = this._GetPersonSummary(queryTasks);

                foreach (var row in simpleSummary)
                {
                    summaryDict[row.Date.Date].AddRow(row);
                }
            }

            var taskTimeSummaryDetail = summaryDict.Values.ToList();

            taskTimeSummaryDetail.Sort((x, y) => x.Date.Date.CompareTo(y.Date.Date));

            return(taskTimeSummaryDetail);
        }
        /// <summary>
        /// OwnerGuids must be one, otherwise the logic of "overtime", "leave" will go wrong.
        /// </summary>
        /// <param name="queryPeopleTasks"></param>
        /// <returns></returns>
        protected IEnumerable <PersonSummary> _GetPersonSummary(QueryTasks queryTasks)
        {
            var dayWorkLimitTime = this._parameterHandler.GetLimitWorkTime();
            var queryPeopleTasks = new QueryPeopleTasks(queryTasks);

            var regularSummary = this._SelectTask(queryPeopleTasks, false)
                                 .Select(x => new { Date = x.Date, ConsumeTime = x.ConsumeTime })
                                 .AsEnumerable()
                                 .GroupBy(x => x.Date.Date)
                                 .Select(x => new PersonSummary(x.Key.Date, x.Sum(y => y.ConsumeTime), dayWorkLimitTime, false));

            var leaveSummary = this._context.TaskDay.Where(
                x => queryPeopleTasks.OwnerGuids.Contains(x.User.Guid) &&
                queryPeopleTasks.StartDate.Date <= x.Date.Date &&
                x.Date.Date <= queryPeopleTasks.EndDate.Date &&
                x.IsLeave == true)
                               .Cacheable()
                               .AsNoTracking()
                               .AsEnumerable()
                               .Select(x => new PersonSummary(x.Date, 0, dayWorkLimitTime, true));

            var result = new List <PersonSummary>();

            result.AddRange(regularSummary.ToList());
            result.AddRange(leaveSummary.ToList());
            result.Sort((x, y) => x.Date.Date.CompareTo(y.Date.Date));

            return(result);
        }
Exemple #4
0
 protected async Task RangeRemoveFromTaskEditorGroup(QueryTasks queryTasks)
 {
     foreach (DateTime day in queryTasks.StartDate.EachDay(queryTasks.EndDate))
     {
         await RemoveFromTaskEditorGroup(queryTasks.OwnerGuid, day);
     }
 }
        public IEnumerable <SimpleSummary> GetSimpleSummary(QueryPeopleTasks queryPeopleTasks)
        {
            IEnumerable <SimpleSummary> simpleSummary;

            if (queryPeopleTasks.OwnerGuids.Count == 1)
            {
                var queryTasks = new QueryTasks()
                {
                    OwnerGuid = queryPeopleTasks.OwnerGuids.FirstOrDefault(),
                    StartDate = queryPeopleTasks.StartDate,
                    EndDate   = queryPeopleTasks.EndDate
                };
                simpleSummary = this._GetPersonSummary(queryTasks).Select(x => new SimpleSummary(x));
            }
            else
            {
                var taskTimeSummaryDetail = this.GetTaskTimeSummaryDetail(queryPeopleTasks);
                simpleSummary = taskTimeSummaryDetail.Select(x => new SimpleSummary(x));
            }
            return(simpleSummary);
        }
Exemple #6
0
        public IActionResult GetDaysData(QueryTasks queryTasks)
        {
            var result = this._taskHandler.GetDaysData(queryTasks);

            return(Ok(result));
        }
Exemple #7
0
 public async Task UnsubscribeTaskEditor(QueryTasks queryTasks)
 {
     await this.RangeRemoveFromTaskEditorGroup(queryTasks);
 }
Exemple #8
0
 public async Task SubscribeTaskEditor(QueryTasks queryTasks)
 {
     await this.RangeAddToTaskEditorGroup(queryTasks);
 }