示例#1
0
        public IActionResult ReturnOrder(string orderGuid)
        {
            var order = _orderService.GetByGuid(orderGuid);

            if (order == null || order.UserId != CurrentUser.Id)
            {
                return(NotFound());
            }
            if (!CanReturnOrder(order, out var returnableOrderItems, out var lastReturnDate))
            {
                return(R.Fail.With("error", T("The order is not eligible for returns")).Result);
            }

            var models = returnableOrderItems.Select(x =>
            {
                var returnItemModel = new ReturnItemModel()
                {
                    OrderItem = _orderModelFactory.Create(x),
                    MinimumQuantityToReturn = x.Product.MinimumPurchaseQuantity
                };
                if (returnItemModel.MinimumQuantityToReturn == 0)
                {
                    returnItemModel.MinimumQuantityToReturn = 1;
                }
                return(returnItemModel);
            }).ToList();

            order.OrderItems = null;
            var orderModel = _orderModelFactory.Create(order);
            //get the actions and reasons
            var customLabels =
                _customLabelService.Get(
                    new List <string>()
            {
                ReturnActionLabel, ReturnReasonLabel
            }, out _).ToList();
            var actions             = customLabels.Where(x => x.Type == ReturnActionLabel).ToList();
            var reasons             = customLabels.Where(x => x.Type == ReturnReasonLabel).ToList();
            var reasonsAsSelectList = SelectListHelper.GetSelectItemList(reasons, x => x.Id, x => x.Text);
            var actionsAsSelectList = SelectListHelper.GetSelectItemList(actions, x => x.Id, x => x.Text);

            //set breadcrumb nodes
            SetBreadcrumbToRoute("Account", RouteNames.AccountProfile);
            SetBreadcrumbToRoute("Orders", RouteNames.AccountOrders);
            SetBreadcrumbToRoute(order.OrderNumber, RouteNames.SingleOrder, new { orderGuid }, localize: false);
            SetBreadcrumbToRoute("Return Request", RouteNames.ReturnOrder);

            return(R.Success.With("returnItems", models).With("availableReasons", reasonsAsSelectList)
                   .With("availableActions", actionsAsSelectList).With("order", orderModel)
                   .With("lastReturnDate", lastReturnDate).Result);
        }
        public IActionResult CustomLabelSuggestions(string labelType, string q = null)
        {
            if (labelType.IsNullEmptyOrWhiteSpace())
            {
                return(R.Fail.Result);
            }
            q = q ?? "";
            var attributes = _customLabelService.Get(x => x.Type == labelType && x.Text.StartsWith(q));
            var model      = new List <AutocompleteModel>();

            foreach (var c in attributes)
            {
                model.Add(new AutocompleteModel()
                {
                    Id   = c.Id,
                    Text = c.Text
                });
            }
            return(R.Success.With("suggestions", model.OrderBy(x => x.Text)).Result);
        }