public IHttpActionResult AcceptPayments(string id)
 {
     DataAccess.Merchant  merchant;
     Models.AcceptPayment acceptPayment = new Models.AcceptPayment();
     // Retrieve User and Merchant account id's from database
     using (DataAccess.CodeDuoTestEntities entities = new DataAccess.CodeDuoTestEntities())
     {
         int idint = int.Parse(id);
         merchant = entities.Merchants.FirstOrDefault(m => m.Id == idint);
     }
     if (merchant == null)
     {
         acceptPayment.CanAccept = "false";
     }
     acceptPayment.CanAccept = "true";
     return(Ok(acceptPayment));
 }
        public IHttpActionResult GetAccountBalance(string id, string currency)
        {
            DataAccess.User user;

            // Retrieve User and Merchant account id's from database
            using (DataAccess.CodeDuoTestEntities entities = new DataAccess.CodeDuoTestEntities())
            {
                int idint = int.Parse(id);

                user = entities.Users.FirstOrDefault(e => e.Id == idint);
            }
            double rate = 1;

            Models.AccountBalance accountBalance = new Models.AccountBalance();
            switch (currency)
            {
            case "EUR":
                accountBalance = DataAccess.bocApi.GetAccountBalance(user.AccountId, "5710bba5d42604e4072d1e92");
                break;

            case "BTC":
                accountBalance          = DataAccess.bocApi.GetAccountBalance(user.AccountId, "5710bba5d42604e4072d1e92");
                accountBalance.currency = "BTC";
                rate = DataAccess.bitCoinAPI.GetBitCoinRate();
                accountBalance.balance = accountBalance.balance / rate;
                break;

            default:
                break;
            }


            if (accountBalance == null)
            {
                return(NotFound());
            }
            return(Ok(accountBalance));
        }
        public IHttpActionResult GetTransactions(int id)
        {
            // double amount = 12;
            //string reference = "testrransfer";
            List <DataAccess.GetTransactionListByUserId_Result> transactions;
            int userId = id;

            // Retrieve User and Merchant account id's from database
            using (DataAccess.CodeDuoTestEntities entities = new DataAccess.CodeDuoTestEntities())
            {
                transactions = entities.GetTransactionListByUserId(userId).ToList();
            }


            // var accountBalance = DataAccess.bocApi.GetAccountBalance(id, "5710bba5d42604e4072d1e92");
            if (transactions == null)
            {
                return(NotFound());
            }



            return(Ok(transactions));
        }
        public IHttpActionResult GetTransfer(string id, string merchantid, double amount, string reference, string currency)
        {
            // double amount = 12;
            //string reference = "testrransfer";
            DataAccess.User     user;
            DataAccess.Merchant merchant;
            // Retrieve User and Merchant account id's from database
            using (DataAccess.CodeDuoTestEntities entities = new DataAccess.CodeDuoTestEntities())
            {
                int idint   = int.Parse(id);
                int merchid = int.Parse(merchantid);
                user     = entities.Users.FirstOrDefault(e => e.Id == idint);
                merchant = entities.Merchants.FirstOrDefault(m => m.Id == merchid);
            }

            string fromaccountid = user.AccountId;   //"e863600a86656f979d646e83";

            string toaccountid = merchant.AccountId; //"e863600a86656f979d646e83";
            var    transfer    = new Models.Transfer();

            switch (currency)
            {
            case "EUR":
                transfer = DataAccess.bocApi.Transfer(fromaccountid, toaccountid, amount, reference);
                break;

            case "BTC":
                transfer = DataAccess.bitCoinAPI.MakeCryptoTransfer(fromaccountid, toaccountid, amount, reference);
                break;

            default:
                break;
            }

            // var accountBalance = DataAccess.bocApi.GetAccountBalance(id, "5710bba5d42604e4072d1e92");
            if (transfer == null)
            {
                return(NotFound());
            }

            //Store Transaction details in SQL database
            // insert
            using (DataAccess.CodeDuoTestEntities entities = new DataAccess.CodeDuoTestEntities())
            {
                DataAccess.Transaction newTransaction = new DataAccess.Transaction();
                newTransaction.Amount            = (decimal)amount;
                newTransaction.CreatedDate       = DateTime.Now;
                newTransaction.Currency          = currency;
                newTransaction.FromAccountId     = user.IBAN;
                newTransaction.MerchantId        = merchant.Id;
                newTransaction.MerchantReference = reference;
                newTransaction.Status            = transfer.status;
                newTransaction.ToAccountId       = merchant.IBAN;
                newTransaction.UserId            = user.Id;
                if (currency == "BTC")
                {
                    newTransaction.FromAccountId = "";
                    newTransaction.ToAccountId   = "";
                }
                var customers = entities.Transactions.Add(newTransaction);

                entities.SaveChanges();
            }
            if (transfer.status == "COMPLETED")
            {
                transfer.status = "SUCCESS";
            }
            else
            {
                transfer.status = "FAILED";
            }


            return(Ok(transfer));
        }