public async Task <ActionResult> Post(ReturnOrderViewModel model)
        {
            model.OrderId = await GetDeliveryId(model.OrderId);
            await SendCommandAsync <ReturnOrder>(model);

            return(Accepted());
        }
示例#2
0
        public virtual ActionResult ValidateRefund(ReturnOrderViewModel model)
        {
            LogI("ValidateRefund");

            var result = model.ValidateRefundRequest(Db, LogService);

            return(Json(new ValueResult <string>(!result.Any(), String.Join("<br/>", result.Select(r => r.Message)), null), JsonRequestBehavior.AllowGet));
        }
示例#3
0
        public IActionResult ReturnOrder(long id)
        {
            var model = new ReturnOrderViewModel()
            {
                Order  = OrderHelper.GetOrder(id, _context),
                Return = new Return()
                {
                    OrderId = id
                }
            };

            return(View(model));
        }
示例#4
0
        public virtual ActionResult MarkRefundAsProcessed(long id)
        {
            LogI("MarkRefundAsProcessed, id=" + id);

            var result = ReturnOrderViewModel.MarkRefundAsProcessed(Db,
                                                                    LogService,
                                                                    Time,
                                                                    ActionService,
                                                                    id,
                                                                    Time.GetAppNowTime(),
                                                                    AccessManager.UserId);

            return(JsonGet(result));
        }
示例#5
0
        public virtual ActionResult AcceptReturn(long id)
        {
            LogI("AcceptRefund, id=" + id);

            var result = ReturnOrderViewModel.AcceptReturn(Db,
                                                           LogService,
                                                           QuantityManager,
                                                           ActionService,
                                                           id,
                                                           Time.GetAppNowTime(),
                                                           AccessManager.UserId);

            return(JsonGet(result));
        }
示例#6
0
        public virtual ActionResult GetModelByOrderId(string searchString)
        {
            LogI("GetModelByOrderId, searchString=" + searchString);

            var model = new ReturnOrderViewModel();

            if (!String.IsNullOrWhiteSpace(searchString))
            {
                searchString = searchString.RemoveWhitespaces();
                model        = ReturnOrderViewModel.GetByOrderId(Db, LogService, WeightService, searchString);
            }
            return(new JsonResult {
                Data = model, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }
示例#7
0
        public virtual ActionResult GetEmailsByOrderId(string orderId)
        {
            LogI("GetModelByOrderId, orderId=" + orderId);

            IList <EmailViewModel> emails = new List <EmailViewModel>();

            if (!String.IsNullOrEmpty(orderId))
            {
                emails = ReturnOrderViewModel.GetEmailsByOrderId(Db, AddressService, orderId);
            }

            return(new JsonResult {
                Data = emails, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }
示例#8
0
        public async Task <IActionResult> ReturnOrder(ReturnOrderViewModel model)
        {
            var user = await _userManager.GetUserAsync(User);

            model.Return.ReturnOpenedDate = DateTime.Now;

            _context.Add(model.Return);

            foreach (var item in model.ReturnItems)
            {
                var newItem = new ReturnItem()
                {
                    ReturnId = model.Return.Id,
                    ItemId   = item
                };

                _context.Add(newItem);

                model.Return.ReturnItems.Add(newItem);
            }

            _context.SaveChanges();

            OrderHelper.UpdateOrderStatus(model.Return.OrderId, OrderHelper.StatusId(MasterStrings.AwaitingReturn, _context), _context);

            var customerMessage = MasterStrings.Header;

            customerMessage += "<body>";
            customerMessage += string.Format(MasterStrings.CustomerReturn, user.Forename);
            customerMessage += MasterStrings.SpamMessage;
            customerMessage += string.Format(MasterStrings.CustomerOrderLink, model.Return.OrderId);
            customerMessage += "</body></html> ";

            var storeMessage = MasterStrings.Header;

            storeMessage += "<body>";
            storeMessage += string.Format(MasterStrings.StoreReturn, MasterStrings.StoreName);
            storeMessage += MasterStrings.SpamMessage;
            storeMessage += string.Format(MasterStrings.StoreOrderLink, model.Return.OrderId);
            storeMessage += "</body></html> ";

            await _emailSender.SendEmailAsync(user.Email, "Return Confirmation: " + model.Return.OrderId, customerMessage);

            await _emailSender.SendEmailAsync(MasterStrings.AdminEmail, "Order Returned: " + model.Return.OrderId, storeMessage);

            return(ControllerHelper.RedirectToLocal(this, "/Orders/Index?successMessage=Your return has been requested."));
        }
示例#9
0
        public virtual ActionResult Generate(ReturnOrderViewModel model)
        {
            LogI("Index, model=" + model);

            if (ModelState.IsValid)
            {
                model.OrderID = model.OrderID.RemoveWhitespaces();

                var shipmentProviders = ServiceFactory.GetShipmentProviders(LogService,
                                                                            Time,
                                                                            DbFactory,
                                                                            WeightService,
                                                                            AccessManager.ShipmentProviderInfoList,
                                                                            AppSettings.DefaultCustomType,
                                                                            AppSettings.LabelDirectory,
                                                                            AppSettings.ReserveDirectory,
                                                                            AppSettings.TemplateDirectory);

                var labelService   = new LabelService(shipmentProviders, LogService, Time, DbFactory, EmailService, PdfMaker, AddressService);
                var quntityManager = new QuantityManager(LogService, Time);
                var actionService  = new SystemActionService(LogService, Time);

                if (model.ReasonCode == (int)MailLabelReasonCodes.ReturnLabelReasonCode)
                {
                    var returnResults = model.ReturnAction(Db,
                                                           quntityManager,
                                                           actionService,
                                                           LogService,
                                                           Time,
                                                           Time.GetAppNowTime(),
                                                           AccessManager.UserId);

                    model.Messages.AddRange(returnResults);
                }

                if (model.ReasonCode == (int)MailLabelReasonCodes.ExchangeCode)
                {
                    var exchangeResults = model.ExchangeAction(Db,
                                                               LogService,
                                                               Time,
                                                               quntityManager,
                                                               labelService,
                                                               WeightService,
                                                               ShippingService,
                                                               AccessManager.Company,
                                                               Time.GetAppNowTime(),
                                                               AccessManager.UserId);

                    model.Messages.AddRange(exchangeResults);
                }

                if (model.ReasonCode == (int)MailLabelReasonCodes.RefundCode)
                {
                    var refundResults = model.RefundAction(Db,
                                                           quntityManager,
                                                           actionService,
                                                           LogService,
                                                           Time,
                                                           Time.GetAppNowTime(),
                                                           AccessManager.UserId);

                    model.Messages.AddRange(refundResults);
                }

                var affectedStyleIdList = model.Items.Where(i => i.ExchangeStyleId.HasValue).Select(i => (long)i.ExchangeStyleId.Value).Distinct().ToList();
                affectedStyleIdList.AddRange(model.Items.Where(i => i.StyleId.HasValue).Select(i => i.StyleId.Value).Distinct().ToList());
                Cache.RequestStyleIdUpdates(Db,
                                            affectedStyleIdList,
                                            UpdateCacheMode.IncludeChild,
                                            AccessManager.UserId);
            }
            else
            {
                model.Messages.AddRange(ModelState.GetErrors().Select(m => MessageString.Error(m)));
            }

            LogI("Index, Generate results=");
            model.Messages.ForEach(m => LogI(m.Status + ": " + m.Message));

            return(new JsonResult {
                Data = model, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }
示例#10
0
        public virtual ActionResult GetExchangeInfo(string orderNumber)
        {
            var model = ReturnOrderViewModel.GetExchangeInfo(Db, WeightService, orderNumber);

            return(JsonGet(ValueResult <IList <ReturnQuantityItemViewModel> > .Success("", model)));
        }