Пример #1
0
        public ActionResult RejectRequest(TransferNumber transferNumber)
        {
            bool rejectSuccess = transferDAO.UpdateRequest(transferNumber.TransferId, 3);

            if (!rejectSuccess)
            {
                return(StatusCode(500, "Unable to reject request / server issue."));
            }
            else
            {
                return(Ok("Request rejected."));
            }
        }
Пример #2
0
        public ActionResult ApproveRequest(TransferNumber transferNumber)
        {
            //gets user id for current user
            int userId = userDAO.GetUser(User.Identity.Name).UserId;
            //gets account from current user's id
            Account userAccount = accountDAO.GetAccountFromUserId(userId);
            //gets balance for current user's account
            decimal accountBalance = userAccount.Balance;
            //creates transfer object for base data of transfer i.e. just ids for types, accounts, no names
            RawTransferData transfer = transferDAO.GetTransferFromId(transferNumber.TransferId);
            //gets amount of transfer from transfer object
            decimal transferAmount = transfer.Amount;
            //gets account for recipient from account number
            Account recipientAccount = accountDAO.GetAccountFromAccountNumber(transfer.AccountTo);

            //checks to prevent user from approving request they made
            if (transfer.AccountTo == userAccount.AccountId)
            {
                return(BadRequest("You cannot approve a request to your own account."));
            }
            //checks to make sure person approving has enough money in account to send
            if (accountBalance >= transferAmount)
            {
                bool reduceSuccess = transferDAO.ReduceBalance(transferAmount, userId);
                if (!reduceSuccess)
                {
                    return(StatusCode(500, "Unable to withdraw funds / server issue."));
                }
                bool increaseSuccess = transferDAO.IncreaseBalance(transferAmount, recipientAccount.UserId);
                if (!increaseSuccess)
                {
                    return(StatusCode(500, "Unable to add funds / server issue."));
                }
                //updates transfer status from "pending" to "approved"
                bool createTransferSuccess = transferDAO.UpdateRequest(transferNumber.TransferId, 2);
                if (!createTransferSuccess)
                {
                    return(StatusCode(500, "Unable to record transaction / server issue."));
                }
                //if successful, returns status 200 to client w/ message
                return(Ok("Request Approved, transfer successful."));
            }
            else
            {
                return(BadRequest("Insufficient funds."));
            }
        }
Пример #3
0
 public string ApproveOrReject(int userInput, TransferNumber transferNumber, string token)
 {
     if (userInput == 1)
     {
         RestRequest request = new RestRequest(TRANSFER_URL + "/approve");
         request.AddJsonBody(transferNumber);
         //adding an object the server can read, it connects to all the properties in the sql statement
         client.Authenticator = new JwtAuthenticator(token);
         IRestResponse response = client.Put(request);
         string        message  = ProcessErrorResponse(response);
         return(message);
     }
     else
     {
         RestRequest request = new RestRequest(TRANSFER_URL + "/reject");
         request.AddJsonBody(transferNumber);
         client.Authenticator = new JwtAuthenticator(token);
         IRestResponse response = client.Put(request);
         string        message  = ProcessErrorResponse(response);
         return(message);
     }
 }
Пример #4
0
        private static void MenuSelection()
        {
            int    menuSelection = -1;
            string token         = UserService.GetToken();

            while (menuSelection != 0)
            {
                Console.Clear();
                Console.WriteLine("");
                Console.WriteLine("Welcome to TEnmo! Please make a selection: ");
                Console.WriteLine("1: View your current balance");
                Console.WriteLine("2: View your past transfers");
                Console.WriteLine("3: View your pending requests");
                Console.WriteLine("4: Send TE bucks");
                Console.WriteLine("5: Request TE bucks");
                Console.WriteLine("6: Log in as different user");
                Console.WriteLine("0: Exit");
                Console.WriteLine("---------");
                Console.Write("Please choose an option: ");

                if (!int.TryParse(Console.ReadLine(), out menuSelection))
                {
                    Console.WriteLine("Invalid input. Please enter only a number.");
                }
                else if (menuSelection == 1)
                {
                    Console.Clear();
                    //prints the results of the get balance function
                    consoleService.printBalance(accountService.GetBalance(token));
                    Console.ReadLine();
                }
                else if (menuSelection == 2)
                {
                    Console.Clear();
                    //generates list of transfers for logged in user
                    List <Transfer> transferList = transferService.GetTransfersForUser(token);
                    //prints transfer list to console
                    consoleService.printTransfersFromList(transferList);
                    //prints to console, asks user for transfer to view details, deals w/ bad input
                    int transferId = consoleService.PromptForTransferDetails(transferList);
                    //if they choose zero, bounces out to main menu
                    if (transferId != 0)
                    {
                        Console.Clear();
                        //once they enter valid transfer number, prints details for transfer from the transfer list
                        consoleService.PrintTransferDetails(transferList, transferId);
                        Console.ReadLine();
                    }
                }
                else if (menuSelection == 3)
                {
                    Console.Clear();
                    //generates list of pending transfers for users
                    List <Transfer> transferList = transferService.GetPendingTransfersForUser(token);
                    //prints list of pending transfers
                    consoleService.printPendingRequestsFromList(transferList);
                    //prompts user for ID of request to approve/reject, deals with bad input
                    int transferId = consoleService.PromptForIdToApproveReject(transferList);
                    //storing the result from  promptforid in object to serialize for back end
                    TransferNumber transferNumber = new TransferNumber()
                    {
                        TransferId = transferId
                    };
                    if (transferId != 0)
                    {
                        int userInput = consoleService.PromptToApproveOrReject();
                        if (userInput != 0)
                        {
                            string message = transferService.ApproveOrReject(userInput, transferNumber, token);
                            consoleService.PromptPrintMessage(message);
                            Console.ReadLine();
                        }
                    }
                }
                else if (menuSelection == 4)
                {
                    Console.Clear();
                    List <User> userList = transferService.GetUsers(token);
                    consoleService.printUserList(userList);
                    int transferUserId = consoleService.PromptForTransferID("transfer", userList);
                    if (transferUserId != 0)
                    {
                        decimal transferAmount = consoleService.PromptForTransferAmount("transfer");
                        if (transferAmount != 0)
                        {
                            API_Transfer transfer        = transferService.CreateTransfer(transferUserId, transferAmount, UserService.GetUserId());
                            string       responseMessage = transferService.Transfer(transfer, token);
                            consoleService.PromptPrintMessage(responseMessage);
                            Console.ReadLine();
                        }
                    }
                    Console.ReadLine();
                }
                else if (menuSelection == 5)
                {
                    Console.Clear();
                    List <User> userList = transferService.GetUsers(token);
                    consoleService.printUserList(userList);
                    int transferUserId = consoleService.PromptForTransferID("request", userList);
                    if (transferUserId != 0)
                    {
                        decimal transferAmount = consoleService.PromptForTransferAmount("request");
                        if (transferAmount != 0)
                        {
                            API_Transfer transfer        = transferService.CreateTransfer(UserService.GetUserId(), transferAmount, transferUserId);
                            string       responseMessage = transferService.CreateRequest(transfer, token);
                            consoleService.PromptPrintMessage(responseMessage);
                        }
                    }
                    Console.ReadLine();
                }
                else if (menuSelection == 6)
                {
                    Console.WriteLine("");
                    UserService.SetLogin(new API_User()); //wipe out previous login info
                    Run();                                //return to entry point
                }
                else
                {
                    Console.WriteLine("Goodbye!");
                    Environment.Exit(0);
                }
            }
        }