public RedirectResult Create(PaymentDetails payementDetails)
        {
            Api.Data.Entities.Card card = RetrieveCard(payementDetails);


            //cardRepository.SaveCard(card);
            //cardRepository.Commit();

            Api.Data.Entities.Customer customer = new Api.Data.Entities.Customer
            {
                cardId = card.Id,
                Name   = payementDetails.Lastname + ", " + payementDetails.Firstname
            };



            //customerRepository.SaveCustomer(customer);
            //customerRepository.Commit();

            PaymentData payment = new PaymentData()
            {
                Order    = orderRepository.GetById(int.Parse(payementDetails.TransactionId)),
                Customer = customer
            };

            //paymentRepository.SavePayment(payment);
            //paymentRepository.Commit();

            PaymentApiModel pam = new PaymentApiModel(card, payment, customer);

            var requestResult = CreatePaymentRequest(pam);



            //ajouter une loguique de réussite ou de rejet du payment
            //manipuler le paymentDetails pour voir si ca marche
            bool result = Validate(payementDetails);
            var  rnd    = new Random();
            int  val    = rnd.Next(6);



            //Si le payment réussi, alors on renvoi vers l'écran de réussite
            if (result && val <= 3)
            {
                return(Redirect(successUrl));
            }
            else
            {
                return(Redirect(failureUrl));
            }
        }
        private async Task <HttpResponseMessage> CreatePaymentRequest(PaymentApiModel payment)
        {
            using (var client = new HttpClient())
                using (var request = new HttpRequestMessage())
                {
                    request.Method     = HttpMethod.Post;
                    request.RequestUri = new Uri("https://localhost:44377/api/Transaction");


                    var json = JsonConvert.SerializeObject(payment);
                    request.Content = new StringContent(json, Encoding.UTF8, "application/json");
                    var response = await client.SendAsync(request);

                    return(response);
                }
        }
        public bool Post(PaymentApiModel paymentData)
        {
            // Order order = paymentData.PaymentData.Order;

            if (paymentData.Card.Id == 0)
            {
                Card card = new Card()
                {
                    cardholderName = paymentData.Card.cardholderName,
                    cvv            = paymentData.Card.cvv,
                    cardNumber     = paymentData.Card.cardNumber,
                    expiryDate     = paymentData.Card.expiryDate
                };

                cardRepository.SaveCard(card);
                cardRepository.Commit();
            }
            else
            {
                Card card = cardRepository.GetById(paymentData.Card.Id);
            }

            Customer customer = new Customer()
            {
                cardId = cardRepository.GetByCredentials(paymentData.Card.cardholderName, paymentData.Card.cvv, paymentData.Card.cardNumber).Id,
                Name   = paymentData.Customer.Name
            };

            customerRepository.SaveCustomer(customer);
            customerRepository.Commit();

            //TODO : VOIR POURQUOI CET ENCULAY DE EF NE VEUX PAS METTRE A JOUR LORDERID VTFF IL EST 58
            PaymentData newPayment = new PaymentData()
            {
                Customer = customer,
                OrderId  = paymentData.PaymentData.OrderId
            };

            paymentRepository.SavePayment(newPayment);
            paymentRepository.Commit();

            return(true);
        }