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); }
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); }
public IActionResult GetDaysData(QueryTasks queryTasks) { var result = this._taskHandler.GetDaysData(queryTasks); return(Ok(result)); }
public async Task UnsubscribeTaskEditor(QueryTasks queryTasks) { await this.RangeRemoveFromTaskEditorGroup(queryTasks); }
public async Task SubscribeTaskEditor(QueryTasks queryTasks) { await this.RangeAddToTaskEditorGroup(queryTasks); }