public ActionResult Apply(int basketId) { var selectedBasket = _basketService.GetBasketById(basketId); if (selectedBasket.HasError) { return(Redirect("/Basket")); } var mappedBasket = new Data.Services.UserSession.Basket { Total = selectedBasket.Basket.Total, Items = selectedBasket.Basket.Orders.ConvertAll(orderDetails => new BasketItem { Pizza = orderDetails.Order.Pizza, Size = orderDetails.Order.Size, ExtraToppings = orderDetails.Toppings.ConvertAll(x => x.Topping), Total = orderDetails.Total }) }; _userSessionService.ClearBasketForUser(Session["UserId"].ToString()); _userSessionService.SetBasketForUser(Session["UserId"].ToString(), mappedBasket); return(Redirect("/Basket")); }
public IHttpActionResult Apply(int orderId) { if (Request.Headers.Authorization == null) { return(Unauthorized()); } var selectedBasket = _basketService.GetBasketById(orderId); if (selectedBasket.HasError) { return(Ok(selectedBasket)); } var mappedBasket = new Data.Services.UserSession.Basket { Total = selectedBasket.Basket.Total, Items = selectedBasket.Basket.Orders.ConvertAll(orderDetails => new BasketItem { Pizza = orderDetails.Order.Pizza, Size = orderDetails.Order.Size, ExtraToppings = orderDetails.Toppings.ConvertAll(x => x.Topping), Total = orderDetails.Total }) }; _userSessionService.ClearBasketForUser(Encoding.UTF8.GetString(Convert.FromBase64String(Request.Headers.Authorization.Parameter))); _userSessionService.SetBasketForUser(Encoding.UTF8.GetString(Convert.FromBase64String(Request.Headers.Authorization.Parameter)), mappedBasket); return(Ok()); }
public BasketCheckoutResponse Checkout(DeliveryType delivery, string voucher, string userId, OrderStatus orderStatus) { var response = new BasketCheckoutResponse(); if (!_userSessionService.IsLoggedIn(userId)) { response.AddError(new Error { Code = ErrorCodes.UserNotLoggedIn, UserMessage = "You have to be logged in to complete your order" }); return(response); } if (delivery == DeliveryType.Unknown) { response.AddError(new Error { Code = ErrorCodes.DeliveryTypeUnknown, UserMessage = "Delivery type not specified." }); return(response); } if (orderStatus == OrderStatus.Unknown) { response.AddError(new Error { Code = ErrorCodes.OrderStatusUnkown, UserMessage = "Order status not specified." }); return(response); } var userBasket = _userSessionService.GetBasketForUser(userId); if (!voucher.IsEmpty()) { var verifyVoucherResponse = _voucherService.Verify(userBasket, new List <DeliveryType> { delivery }, voucher); if (!verifyVoucherResponse.HasError) { userBasket.Total = verifyVoucherResponse.Total; } } var orderRequest = new SaveOrderRequest { UserId = _userSessionService.GetUserByUserToken(userId), DeliveryType = delivery.ToString(), Voucher = voucher, GrandTotal = userBasket.Total.InPence, Status = orderStatus.ToString(), Orders = userBasket.Items.ConvertAll(x => new Order { PizzaId = x.Pizza.Id, SizeId = x.Size.Id, ExtraToppingIds = x.ExtraToppings.ConvertAll(y => y.Id), SubTotal = x.Total.InPence }) }; var saveOrderResponse = _orderRepository.SaveOrder(orderRequest); if (saveOrderResponse.HasError) { response.AddError(saveOrderResponse.Error); } _userSessionService.ClearBasketForUser(userId); return(response); }