Пример #1
0
        public static OrderLineTotals GetOrderLinesCountForRMM(OrderLineFilter filter)
        {
            using (var dc = new DCFactory<StoreDataContext>())
            {
                DataLoadOptions options = new DataLoadOptions();
                options.LoadWith<OrderLine>(l => l.OrderLineStatusChanges);
                options.LoadWith<OrderLine>(l => l.Order);
                dc.DataContext.LoadOptions = options;

                // deas 23.05.2011 task4130 Ускорение работы со статусами
                //var stRejected = OrderLineStatusUtil.StatusByte(dc, "Rejected");
                var stRejected = OrderLineStatusUtil.StatusByte("Rejected");

                var orderLines = dc.DataContext.OrderLines.Where(l => l.CurrentStatus != stRejected);

                /*if( filter != null )
                    orderLines = ApplyOrderLineFilter( orderLines, filter );*/
                if (filter != null)
                {
                    if (filter is OrderLineFilter)
                    {
                        orderLines = ApplyOrderLineFilter(orderLines, (OrderLineFilter)filter);
                    }

                    else
                    {
                        throw new Exception("Incorrect filter object.");
                    }
                }

                OrderLineTotals res = new OrderLineTotals();
                res.TotalCount = orderLines.Count();
                if (orderLines.Where(OrderBO.TotalStatusExpression).Count() != 0)
                    res.TotalSum = orderLines.Where(OrderBO.TotalStatusExpression).Sum(l => l.UnitPrice * l.Qty);
                return res;
            }
        }
Пример #2
0
        /// <summary>
        /// GetOrderLinesCount
        /// </summary>
        /// <param name="clientId">ID клиента</param>
        /// <param name="filter">фильтр (возможны 2 типа OrderLineFilter и OrderLineAnalysisFilter)</param>
        /// <returns>количество строк заказов</returns>
        public static OrderLineTotals GetOrderLinesCount( string clientId, /*OrderLineFilter filter*/ object filter )
        {
            using (var dc = new DCFactory<StoreDataContext>())
            {
                // deas 23.05.2011 task4130 Ускорение работы со статусами
                //var stRejected = OrderLineStatusUtil.StatusByte(dc, "Rejected");
                var stRejected = OrderLineStatusUtil.StatusByte( "Rejected" );

                var orderLines = dc.DataContext.OrderLines.Where(l => l.Order.ClientID == clientId && l.CurrentStatus != stRejected);
                /*if( filter != null )
                    orderLines = ApplyOrderLineFilter( orderLines, filter );*/
                if (filter != null)
                {
                    if (filter is OrderLineFilter)
                    {
                        orderLines = ApplyOrderLineFilter(orderLines, (OrderLineFilter)filter);
                    }
                    else if (filter is OrderLineAnalysisFilter)
                    {
                        orderLines = ApplyOrderLineAnalysisFilter(orderLines, (OrderLineAnalysisFilter)filter);
                    }
                    else
                    {
                        throw new Exception("Incorrect filter object.");
                    }
                }

                OrderLineTotals res = new OrderLineTotals();
                res.TotalCount = orderLines.Count();
                //Быи
                if( orderLines.Where( OrderBO.TotalStatusExpression ).Count() != 0 )
                    res.TotalSum = orderLines.Where( OrderBO.TotalStatusExpression ).Sum( l => l.UnitPrice * l.Qty );
                return res;
            }
        }