public ActionResult Create([Bind(Include = "RecipientId,CompanyName,Address,Account,CustomerServiceUrl")] RecipientVM recipient)
        {
            if (ModelState.IsValid)
            {
                IRecipient item = _recipientFactory.NewRecipient(recipient.RecipientId, recipient.CompanyName, recipient.Address, recipient.Account, recipient.CustomerServiceUrl, recipient.Active);
                _recipientService.CreateRecepient(item);
                log.Info("Utworzono odbiorcę " + recipient.CompanyName + " " + recipient.Address);
                TempData["ResultMessage"] = "Utworzono odbiorcę";
                return(RedirectToAction("Index"));
            }

            return(View(recipient));
        }
 public ActionResult Edit([Bind(Include = "RecipientId,CompanyName,Address,Account,CustomerServiceUrl,Active")] RecipientVM recipient)
 {
     if (ModelState.IsValid)
     {
         _recipientService.UpdateRecepient(
             _recipientFactory.NewRecipient(recipient.RecipientId, recipient.CompanyName, recipient.Address, recipient.Account, recipient.CustomerServiceUrl, recipient.Active)
             );
         log.Info("Edytowano odbiorcę " + recipient.CompanyName + " " + recipient.Address);
         TempData["ResultMessage"] = "Zmiany zapisane";
         return(RedirectToAction("Index"));
     }
     return(View(recipient));
 }
        // GET: Recipients/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            IRecipient  recipient = _recipientService.GetRecepient(CommonFunctions.NullableIntToInt(id));
            RecipientVM vm        = new RecipientVM(recipient);

            if (recipient == null)
            {
                return(HttpNotFound());
            }
            return(View(vm));
        }
        public async Task <IActionResult> Index([Bind("ID,Nuban,Description,AccountNumber,Amount,BankCode,Currency")] NewTransfer newTransfer)
        {
            if (ModelState.IsValid)
            {
                //validate account details
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", $"Bearer {Environment.GetEnvironmentVariable("secretKey")}");

                string request = string.Format($"https://api.paystack.co/bank/resolve?account_number={newTransfer.AccountNumber}&bank_code={newTransfer.BankCode}");

                try
                {
                    //get response
                    HttpResponseMessage resDataStream = await client.GetAsync(request);

                    //check if account details are valid
                    if (resDataStream.IsSuccessStatusCode)
                    {
                        string resData = await resDataStream.Content.ReadAsStringAsync();

                        AccountValidation res = JsonConvert.DeserializeObject <AccountValidation>(resData);
                        AccountName = res.data.account_name;
                    }
                    else
                    {
                        TempData["AccountError"] = "Wrong Account Details... Please Reconfirm Account Details";
                        return(RedirectToAction("Index"));
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Error Occurred: {ex.Message}");
                }

                //create recipient after validating account details
                try
                {
                    string content = $"{{\"type\":\"nuban\",\"name\":\"{AccountName}\",\"description\":\"{newTransfer.Description}\",\"account_number\":\"{Convert.ToString(newTransfer.AccountNumber)}\",\"bank_code\":\"{newTransfer.BankCode}\",\"currency\":\"{newTransfer.Currency}\"}}";
                    HttpResponseMessage recipientRes = await client.PostAsync("https://api.paystack.co/transferrecipient", new StringContent(content));

                    //check if request is successful
                    if (recipientRes.IsSuccessStatusCode)
                    {
                        try
                        {
                            string recipientData = await recipientRes.Content.ReadAsStringAsync();

                            RecipientVM res = JsonConvert.DeserializeObject <RecipientVM>(recipientData);
                            RecipientCode = res.data.recipient_code;
                            //client.Dispose();

                            //Transfer to Recipient
                            Amount = Convert.ToInt32(newTransfer.Amount);
                            //client.DefaultRequestHeaders.Accept.Clear();
                            //client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                            //client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", $"Bearer {Environment.GetEnvironmentVariable("secretKey")}");
                            string transferContent          = $"{{\"source\":\"balance\",\"reason\":\"{newTransfer.Description}\",\"amount\":{Amount * 100},\"recipient\":\"{RecipientCode}\"}}";
                            HttpResponseMessage transferRes = await client.PostAsync("https://api.paystack.co/transfer", new StringContent(transferContent));

                            if (transferRes.IsSuccessStatusCode)
                            {
                                string transCodeData = await transferRes.Content.ReadAsStringAsync();

                                NewTransferVM transCode = JsonConvert.DeserializeObject <NewTransferVM>(transCodeData);
                                TransferCode = transCode.data.transfer_code;
                                //provide placeholder values to View
                                TempData["otpRequired"] = "yes";
                                TempData["NameAcc"]     = AccountName;
                                TempData["Amount"]      = newTransfer.Amount;
                                TempData["Bank"]        = res.data.details.bank_name;
                                TempData["NumberAcc"]   = newTransfer.AccountNumber;
                                TempData["TransCode"]   = TransferCode;
                                client.Dispose();
                                return(View(newTransfer));
                            }
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine($"Error Occurred: {ex.Message}");
                        }
                    }
                    else
                    {
                        TempData["AccountError"] = "Error Occurred While Creating Recipient";
                        client.Dispose();
                        return(RedirectToAction("Index"));
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Error Occurred: {ex.Message}");
                }
            }
            return(RedirectToAction("Index"));
        }