public async Task <IActionResult> Add([FromBody] Order order) { await _orderService.Add(order); return(Ok(order.OrderMapping())); }
public async Task <IActionResult> Add([FromBody] OrderDTO order) { var findUser = await _userService.FindAsync(order.UserToken); if (!findUser.IsSuccessful) { return(Json(new Response <string> { Message = Strings.InvalidToken })); } var addOrder = await _orderService.Add(order); if (!addOrder.IsSuccessful) { return(Json(new Response <AddOrderReponse> { Message = addOrder.Message })); } var fatcory = await _gatewayFectory.GetInsance(int.Parse(_configuration["DefaultGatewayId"])); var transModel = new CreateTransactionRequest { OrderId = addOrder.Result.Order.OrderId, Amount = addOrder.Result.Order.TotalPriceAfterDiscount, MobileNumber = findUser.Result.MobileNumber.ToString(), ApiKey = fatcory.Result.Gateway.MerchantId, CallbackUrl = fatcory.Result.Gateway.PostBackUrl, Url = fatcory.Result.Gateway.Url }; var createTrans = await fatcory.Result.Service.CreateTrasaction(transModel, null); if (!createTrans.IsSuccessful) { return(Json(new Response <AddOrderReponse> { Message = createTrans.Message, Result = new AddOrderReponse { OrderId = addOrder.Result.Order.OrderId } })); } var addPayment = await _paymentService.Add(transModel, createTrans.Result.TransactionId, fatcory.Result.Gateway.PaymentGatewayId); if (!addPayment.IsSuccessful) { return(Json(new Response <AddOrderReponse> { Message = addPayment.Message, Result = new AddOrderReponse { OrderId = addOrder.Result.Order.OrderId } })); } return(Json(new Response <AddOrderReponse> { IsSuccessful = true, Result = new AddOrderReponse { OrderId = addOrder.Result.Order.OrderId, Url = createTrans.Result.GatewayUrl, BasketChanged = addOrder.Result.IsChanged, ChangedProducts = addOrder.Result.Order.OrderDetails.Select(x => new ProductDTO { Id = x.ProductId, Discount = x.DiscountPercent ?? 0, Price = x.Price, Count = x.Count }) } })); }
public IActionResult OrderDetails(BasketOrderModel basketOrderModel) { string tempId = HttpContext.Session.GetString("id"); int userId = int.Parse(tempId); var basketProducts = _basketService.Baskets(userId); List <BasketListele> basketListele = new List <BasketListele>(); foreach (var item in basketProducts) { BasketListele basketList = new BasketListele(); var product = _productService.GetById(item.ProductId); if (product == null) { var basketToDeleted = _basketService.GetById(item.Id); _basketService.Delete(basketToDeleted); // eğer kullanıcın sepetindeki bir ürün daha sonra alınırsa bu ürün kullanıcının sepetinden de otomatik //silinmektedir. continue; } int basketId = item.Id; basketList.Products = product; basketList.BasketId = basketId; basketListele.Add(basketList); } basketOrderModel.BasketLists = basketListele; //silinebilir. basketOrderModel.OrderList.BasketIds = HttpContext.Session.GetString("BasketIds"); basketOrderModel.OrderList.OrderTime = DateTime.Now; basketOrderModel.OrderList.UserId = userId; basketOrderModel.CardDetails.UserId = userId; Order order = new Order() //aynı kullanıcıya ait birden fazla kayıt veritabanında tutulur . Bu daha sonra düzenlenebilir. { Address = basketOrderModel.OrderList.Address, BasketIds = basketOrderModel.OrderList.BasketIds, EMail = basketOrderModel.OrderList.EMail, OrderTime = basketOrderModel.OrderList.OrderTime, UserId = basketOrderModel.OrderList.UserId }; _orderService.Add(order); int orderId = order.Id; // o anki order ıd alınır . sipariş faturasına eklenmesi için string orderIdNow = orderId.ToString(); HttpContext.Session.SetString("getByOrderId", orderIdNow); Card card = new Card() { CardName = basketOrderModel.CardDetails.CardName, CardNumber = basketOrderModel.CardDetails.CardNumber, Cvv = basketOrderModel.CardDetails.Cvv, ExpirationMonth = basketOrderModel.CardDetails.ExpirationMonth, ExpirationYear = basketOrderModel.CardDetails.ExpirationYear, UserId = userId }; Card userCard = _cardService.GetByUserId(userId); if (userCard == null) // ilk kez kayıt yapan kullanıcı veritabanına eklenir. Çünkü 1 kullanıcının sistemde sadece 1 kayıtı olacaktır. { _cardService.Add(card); } // eğer kullanıcı kendi kartı dışında bir kart kullanır ise bu kart sisteme eklenmez. Daha sonra yapılacak olan //tüm alışverişlerde sistemde ilk kayıt yapılmış olan kart kullanıcıya gösterilecektir. // Daha sonra istenirse kaydedilmiş olan kartı güncelleyebilir veya silebilir. //BasketOrderModel basketOrderModelDeneme = new BasketOrderModel() //silinebilir. Veritabanınadan order bilgileri çekilebilir. //{ // CardDetails = card, // City = basketOrderModel.City, // FirstName = basketOrderModel.FirstName, // LastName = basketOrderModel.LastName, // Phone = basketOrderModel.Phone, // OrderList = order, // BasketLists = basketOrderModel.BasketLists //}; #region Mail Yollama SmtpClient client = new SmtpClient(); MailAddress from = new MailAddress("mail adresiniz", "ShoopingApp"); string eMail = basketOrderModel.OrderList.EMail; MailAddress to = new MailAddress(eMail);//bizim mail adresi MailMessage msg = new MailMessage(from, to); msg.IsBodyHtml = true; msg.Subject = "Alışveriş Faturası"; #region StringBuilder ile Mail düzenleme StringBuilder builder = new StringBuilder(); builder.Append("<head>"); builder.Append(" <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css \" " + " " + "integrity=\"sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l\" " + " " + "crossorigin=\"anonymous\" />"); builder.Append("</head>"); builder.Append("<body>"); builder.Append("<h4 style=\"text-align:center;color:red;\">Sayin " + basketOrderModel.FirstName + " " + basketOrderModel.LastName + " Siparis Faturaniz</h4><br><br>"); builder.Append("<table class=\"table table-striped\">"); builder.Append(" <tr>"); builder.Append("<th>Ürün resmi </th><th>Ürün ismi </th><th>Ürün fiyatı</th><th>Açiklama </th> "); builder.Append("</tr>"); foreach (var item in basketListele) { builder.Append(" <tr>"); string imagePath = "wwwroot\\" + "img\\" + item.Products.ImageUrl; //var imageFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, imagePath); builder.Append("<td> <img src=" + "\"" + imagePath + "\"" + " " + "width=\"100\" height=\"100\" /> </td><td>" + item.Products.ProductName + "</td><td>" + item.Products.ProductPrice + "</td><td>" + item.Products.Description + " </td> "); builder.Append("</tr>"); } builder.Append("</table>"); builder.Append("<div style=\" text-align:center;margin-top:40px; font-family: Arial, Helvetica, sans - serif; \">"); builder.Append("<pre>"); builder.Append("<br><br><h4 style=\"color:red;\">-- Kart Bilgileriniz --</h4>" + "<br>"); builder.Append(" Kart İsminiz : " + basketOrderModel.CardDetails.CardName + "<br>"); builder.Append(" Kart Numaraniz : " + basketOrderModel.CardDetails.CardNumber + "<br>"); builder.Append(" Son kullanma tarihi : " + basketOrderModel.CardDetails.ExpirationMonth + "\\" + basketOrderModel.CardDetails.ExpirationYear + "<br>"); int toplam = 0; foreach (var item in basketListele) { toplam += item.Products.ProductPrice; } builder.Append("<br><br><h4 style=\"color:red;\">-- Sipariş Bilgileriniz --</h4>" + "<br>"); builder.Append(" Siparis Tutari : " + toplam + " TL" + "<br>"); builder.Append(" Siparis Adresiniz : " + basketOrderModel.OrderList.Address + "<br>"); builder.Append(" E-Mail Adresiniz : " + basketOrderModel.OrderList.EMail + "<br>"); builder.Append(" Siparis Tarihi : " + basketOrderModel.OrderList.OrderTime + "<br>"); builder.Append(" Telefon Numaraniz : " + basketOrderModel.Phone + "<br>"); builder.Append(" Sehriniz : " + basketOrderModel.City + "<br>"); builder.Append("</pre>"); builder.Append("</div>"); builder.Append("</body>"); #region Pdf StringReader sr = new StringReader(builder.ToString()); Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f); HTMLWorker htmlparser = new HTMLWorker(pdfDoc); #region Türkçe karakter sorunu için yazılması gereken kod bloğu. // FontFactory.Register(Path.Combine("C:\\Windows\\Fonts\\Arial.ttf"), "Garamond"); /// kendi türkçe karakter desteği olan fontunuzu da girebilirsiniz. StyleSheet css = new StyleSheet(); css.LoadTagStyle("body", "face", "Garamond"); css.LoadTagStyle("body", "encoding", "Identity-H"); css.LoadTagStyle("body", "size", "12pt"); htmlparser.SetStyleSheet(css); #endregion using (MemoryStream memoryStream = new MemoryStream()) { PdfWriter writer = PdfWriter.GetInstance(pdfDoc, memoryStream); pdfDoc.Open(); htmlparser.Parse(sr); pdfDoc.Close(); byte[] bytes = memoryStream.ToArray(); memoryStream.Close(); // normal text halinde yollar ama biz pdf yolluyoruz ve buna gerek kalmaz. // msg.Body += "Bizleri tercih ettiğiniz için teşekkür ederiz" + builder; //burada başında gönderen kişinin mail adresi geliyor //msg.CC.Add(from);//herkes görür msg.Attachments.Add(new Attachment(new MemoryStream(bytes), "SiparisFaturasi.pdf")); // msg.Attachments.Add(new Attachment("images/hp.jpg")); NetworkCredential info = new NetworkCredential("mail adresiniz", "sifreniz"); client.Port = 587; client.Host = "smtp.gmail.com"; client.EnableSsl = true; client.Credentials = info; client.Send(msg); } #endregion #endregion #endregion #region Odeme //Odeme actiondan buraya taşınmıştır. Çünkü Post methotda olması daha uygun olacaktır. foreach (var item in basketProducts) { var productToDeleted = _productService.GetById(item.ProductId); // tam sepette ödeme ye tıklarken ürün satılmışsa buradaki product // null olabilir bu durumu sonra kontrol etmelisin. var product = _productService.GetById(item.ProductId); // ilgili ürün bulunur. int productPrice = product.ProductPrice; // ürünün fiyatı bulunur. int saticiId = product.UserId; User satici = _userService.GetById(saticiId); satici.Balance += productPrice; _userService.Update(satici); // saticinin bakiyesi güncellenir. if (productToDeleted.UnitsInStock == 1) { _productService.Delete(productToDeleted); // Stokta 1 tane varsa ilgili ürün silinir. _favorilerService.Delete(item.ProductId); // favorilerden de silinir. } if (productToDeleted.UnitsInStock > 1) { productToDeleted.UnitsInStock -= 1; _productService.Update(productToDeleted); } _basketService.Delete(item); // ilgili sipariş silinir. } #endregion // return View(basketOrderModelDeneme); //sipariş faturası // ödeme kısmında productlar veritabanından silinir. // ama kullanıcı siparişten vazgeçebilir. fake den silinse daha güzel olur . Araştır bunu //kullanıcı sipariş verdikten sonra iptal edemez bu yüzden fake e ihtiyeç yoktur. Bu durum Daha sonra düzenlenebilir. return(RedirectToAction("Odeme", "Basket", new { city = basketOrderModel.City, firstName = basketOrderModel.FirstName, lastName = basketOrderModel.LastName, phone = basketOrderModel.Phone, cardName = basketOrderModel.CardDetails.CardName, cardNumber = basketOrderModel.CardDetails.CardNumber, cvv = basketOrderModel.CardDetails.Cvv, expirationMonth = basketOrderModel.CardDetails.ExpirationMonth, expirationYear = basketOrderModel.CardDetails.ExpirationYear })); }
public async Task <IActionResult> Add([FromBody] OrderDTO order) { return(Ok(await orderService.Add(order))); }
public IActionResult Add([FromBody] Order order) { _orderService.Add(order); return(Ok()); }
public IHttpActionResult Post(Order order) { return(HandleCallback(() => _ordersService.Add(order))); }
public IActionResult Post([FromBody] Order body) { var entity = _manager.Add(body); return(ResponseJson(entity)); }
public IActionResult Post(OrderDto order) { orderService.Add(order); return(Created("", order)); }
public async Task <ActionResult <Order> > AddOrder([FromBody] OrderDTO orderDTO) { var order = await _orderService.Add(orderDTO.UserId, orderDTO.AddressId); return(Ok(order)); }
public IActionResult Add([FromBody] OrderViewModel orderViewModel) { _orderService.Add(orderViewModel); return(Ok("product ordered!!!")); }
public IActionResult Post([FromBody] Order order) { orderService.Add(order); return(CreatedAtRoute(new { id = order.Id }, order)); }
public void Post([FromBody] OrderModel model, [FromServices] IOrderService service) { model.OrderId = null; service.Add(model); }
public async Task <IActionResult> Post([FromBody] OrderViewModel value) { try { if (value.TimeSlots == null || value.TimeSlots.Count < 1) { throw new AppException("You have not chosen any timesheets to book. " + "Please go back and select timeslots for this engineer"); } var customer = _mapper.Map <CustomerAccount>(value.Customer); var job = _mapper.Map <Job>(value.Job); var tz = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"); //adjust from UTC to EST value.TimeSlots.ForEach( x => { x.BeginDatetime = TimeZoneInfo.ConvertTimeFromUtc(x.BeginDatetime, tz); x.EndDatetime = TimeZoneInfo.ConvertTimeFromUtc(x.EndDatetime, tz); } ); var timeslots = _mapper.Map <List <TimeSlot> >(value.TimeSlots); //create or return existing customer customer = _customers.Add(customer); //create or return job job.CustomerId = customer.CustomerId; job = _jobs.Add(job); //create the order entity var order = new Order(); order.JobID = job.JobId; order.HasPaid = false; order.Signature = value.Signature; order.TimeSlots = timeslots; //add to persistance store //convert return model into viewmodel for further processing var added = RefreshViewModel( _orders.Add(order) ); //TODO: Port the emails to a queue based solution //create and send invoice string body = await _razor.RenderViewToStringAsync("/Email/Templates/Invoice.cshtml", added); _email.SendMail(new List <string>() { customer.Email }, new List <string>(), new List <string>() { _BccEmail }, _invoiceSubject, body); return(StatusCode((int)HttpStatusCode.Created, added)); } catch (AppException ex) { return(StatusCode((int)HttpStatusCode.UnprocessableEntity, new AppException(ex.Message))); } catch (Exception ex) { return(StatusCode((int)HttpStatusCode.BadRequest, new AppException(ex.Message))); } }
public void Add([FromBody] OrderViewModel order) { _service.Add(order); }
public ActionResult CreateOrder(string orderViewModel) { if (!Request.IsAuthenticated) { TempData["UnAuthenticated"] = "Bạn phải đăng nhập để thanh toán"; return(Json(new { status = false })); } var order = new JavaScriptSerializer().Deserialize <OrderViewModel>(orderViewModel); var orderNew = new Order(); bool isEnough = true; orderNew.UpdateOrder(order); if (Request.IsAuthenticated) { var userId = User.Identity.GetUserId(); orderNew.CustomerId = userId; orderNew.CreatedBy = User.Identity.GetUserName(); } var cart = (List <ShoppingCartViewModel>)Session[CommonConstants.ShoppingCartSession]; var orderDetails = new List <OrderDetail>(); foreach (var item in cart) { var detail = new OrderDetail { ProductID = item.ProductId, Quantity = item.Quantity, Price = item.Product.Price }; orderDetails.Add(detail); isEnough = _productService.SellingProduct(item.ProductId, item.Quantity); } if (!isEnough) { return(Json(new { status = false, message = "Sản phẩm này hiện tại đang hết hàng." })); } var orderReturn = _orderService.Add(ref orderNew, orderDetails); _orderService.SaveChanges(); var totalAmount = orderDetails.Sum(x => x.Quantity * x.Price).ToString(); Session["totalAmount"] = totalAmount; if (order.PaymentMethod == "CASH") { ApplySendHtmlOrder(); return(Json(new { status = true })); } var currentLink = ConfigHelper.GetByKey("CurrentLink"); var info = new RequestInfo { Merchant_id = _merchantId, Merchant_password = _merchantPassword, Receiver_email = _merchantEmail, cur_code = "vnd", bank_code = order.BankCode, Order_code = orderReturn.ID.ToString(), Total_amount = totalAmount, fee_shipping = "0", Discount_amount = "0", order_description = "Thanh toán đơn hàng tại uStora shop", return_url = currentLink + "/xac-nhan-don-hang.htm", cancel_url = currentLink + "/huy-don-hang.htm", Buyer_fullname = order.CustomerName, Buyer_email = order.CustomerEmail, Buyer_mobile = order.CustomerMobile }; Session["OrderId"] = orderReturn.ID; var objNlChecout = new APICheckout(); var result = objNlChecout.GetUrlCheckout(info, order.PaymentMethod); if (result.Error_code == "00") { return(Json(new { status = true, urlCheckout = result.Checkout_url, message = result.Description })); } return(Json(new { status = false, message = result.Description })); }
public async Task <Order> Add(Guid id) => await _orderService.Add(id);
public async Task <ActionResult <Order> > Post(Order ent) { await _svc.Add(ent); return(CreatedAtAction("Get", new { id = ent.Id }, ent)); }
public async Task <ActionResult> PlaceOrder() { Payment createdPayment = null; List <CartVM> lstcartVM = Session["cart"] as List <CartVM>; DomainModels.Order order = new DomainModels.Order(); var userManager = HttpContext.GetOwinContext().GetUserManager <AppUserManager>(); AppUser user = await userManager.FindByNameAsync(User.Identity.Name); if (user != null) { order.UserId = user.Id; order.CreatedAt = DateTime.Now; _orderservice.Add(order); OrderDetail orderDetail = new OrderDetail(); foreach (var item in lstcartVM) { orderDetail.OrderId = order.OrderID; orderDetail.UserId = order.UserId; orderDetail.ProductId = item.ProductId; orderDetail.Quantity = item.Quantity; _orderdetailservice.AddOrderDetail(orderDetail); } } #region Paypal var apiContext = GetApiContext(); decimal totalCost = lstcartVM.Sum(p => p.Price * p.Quantity) * 100m; var payment = new Payment { experience_profile_id = AppConstants.experienceprofile, intent = "sale", payer = new Payer { payment_method = "paypal" }, transactions = new List <Transaction> { new Transaction { description = "Single Payment WebShop", amount = new Amount { currency = "EUR", total = (totalCost / 100.00m).ToString(), }, item_list = CreatePaypalItemListOrders(lstcartVM) } }, redirect_urls = new RedirectUrls { return_url = Url.Action("Return", "Cart", null, Request.Url.Scheme), cancel_url = Url.Action("Cancel", "Cart", null, Request.Url.Scheme) } }; try { createdPayment = payment.Create(apiContext); order.PayPalReference = createdPayment.id; _orderservice.Edit(order); } catch (PayPal.PaymentsException Ex) { Debug.WriteLine(Ex.ToString()); } var approvalUrl = createdPayment.links.FirstOrDefault(x => x.rel.Equals("approval_url", StringComparison.OrdinalIgnoreCase)); #endregion Paypal Session["cart"] = null; return(Redirect(approvalUrl.href)); }
public Orders Post([FromBody] Orders order) { _orderService.Add(order); return(order); }
private void DoArbitrage(Observation observation, ArbitrageInfo info) { var volume = Math.Min(observation.PerVolume, observation.AvailabeVolume); volume = Math.Min(volume, info.SpreadVolume); var orderBuyId = Guid.NewGuid(); var orderSellId = Guid.NewGuid(); var buyRequest = new OrderRequest() { ClientOrderId = orderBuyId.ToString(), CurrencyPair = observation.CurrencyPair, OrderType = OrderType.Market, Price = 0m, TradeType = TradeType.Buy, Volume = volume, }; var sellRequest = new OrderRequest() { ClientOrderId = orderSellId.ToString(), CurrencyPair = observation.CurrencyPair, OrderType = OrderType.Market, Price = 0m, TradeType = TradeType.Sell, Volume = volume, }; var buyResult = _exchangeTradeService.MakeANewOrder(observation.FromExchangeName, buyRequest); var sellResult = _exchangeTradeService.MakeANewOrder(observation.ToExchangeName, sellRequest); if (!buyResult.IsSuccessful) { var message = $"Make a buy failed {buyResult.Message} {observation.GetName()}"; _messageService.Error(observation.Id, observation.Name, message); observation.RunningStatus = RunningStatus.Error; _logger.LogError(message); } if (!sellResult.IsSuccessful) { var message = $"Make a sell order failed {sellResult.Message} {observation.GetName()}"; _messageService.Error(observation.Id, observation.Name, message); observation.RunningStatus = RunningStatus.Error; _logger.LogError(message); } if (buyResult.IsSuccessful ^ sellResult.IsSuccessful) { var message = $"only one order is executed!!!! buy {buyResult.IsSuccessful} sell {sellResult.IsSuccessful} {observation.GetName()}"; _messageService.Error(observation.Id, observation.Name, message); _logger.LogCritical(message); } if (buyResult.IsSuccessful && sellResult.IsSuccessful) { _observationService.SubtractAvailabeVolume(observation.Id, volume); var arbitrage = new Arbitrage { DateCreated = DateTime.UtcNow, Id = Guid.NewGuid(), ObservationId = observation.Id, ObservationName = observation.Name, Volume = volume, Spread = info.SpreadValue }; _arbitrageService.Add(arbitrage); var buyOrder = new Order { ArbitrageId = arbitrage.Id, ObservationId = arbitrage.ObservationId, ObservationName = arbitrage.ObservationName, DateCreated = DateTime.UtcNow, ExchangeName = observation.FromExchangeName, Id = Guid.NewGuid(), OrderStatus = buyResult.Data.Status, Price = info.FromPrice, RemoteId = buyResult.Data.Id, CurrencyPair = observation.CurrencyPair, TradeType = TradeType.Buy, Volume = volume, }; var sellOrder = new Order { ArbitrageId = arbitrage.Id, ObservationId = arbitrage.ObservationId, ObservationName = arbitrage.ObservationName, DateCreated = DateTime.UtcNow, ExchangeName = observation.ToExchangeName, Id = Guid.NewGuid(), OrderStatus = buyResult.Data.Status, Price = info.ToPrice, RemoteId = buyResult.Data.Id, CurrencyPair = observation.CurrencyPair, TradeType = TradeType.Sell, Volume = volume }; _orderService.Add(buyOrder, sellOrder); _messageService.Write(observation.Id, observation.Name, $"{observation.Name} do a arbitrage spreadValue:{info.SpreadValue:f2} volume:{volume:f5} {DateTime.UtcNow}"); } }
public IActionResult Post([FromBody] SalesOrderHeader order) { orderService.Add(order); return(CreatedAtAction("GetById", new { Id = order.SalesOrderId }, order)); }
public IActionResult Post([FromBody] OrderModel order) { order.UserId = GetAuthorizedUserId(); _orderService.Add(order); return(Ok(order)); }
public async Task <IActionResult> Store([FromRoute] int productId) { if (HttpContext.Session.TryGetValue("@order-number", out var value)) { var orderNumber = new Guid(value); var item = new OrderItemStoreViewModel { ProductId = productId }; var itemResult = await _orderService.AddItem(orderNumber, item); if (itemResult.IsFailure) { TempData["Failure"] = "Não foi possível adicionar o produto no carrinho"; return(RedirectToAction("Index", "Product")); } TempData["Success"] = "Produto adicionado ao carrinho"; var countResult = await _orderService.CountNumberOfItems(orderNumber); if (countResult.IsFailure) { TempData["Failure"] = "Não foi possível atualizar o carrinho"; return(RedirectToAction("Index", "Product")); } HttpContext.Session.SetInt32("@order-items-count", countResult.Value); return(RedirectToAction("Index", "Product")); } var order = new OrderStoreViewModel { Number = Guid.NewGuid() }; var orderCreateResult = await _orderService.Add(order); if (orderCreateResult.IsFailure) { TempData["Failure"] = "Não foi possível adicionar o produto no carrinho"; return(RedirectToAction("Index", "Product")); } HttpContext.Session.Set("@order-number", order.Number.ToByteArray()); var orderItem = new OrderItemStoreViewModel { ProductId = productId }; var orderItemCreateResult = await _orderService.AddItem(order.Number, orderItem); if (orderItemCreateResult.IsFailure) { TempData["Failure"] = "Não foi possível adicionar o produto no carrinho"; return(RedirectToAction("Index", "Product")); } TempData["Success"] = "Produto adicionado ao carrinho"; var orderItemCountResult = await _orderService.CountNumberOfItems(order.Number); if (orderItemCountResult.IsFailure) { TempData["Failure"] = "Não foi possível atualizar o carrinho"; return(RedirectToAction("Index", "Product")); } HttpContext.Session.SetInt32("@order-items-count", orderItemCountResult.Value); return(RedirectToAction("Index", "Product")); }