Example #1
0
        public OrderReportModel GetOrderReport(GetReportRequest Request)
        {
            var Response = new OrderReportModel();

            Response.AllOrders = _unitOfWork.RepositoryFactory <Order>()
                                 .GetMany(q =>
                                          q.DateTime.Value.Date >= Request.From &&
                                          q.DateTime.Value.Date <= Request.To).Select(q => new OrderDTO
            {
                AllOrder = q.Order_Meals.Select(w => new OrderMealModel
                {
                    AddOns     = (w.IsCombo ? "Compo 3LE" : "") + (w.IsSpicy ? " Spicy 3LE" : ""),
                    Item       = w.Meal.Name,
                    Item_Id    = w.Meal_Id,
                    Price      = (int)w.Meal.Price,
                    TotalPrice = (((int)w.Meal.Price + (w.IsCombo ? 3 : 0) + (w.IsSpicy ? 3 : 0)) * w.Q),
                    Q          = w.Q
                }).ToList(),
                Date            = q.DateTime.Value.ToShortTimeString() + ' ' + q.DateTime.Value.ToShortDateString(),
                OrderTotalPrice = (int)q.Order_Meals.Sum(w => ((w.Meal.Price + (w.IsCombo ? 3:0) + (w.IsSpicy ? 3 : 0)) * w.Q)),
            }).ToList();
            Response.OverAllTotalPrice          = Response.AllOrders.Sum(q => q.OrderTotalPrice);
            Response.OverAllTotalNumberOfMeals  = Response.AllOrders.Sum(q => q.AllOrder.Sum(w => w.Q));
            Response.OverAllTotalNumberOfOrders = Response.AllOrders.Count();
            return(Response);
        }
        /// <summary>
        /// Создает представление отчета из определенных параметров.
        /// </summary>
        /// <param name="report">Код отчета.</param>
        /// <param name="order">Код заказа.</param>
        /// <returns>Результат.</returns>
        public ActionResult Index(string report, string order)
        {
            _logger.InfoFormat("Страт генерации отчета {0} для заказа {1}", report, order);
            var model = new OrderReportModel();

            try
            {
                var token = GetToken();

                Guid reportID;
                if (Guid.TryParse(report, out reportID))
                {
                    Guid orderId;
                    if (Guid.TryParse(order, out orderId))
                    {
                        model.Report = RemontinkaServer.Instance.EntitiesFacade.CreateRepairOrderReport(token,
                                                                                                        reportID,
                                                                                                        orderId);
                        var reportTitle = string.Empty;
                        var orderNumber = RemontinkaServer.Instance.DataStore.GetRepairOrderNumber(orderId);

                        var reportObj = RemontinkaServer.Instance.EntitiesFacade.GetCustomReportItem(token, reportID);

                        if (reportObj != null)
                        {
                            reportTitle = reportObj.Title;
                        } //if

                        ViewBag.Title = string.Format("{0}, номер заказа \"{1}\"", reportTitle, orderNumber);
                    } //if
                    else
                    {
                        model.Error = "Неверный формат кода заказа";
                    } //else
                }     //if
                else
                {
                    model.Error = "Неверный формат кода отчета";
                } //else
            }
            catch (Exception ex)
            {
                var innerException = string.Empty;
                if (ex.InnerException != null)
                {
                    innerException = ex.InnerException.Message;
                } //if

                _logger.ErrorFormat("Во время генерации отчета {0} для заказа {1} произошла ошибка {2} {3} {4} {5}",
                                    report, order, ex.Message, ex.GetType(), innerException, ex.StackTrace);
            } //try

            return(View(model));
        }
Example #3
0
        /// <summary>
        /// Raises the <see cref="E:System.Web.UI.Control.Load"/> event.
        /// </summary>
        /// <param name="e">The <see cref="T:System.EventArgs"/> object that contains the event data.</param>
        protected override void OnLoad(EventArgs e)
        {
            Debug.ArgumentNotNull(e, "e");

            base.OnLoad(e);

            var repository    = Ecommerce.Context.Entity.Resolve <MerchantOrderManager>();
            var reportFactory = Ecommerce.Context.Entity.Resolve <StiReportFactory>();

            this.Model = Ecommerce.Context.Entity.Resolve <OrderReportModel>();

            this.presenter = new PrintOrderPresenter(this, repository, reportFactory);
            this.presenter.Initialize();
        }
        public ActionResult GetOrderReportList(DataSourceRequest command, OrderReportModel model)
        {
            DateTime?startDateValue = (model.StartDate == null) ? null
                           : (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.StartDate.Value, _dateTimeHelper.CurrentTimeZone);

            DateTime?endDateValue = (model.EndDate == null) ? null
                            : (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.EndDate.Value, _dateTimeHelper.CurrentTimeZone).AddDays(1);


            OrderStatus?orderStatus = model.OrderStatusId > 0 ? (OrderStatus?)(model.OrderStatusId) : null;

            orderStatus = OrderStatus.Complete;
            //load orders
            var orders = _orderService.SearchOrders(0, 0, 0, 0, 0,
                                                    startDateValue, endDateValue, orderStatus,
                                                    null, null, null, null,
                                                    command.Page - 1, command.PageSize);
            var gridModel = new DataSourceResult
            {
                Data = orders.Select(x =>
                {
                    return(new OrderModel()
                    {
                        Id = x.Id,
                        OrderTotal = _priceFormatter.FormatPrice(x.OrderTotal, true, false),
                        OrderStatus = x.OrderStatus.GetLocalizedEnum(_localizationService, _workContext),
                        CustomerEmail = x.BillingAddress.Email,
                        CustomerFullName = string.Format("{0} {1}", x.BillingAddress.FirstName, x.BillingAddress.LastName),
                        CreatedOn = _dateTimeHelper.ConvertToUserTime(x.CreatedOnUtc, DateTimeKind.Utc)
                    });
                }),
                Total = orders.TotalCount,
            };

            //summary report
            var reportSummary = _orderReportService.GetOrderAverageReportLine(0,
                                                                              0, orderStatus, null, null,
                                                                              startDateValue, endDateValue, null);


            gridModel.ExtraData = new OrderAggreratorModel()
            {
                aggregatortotal = _priceFormatter.FormatPrice(reportSummary.SumOrders, true, false),
                avgOrderTotal   = _priceFormatter.FormatPrice(reportSummary.SumOrders / gridModel.Total, true, false)
            };

            return(Json(gridModel));
        }
Example #5
0
        public IList <OrderReportModel> CreateOrderReportModels(out int totalResults, IList <Order> orders, GroupUnit groupBy, int page = 1, int count = 15)
        {
            totalResults = 0;
            if (!orders.Any())
            {
                return(new List <OrderReportModel>());
            }
            orders = orders.OrderBy(x => x.CreatedOn).ToList();
            IEnumerable <IGrouping <string, Order> > groupedOrders;
            List <string> allValidGroupNames = null;
            var           minDate            = orders.Min(x => x.CreatedOn);
            var           maxDate            = orders.Max(x => x.CreatedOn);
            var           allDates           = DateTimeHelper.DatesBetween(minDate, maxDate);
            var           currencies         = orders.Select(x => x.CurrencyCode.ToUpperInvariant()).Distinct().ToList();

            switch (groupBy)
            {
            case GroupUnit.Days:
                groupedOrders      = orders.GroupBy(x => x.CreatedOn.ToFormattedString() + " - " + x.CurrencyCode.ToUpperInvariant());
                allValidGroupNames =
                    allDates.SelectMany(x => currencies.Select(y => x.ToFormattedString() + " - " + y)).ToList();
                break;

            case GroupUnit.Months:
                groupedOrders      = orders.GroupBy(x => $"{x.CreatedOn.GetMonthName()} {x.CreatedOn.Year} - {x.CurrencyCode.ToUpperInvariant()}");
                allValidGroupNames = allDates
                                     .SelectMany(x => currencies.Select(y => $"{x.GetMonthName()} {x.Year} - {y}")).Distinct().ToList();
                break;

            case GroupUnit.Years:
                groupedOrders      = orders.GroupBy(x => $"{x.CreatedOn.Year} - {x.CurrencyCode.ToUpperInvariant()}");
                allValidGroupNames = allDates.SelectMany(x => currencies.Select(y => $"{x.Year} - {y}")).Distinct()
                                     .ToList();
                break;

            case GroupUnit.Weeks:
            default:
                minDate.GetWeekRangeDates(out var minWeekDate, out var maxWeekDate);
                var weekStartDate = minWeekDate;
                allValidGroupNames = new List <string>();
                while (weekStartDate < maxDate)
                {
                    var weekStr =
                        $"{weekStartDate.ToFormattedString()} - {weekStartDate.AddDays(6).ToFormattedString()}";
                    foreach (var currency in currencies)
                    {
                        allValidGroupNames.Add($"{weekStr} - {currency}");
                    }
                    //next week
                    weekStartDate = weekStartDate.AddDays(7);
                }
                groupedOrders = orders.GroupBy(x =>
                {
                    x.CreatedOn.GetWeekRangeDates(out var startDate, out var endDate);
                    return($"{startDate.ToFormattedString()} - {endDate.ToFormattedString()} - {x.CurrencyCode.ToUpperInvariant()}");
                });
                break;
            }

            var groupedOrdersAsList = groupedOrders.ToList();
            var orderReports        = new List <OrderReportModel>();

            foreach (var groupName in allValidGroupNames)
            {
                var reportModel = new OrderReportModel()
                {
                    GroupName     = groupName,
                    TotalOrders   = 0,
                    TotalProducts = 0,
                    TotalAmount   = 0,
                    CurrencyCode  = groupName.Substring(groupName.Length - 4).Trim()
                };
                var group = groupedOrdersAsList.FirstOrDefault(x => x.Key == groupName);
                if (group != null)
                {
                    var groupOrders = group.ToList();
                    reportModel.TotalOrders   = groupOrders.Count;
                    reportModel.TotalProducts = groupOrders.SelectMany(x => x.OrderItems).Count();
                    reportModel.TotalAmount   = groupOrders.Sum(x => x.OrderTotal);
                }
                orderReports.Add(reportModel);
            }

            totalResults = orderReports.Count;
            return(orderReports.Skip(count * (page - 1)).Take(count).ToList());
        }