public async Task <IActionResult> Edit(int id, [Bind("Id,Ssn,RefName,NumberOfMatches,NumberOfAsHD,NumberOfAsLD,FeeHD,FeeLD,Fee,TravelKost,LateMatchStart,Alowance,TotalPayment,TournamentId,BankAccountNumber")] PaymentVerification paymentVerification)
        {
            if (id != paymentVerification.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(paymentVerification);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!PaymentVerificationExists(paymentVerification.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["TournamentId"] = new SelectList(_context.Tournament, "Id", "Id", paymentVerification.TournamentId);
            return(View(paymentVerification));
        }
        public async Task <PaymentVerification> PaymentVerificationAsync(PaymentVerification model)
        {
            try
            {
                string serializedUser = JsonConvert.SerializeObject(model);
                var    requestMessage = new HttpRequestMessage(HttpMethod.Post, "Home/PaymentVerificationAsync");
                requestMessage.Content = new StringContent(serializedUser);
                requestMessage.Content.Headers.ContentType
                    = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");

                var response = await _httpClient.SendAsync(requestMessage);

                var responseStatusCode = response.StatusCode;
                var responseBody       = await response.Content.ReadAsStringAsync();

                var returnedUser = JsonConvert.DeserializeObject <PaymentVerification>(responseBody);

                return(returnedUser);
            }
            catch (Exception ex)
            {
                return(new PaymentVerification()
                {
                    Response = new Response(-1, ex.Message)
                });
            }
        }
        public async Task <PaymentVerification> PaymentVerificationAsync(PaymentVerification model)
        {
            try
            {
                await Task.Delay(100);

                #region Rest Api Request

                var client  = new RestClient("https://api.zarinpal.com/pg/v4/payment/verify.json");
                var request = new RestRequest(Method.POST);
                request.AddHeader("Content-Type", "application/json");


                PaymentVerification pv = new PaymentVerification();
                pv.merchant_id = merchant_id;
                pv.authority   = model.authority;
                pv.amount      = Convert.ToInt32(model.amount * 10);


                var serializedData = JsonConvert.SerializeObject(pv);
                request.AddParameter("application/json", serializedData, ParameterType.RequestBody);
                var response        = client.Execute(request);
                var deserializeData = JsonConvert.DeserializeObject <PaymentVerification>(response.Content);
                if (deserializeData.data.code == 100)
                {
                    //_ctx ==> DatabaseContext

                    // اگر پایگاه داده وجود داشته باشد باید شماره محصول را از جدول مورد نظر پیدا کنی و
                    //کد رهگیری را در این  قسمت  قرار بدی
                    //   var order = await _ctx.Orders.Where(ord => ord.ID == model.orderid).FirstOrDefaultAsync();
                    //order.CodePeygiri = deserializeData.data.ref_id.ToString();
                    //_ctx.Orders.Update(order);
                    //_ctx.SaveChanges() > 0

                    return(new PaymentVerification()
                    {
                        Response = new Response(1, "پرداخت با موفقیت انجام شد"),
                        data = deserializeData.data
                    });
                }
                #endregion


                return(new PaymentVerification()
                {
                    Response = new Response(-1, "عملیات با موفقیت انجام نشد، دوباره تلاش کنید")
                });
            }
            catch (Exception ex)
            {
                return(new PaymentVerification()
                {
                    Response = new Response(-1, ex.Message)
                });
            }
        }
        public async Task <IActionResult> Create([Bind("Id,Ssn,RefName,NumberOfMatches,NumberOfAsHD,NumberOfAsLD,FeeHD,FeeLD,Fee,TravelKost,LateMatchStart,Alowance,TotalPayment,TournamentId,BankAccountNumber")] PaymentVerification paymentVerification)
        {
            if (ModelState.IsValid)
            {
                _context.Add(paymentVerification);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["TournamentId"] = new SelectList(_context.Tournament, "Id", "Id", paymentVerification.TournamentId);
            return(View(paymentVerification));
        }