public static IQueryable <Hours> Filter(this IQueryable <Hours> query, TimeEntryQuerySearch criterias) { if (criterias.UserId != null) { query = query.Where(hour => hour.User == criterias.UserId); } if (criterias.FromDateInclusive != null) { query = query.Where(hour => hour.Date >= criterias.FromDateInclusive); } if (criterias.ToDateInclusive != null) { query = query.Where(hour => hour.Date <= criterias.ToDateInclusive); } if (criterias.Id != null) { query = query.Where(hour => hour.Id == criterias.Id); } if (criterias.TaskId != null) { query = query.Where(hour => hour.TaskId == criterias.TaskId); } if (criterias.Value != null) { query = query.Where(hour => hour.Value == criterias.Value); } return(query); }
public TimeEntriesResponseDto GetTimeEntry(TimeEntryQuerySearch criterias) { var timeEntry = _context.Hours.AsQueryable() .Filter(criterias) .Select(x => new TimeEntriesResponseDto { Id = x.Id, Value = x.Value, Date = x.Date, TaskId = x.TaskId }).FirstOrDefault(); return(timeEntry); }
public IEnumerable <TimeEntriesResponseDto> GetTimeEntries(TimeEntryQuerySearch criterias) { var hours = _context.Hours.AsQueryable() .Filter(criterias) .Select(x => new TimeEntriesResponseDto { Id = x.Id, User = x.User, Value = x.Value, Date = x.Date, TaskId = x.TaskId }) .ToList(); foreach (var entry in hours) { entry.UserEmail = _context.User.FirstOrDefault(x => x.Id == entry.User).Email; } return(hours); }
public IEnumerable <DateEntry> GetDateEntries(TimeEntryQuerySearch criterias) { var hours = _context.Hours .Include(h => h.Task) .AsQueryable() .Filter(criterias) .ToList(); var compensationRates = _context.CompensationRate.OrderByDescending(cr => cr.FromDate); return(hours.GroupBy( entry => entry.Date, entry => entry, (date, entry) => new DateEntry { Date = date, Entries = entry.Select(e => new Entry { TaskId = e.TaskId, Value = e.Value, CompensationRate = compensationRates.FirstOrDefault(cr => cr.TaskId == e.TaskId)?.Value ?? 1M, }) })); }