Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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,
                })
            }));
        }