Beispiel #1
0
        public IEnumerable <WorkItem> Get(WorkItemFilter filter)
        {
            try
            {
                var iQuery = filter.IncludeFeedbacks ?
                             Db.Set <WorkItem>()
                             .Include(it => it.CustomerFeedback)
                             .Include(it => it.TeamFeedBack)
                             .Include(it => it.WorkType)
                             .Include(it => it.Customer) :
                             Db.Set <WorkItem>()
                             .Include(it => it.WorkType)
                             .Include(it => it.Customer);


                var query = iQuery.AsQueryable();

                if (filter.Categories != null && filter.Categories.Any())
                {
                    query = filter.CategoryOperation == CategoryOperation.Cross
                        ? (from item in GetWorksByCategoriesCross(filter.Categories)
                           join workItem1 in query on item.Id equals workItem1.Id
                           select workItem1).AsQueryable()
                        : (from item in GetWorksByCategoriesUnion(filter.Categories)
                           join workItem1 in query on item.Id equals workItem1.Id
                           select workItem1).AsQueryable();
                }

                if (filter.CustomerId.HasValue)
                {
                    query = query.Where(it => it.CustomerId == filter.CustomerId.Value);
                }

                if (filter.WorkTypeId.HasValue)
                {
                    query = query.Where(it => it.WorkTypeId == filter.WorkTypeId.Value);
                }
                if (filter.ExecutorId.HasValue)
                {
                    query = from workItem in query
                            join workItemTeam in Db.Set <WorkItemTeam>() on workItem.Id equals workItemTeam.WorkItemId
                            where workItemTeam.ExecutorId == filter.ExecutorId.Value
                            select workItem;
                }

                return(query); //;
            }
            catch (Exception ex)
            {
                LogEventManager.Logger.Error(ex.Message, ex);
                throw;
            }
        }
Beispiel #2
0
 public async Task <IEnumerable <WorkItem> > GetByFilter([FromQuery] WorkItemFilter filter)
 {
     return(_context.WorkItems.Where(filter.GetPredicate()));
 }