Пример #1
0
        public async Task <OrderCreatedViewModel> CreateOrder(CheckOutInfoInput checkOutInfoInput)
        {
            var basket = await _basketService.Get();

            var paymentInfoInput = new PaymentInfoInput()
            {
                CardName   = checkOutInfoInput.CardName,
                CardNumber = checkOutInfoInput.CardNumber,
                Expiration = checkOutInfoInput.Expiration,
                CVV        = checkOutInfoInput.CVV,
                TotalPrice = basket.TotalPrice
            };

            var responsePayment = await _paymentService.ReceivePayment(paymentInfoInput);

            if (!responsePayment)
            {
                return(new OrderCreatedViewModel()
                {
                    Error = "Ödeme alınamadı.", IsSuccessful = false
                });
            }

            var orderCreateInput = new OrderCreateInput()
            {
                BuyerId = _sharedIdentityService.GetUserId,
                Address = new AddressCreateInput {
                    Province = checkOutInfoInput.Province, District = checkOutInfoInput.District, Street = checkOutInfoInput.Street, Line = checkOutInfoInput.Line, ZipCode = checkOutInfoInput.ZipCode
                },
            };

            basket.BasketItems.ForEach(x =>
            {
                var orderItem = new OrderItemCreateInput {
                    ProductId = x.CourseId, Price = x.GetCurrentPrice, PictureUrl = "", ProductName = x.CourseName
                };
                orderCreateInput.OrderItems.Add(orderItem);
            });

            var response = await _httpClient.PostAsJsonAsync <OrderCreateInput>("orders", orderCreateInput);

            if (!response.IsSuccessStatusCode)
            {
                return(new OrderCreatedViewModel()
                {
                    Error = "Sipariş oluşturulamadı", IsSuccessful = false
                });
            }

            var orderCreatedViewModel = await response.Content.ReadFromJsonAsync <Response <OrderCreatedViewModel> >();

            orderCreatedViewModel.Data.IsSuccessful = true;
            await _basketService.Delete();

            return(orderCreatedViewModel.Data);
        }
Пример #2
0
        public async Task <OrderSuspendViewModel> SuspendOrder(CheckOutInfoInput checkOutInfoInput)
        {
            var basket = await _basketService.Get();

            var orderCreateInput = new OrderCreateInput()
            {
                BuyerId = _sharedIdentityService.GetUserId,
                Address = new AddressCreateInput {
                    Province = checkOutInfoInput.Province, District = checkOutInfoInput.District, Street = checkOutInfoInput.Street, Line = checkOutInfoInput.Line, ZipCode = checkOutInfoInput.ZipCode
                },
            };

            basket.BasketItems.ForEach(x =>
            {
                var orderItem = new OrderItemCreateInput {
                    ProductId = x.CourseId, Price = x.GetCurrentPrice, PictureUrl = "", ProductName = x.CourseName
                };
                orderCreateInput.OrderItems.Add(orderItem);
            });


            var paymentInfoInput = new PaymentInfoInput()
            {
                CardName   = checkOutInfoInput.CardName,
                CardNumber = checkOutInfoInput.CardNumber,
                Expiration = checkOutInfoInput.Expiration,
                CVV        = checkOutInfoInput.CVV,
                TotalPrice = basket.TotalPrice,
                Order      = orderCreateInput
            };

            var responsePayment = await _paymentService.ReceivePayment(paymentInfoInput);

            if (!responsePayment)
            {
                return(new OrderSuspendViewModel()
                {
                    Error = "Ödeme alınamadı.", IsSuccessful = false
                });
            }

            await _basketService.Delete();

            return(new OrderSuspendViewModel()
            {
                IsSuccessful = true
            });
        }
Пример #3
0
        public async Task <IActionResult> Checkout(CheckOutInfoInput checkOutInfoInput)
        {
            // 1.yol senkron iletişim
            //var orderStatus = await _orderService.CreateOrder(checkOutInfoInput);
            // 2.yol asenkron iletişim

            var orderSuspend = await _orderService.SuspendOrder(checkOutInfoInput);

            if (!orderSuspend.IsSuccessful)
            {
                var basket = await _basketService.Get();

                ViewBag.Basket = basket;
                ViewBag.Error  = orderSuspend.Error;
                return(View());
            }

            // 1.yol senkron iletişim
            //return RedirectToAction(nameof(SuccessfulCheckout), new { orderId = orderSuspend.OrderId });
            // 2.yol asenkron iletişim
            return(RedirectToAction(nameof(SuccessfulCheckout), new { orderId = new Random().Next(1, 1000) }));
        }