public virtual ActionResult GetAvailableFilters(CustomReportViewModel model) { LogI("GetSourceFields"); var fields = model.UsedFields; var customFeedSevice = new CustomFeedService(LogService, Time, DbFactory); var sourceFields = CustomReportFilterViewModel.GetAvailableFiltersForReport(Db, fields.Select(x => x.CustomReportPredefinedFieldId).ToList()); return(JsonGet(CallResult <IList <CustomReportFilterViewModel> > .Success(sourceFields))); }
public override IQueryable GetAll(IUnitOfWork db, List <CustomReportFilterViewModel> filters) { var query = from o in db.Orders.GetAllAsDto() join n in db.OrderNotifies.GetAllAsDto().Select(x => x.OrderId).Distinct() on o.Id equals n join oi in db.OrderItems.GetAllAsDto() on o.Id equals oi.OrderId join l in db.Listings.GetViewListings() on oi.ListingId equals l.Id join stCache in db.StyleCaches.GetAll() on l.StyleId equals stCache.Id where o.OrderStatus == OrderStatusEnumEx.Shipped select new { Orders = o, OrderItems = oi, StyleCaches = stCache, }; var whereString = CustomReportFilterViewModel.GetDynamicWhereClause(filters); var arrVals = filters.Select(x => x.Value).ToArray(); if (!String.IsNullOrEmpty(whereString)) { query = query.Where(whereString, arrVals); } var baseItemsQuery = query.GroupBy(o => new { o.OrderItems.StyleId, o.OrderItems.StyleString }).Select(o => new CustomReportIncomeDisparityViewModel { StyleId = o.Key.StyleId ?? 0, StyleString = o.Key.StyleString, OrderUnits = o.Sum(i => i.OrderItems.QuantityOrdered), MinPrice = o.Min(i => i.OrderItems.ItemPriceInUSD.Value), MaxPrice = o.Max(i => i.OrderItems.ItemPriceInUSD.Value), OrderDate = o.Max(i => i.Orders.OrderDate) }); baseItemsQuery = baseItemsQuery.OrderByDescending(x => x.OrderDate); return(baseItemsQuery); }