public IEnumerable <TaskResponseDto> GetTasks(TaskQuerySearch criterias) { var tasks = _context.Task .Include(t => t.CompensationRate).AsQueryable() .Filter(criterias) .Select(x => new TaskResponseDto { Description = x.Description, Id = x.Id, Name = x.Name, Locked = x.Locked, Favorite = false, CompensationRate = EnsureCompensationRate(x.CompensationRate), Project = new ProjectResponseDto { Id = x.ProjectNavigation.Id, Name = x.ProjectNavigation.Name, Customer = new CustomerDto { Id = x.ProjectNavigation.CustomerNavigation.Id, Name = x.ProjectNavigation.CustomerNavigation.Name, ContactEmail = x.ProjectNavigation.CustomerNavigation.ContactEmail, ContactPerson = x.ProjectNavigation.CustomerNavigation.ContactPerson, ContactPhone = x.ProjectNavigation.CustomerNavigation.ContactPhone, InvoiceAddress = x.ProjectNavigation.CustomerNavigation.InvoiceAddress } } }).ToList(); return(tasks); }
public IEnumerable <TaskResponseDto> GetUsersTasks(TaskQuerySearch criterias, int userId) { var usersFavoriteTaskIds = _context.TaskFavorites.Where(x => x.UserId == userId).Select(x => x.TaskId).ToList(); var tasks = GetTasks(criterias); foreach (var task in tasks) { task.Favorite = usersFavoriteTaskIds.Contains(task.Id); } return(tasks); }
public static IQueryable <Task> Filter(this IQueryable <Task> query, TaskQuerySearch criterias) { if (criterias.Locked != null) { query = query.Where(task => task.Locked == criterias.Locked); } if (criterias.Name != null) { query = query.Where(task => task.Name == criterias.Name); } if (criterias.Project != null) { query = query.Where(task => task.Project == criterias.Project); } if (criterias.Id != null) { query = query.Where(task => task.Id == criterias.Id); } return(query); }