public void ProcessRequest(HttpContext context) { if (!LightBO.IsLight()) return;// проверка что вызывается менеджером Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(SiteContext.CurrentCulture); Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(SiteContext.CurrentCulture); using (var ctx = new DCFactory<StoreDataContext>()) { var IDs = context.Request.Params["IDs"]; int[] k; RmsAuto.Store.Web.OrderTracking.OrderLineFilter f = null; OrderLine[] ordlns; if (IDs != null) { k = IDs.Split(';').Select(x => string.IsNullOrEmpty(x) ? 0 : int.Parse(x)).ToArray(); f = new RmsAuto.Store.Web.OrderTracking.OrderLineFilter() { OrderIDs =k }; ordlns = OrderTracking.GetOrderLinesForLiteRMM(f, RmsAuto.Store.Web.OrderTracking.OrderLineSortFields.OrderIDAsc, 0, int.MaxValue); } else { ordlns = (OrderLine[])HttpContext.Current.Cache["RmsAuto.Store.Web.ControlsOrderLinesWholesale.CurrentOrderLines"+SiteContext.Current.User.UserId]; } var ordlnsdto = (from n in ordlns join q in ctx.DataContext.Orders on n.OrderID equals q.OrderID join m in ctx.DataContext.Users on q.ClientID equals m.AcctgID select new { n.SupplierID, n.Manufacturer, n.PartNumber, n.Qty, n.AcctgOrderLineID, n.CurrentStatus, n.OrderID, n.CurrentStatusDate, n.LastStatusChange, n.EstSupplyDate, n.DeliveryDaysMin, n.DeliveryDaysMax, n.PartName, n.Total, n.UnitPrice, m.AcctgID, m.Clientname, q.OrderDate }).ToArray(); //TODO: возможно стоит вставить заголовки строк if (ordlns != null) { context.Response.ContentEncoding = Encoding.Default; //Необходимо присвоить внутренню кодировку context.Response.ContentType = "application/text;" + Encoding.Default.EncodingName; context.Response.Write(HttpUtility.HtmlEncode("#;Supplier Number;Manufacturer;Part Number;Number;Status ID;Order ID;Order date;Est. supply date;Min supplyr term;Max supply term;Part;Q-ty;Price;Total summ;Client Number;Client's name") + Environment.NewLine); context.Response.Write(string.Join(Environment.NewLine, ordlnsdto.Select(x => (Array.IndexOf(ordlnsdto, x) + 1).ToString() + ";" + x.SupplierID + ";" + x.Manufacturer + ";" + x.PartNumber + ";" + x.AcctgOrderLineID + ";" + x.CurrentStatus + ";" + x.OrderID + ";" + x.OrderDate + ";" + x.EstSupplyDate + ";" + x.DeliveryDaysMin + ";" + x.DeliveryDaysMax + ";" + x.PartName + ";" + x.Qty + ";" + x.UnitPrice+";" + x.Total + ";" + x.AcctgID + ";" + x.Clientname).ToArray())); context.Response.AppendHeader("content-disposition", "inline; filename=OrderLines.csv"); } else throw new HttpException("Данные устарели, повторите поиск строк заказа"); } }
private static OrderTracking.OrdersList GetOrdersList(string ClientName, int statusFilter, int sort, DateTime lowdate, DateTime hidate, int startIndex, int size, int AcctgOrderLineId) { string key = _rmsautoStoreWebControlsOrderlistGetorderslist; OrderTracking.OrdersList res = (OrderTracking.OrdersList)HttpContext.Current.Items[key]; if (res == null) { res = OrderTracking.GetOrdersByName( ClientName, statusFilter, (OrderTracking.OrderSortFields)sort, lowdate, hidate, startIndex, size, AcctgOrderLineId); HttpContext.Current.Items[key] = res; var k = new RmsAuto.Store.Web.OrderTracking.OrderLineFilter() { OrderIDs = res.Orders.Select(x => x.OrderID).ToArray() }; var lines = OrderTracking.GetOrderLinesForLiteRMM(k, RmsAuto.Store.Web.OrderTracking.OrderLineSortFields.OrderIDAsc, 0, 0); HttpContext.Current.Cache.Insert(key + SiteContext.Current.User.UserId, lines, null, DateTime.Now.AddMinutes(Convert.ToInt32(ConfigurationManager.AppSettings["CacheDuration"])), new TimeSpan(0, 0, 0)); } TotalsSum = res.Orders.Sum(x => x.Total); return res; }