public ActionResult SaveAsOrder(PaymentViewModel viewModel)
 {
     if (this.ModelState.IsValid)
     {
         Order order = null;
         SaveAsOrderResult result = SaveAsOrderResult.Error;
         Exception exception = this._webStoreServices.UsingClient(c => order = c.StoreClient.SaveAsOrder("default", viewModel.BasketHash, this.Request.UserHostAddress, null, out result));
         if (exception != null)
         {
             this.ModelState.AddModelError("UnexpectedError", this._localizer("An unexpected error has occured, please try again later").ToString());
         }
         else if (result == SaveAsOrderResult.Success)
         {
             return this.BuildProceedToPaymentShape(new ProceedToPaymentViewModel { Order = order });
         }
         else
         {
             switch (result)
             {
                 case SaveAsOrderResult.AddressMissing:
                     this.ModelState.AddModelError("AddressMissing", this._localizer("An address is missing in your basket, please proceed to checkout again").ToString());
                     break;
                 case SaveAsOrderResult.BasketNotFound:
                     this.ModelState.AddModelError("BasketNotFound", this._localizer("Your basket is empty, it could has been emptied because products are not deliverable in your country").ToString());
                     break;
                 case SaveAsOrderResult.Error:
                     this.ModelState.AddModelError("UnexpectedError", this._localizer("An unexpected error has occured, please try again later").ToString());
                     break;
                 case SaveAsOrderResult.InconsistentBasket:
                     this.ModelState.AddModelError("InconsistentBasket", this._localizer("Your basket contains errors, please refresh your basket and proceed to checkout again").ToString());
                     break;
                 case SaveAsOrderResult.InvalidHash:
                     this.ModelState.AddModelError("InvalidHash", this._localizer("Your basket has changed during the checkout, please refresh your basket and proceed to checkout again").ToString());
                     break;
                 case SaveAsOrderResult.ProductNotFound:
                     this.ModelState.AddModelError("ProductNotFound", this._localizer("A product in your basket is no more available, please refresh your basket and proceed to checkout again").ToString());
                     break;
                 case SaveAsOrderResult.ShippingRateValueMissing:
                     this.ModelState.AddModelError("ShippingRateValueMissing", this._localizer("A package in your basket couldn't not be delivered, please refresh your basket and proceed to checkout again").ToString());
                     break;
                 default:
                     this.ModelState.AddModelError("UnexpectedError", this._localizer("An unexpected error has occured, please try again later").ToString());
                     break;
             }
         }
     }
     return this.BuildPaymentShape(viewModel);
 }
 private ActionResult BuildPaymentShape(PaymentViewModel viewModel)
 {
     return new ShapePartialResult(this, this._shapeFactory.EditorTemplate(TemplateName: "Checkout/Payment", Model: viewModel));
 }
 public ActionResult EditPayment(String basketHash)
 {
     PaymentViewModel viewModel = new PaymentViewModel { BasketHash = basketHash };
     this.Response.Cache.SetCacheability(HttpCacheability.NoCache);
     return this.BuildPaymentShape(viewModel);
 }