Exemplo n.º 1
0
        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)));
        }
Exemplo n.º 2
0
        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);
        }