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; } }
/// <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; } }