#!/usr/bin/env sh ## **Config file should have the following: ## #Config ## ## Starting balance ## bal="00.00" ## ## ## Postgres ## ### Database user ## dbuser="ddbank" ## ### Database Port ## dbport="5432" ## ### Datavase host ## dbhost="knd-db01.kniod.corp" ## ### Database name ## datab="ddbank" ## db_conn="psql -h $dbhost -p $dbport -U $dbuser -d $datab -c" source $HOME/git/knd-ddbank/ddbank_config # Functions new_account() { clear read -p "Enter the name of your account: " user1 echo "" echo "-----------------------------------" echo "Your account name will be $user1." echo "-----------------------------------" echo "" read -n1 -p "Is that correct? [y/N] " yn case $yn in # If user selects yes. Insert their username and a timestamp into the database. [Yy] ) echo "" $db_conn "insert into account (username,timestamp) values ('$user1','now');" # Sets the user's id as the variable. user1_id=$($db_conn "select id from account where username='$user1';" | awk 'FNR == 3 {print}') # Gives the user the starting balance. $db_conn "insert into balance (id,balance) values ('$user1_id',$bal);" echo "" echo "-----------------------------------" echo "Account name: $user1" echo "Account ID: $user1_id" echo "-----------------------------------" echo "" # Transactioning $db_conn "insert into transaction (id,username,amount,timestamp) values ('$user1_id','$user1','+$bal','now');" ;; # If the user selects anything other than [Yy] * ) echo "Aborted" ;; esac } list_user() { echo "" $db_conn "select * from account;" echo "" } list_balance() { # Bal Menu clear while true do echo "" echo "1) List all users balances." echo "2) Exact User Search" echo "3) User Search" echo "" echo "q) Go back." echo "" read -n1 -p "*Balance Menu: Select from the above: " ii echo "" case $ii in 1 ) clear $db_conn "select id,username,balance from account join balance using (id);" ;; 2 ) read -p "Enter the user account name: " ex_mat $db_conn "select id,username,balance from account join balance using (id) where username='$ex_mat';" ;; 3 ) read -p "Enter search term: " bal_user bal_user1=$($db_conn "select id,username,balance from account join balance using (id);") echo "$bal_user1" | awk 'FNR == 1 {print}' echo "$bal_user1" | grep -iE "$bal_user" echo "" ;; [0q] ) break ;; esac done } bank_menu() { clear while true do echo "" echo "1) Withdraw" echo "2) Deposit" echo "3) Transfer" echo "4) Quick balance check" echo "" echo "q) Go Back" echo "" read -n1 -p "*Banking Menu: Select from the above: " ii_bank echo "" case $ii_bank in [0q] ) break ;; 1 ) read -p "Withdraw from user: " with_user read -p "Amount to withdraw: " with_amt LAST_USER=$with_user ## Not sure why this was here... #echo "$with_user" | awk 'FNR == 1 {print}' # Grabs the current amount the user has stored in the database. with_1_amt=$($db_conn "select id,username,balance from account join balance using (id) where username='$with_user';"| awk 'FNR == 3' | awk -F\| '{print $3}') # This grabs the user's ID to use on the balance table. with_user_id=$($db_conn "select id,username,balance from account join balance using (id) where username='$with_user';" | awk 'FNR == 3' | awk -F\| '{print $1}') # Does the math to minus the withdraw. with_new_amt=$($db_conn "select balance - '$with_amt' from balance where id = '$with_user_id';" | awk 'FNR ==3') # Updates the database with the new amount. $db_conn "update balance set balance = '$with_new_amt' where id = '$with_user_id';" # Transactioning $db_conn "insert into transaction (id,username,amount,timestamp) values ('$with_user_id','$with_user','-$with_amt','now');" ;; 2 ) read -p "Deposit to user: " depo_user read -p "Amount to deposit: " depo_amt LAST_USER=$depo_user depo_1_amt=$($db_conn "select id,username,balance from account join balance using (id) where username='$depo_user';"| awk 'FNR == 3' | awk -F\| '{print $3}') # This grabs the user's ID to use on the balance table. depo_user_id=$($db_conn "select id,username,balance from account join balance using (id) where username='$depo_user';" | awk 'FNR == 3' | awk -F\| '{print $1}') # Does the math to add the withdraw. depo_new_amt=$($db_conn "select balance + '$depo_amt' from balance where id = '$depo_user_id';" | awk 'FNR ==3') # Updates the database with the new amount. $db_conn "update balance set balance = '$depo_new_amt' where id = '$depo_user_id';" # Transactioning $db_conn "insert into transaction (id,username,amount,timestamp) values ('$depo_user_id','$depo_user','+$depo_amt','now');" ;; 3 ) read -p "Transfer from user: " tran_user1 read -p "Transer to user: " tran_user2 read -p "Amount to transfer: " tran_amt # Grabs user IDs. tran_user1_id=$($db_conn "select id,username,balance from account join balance using (id) where username='$tran_user1';" | awk 'FNR == 3' | awk -F\| '{print $1}') tran_user2_id=$($db_conn "select id,username,balance from account join balance using (id) where username='$tran_user2';" | awk 'FNR == 3' | awk -F\| '{print $1}') # Does the math to complete the transfer. tran1_new_amt=$($db_conn "select balance - '$tran_amt' from balance where id = '$tran_user1_id';" | awk 'FNR ==3') tran2_new_amt=$($db_conn "select balance + '$tran_amt' from balance where id = '$tran_user2_id';" | awk 'FNR ==3') # Updates the database with the new amounts. $db_conn "update balance set balance = '$tran1_new_amt' where id = '$tran_user1_id';" $db_conn "update balance set balance = '$tran2_new_amt' where id = '$tran_user2_id';" # Transactioning $db_conn "insert into transaction (id,username,amount,timestamp) values ('$tran_user1_id','$tran_user1','-$tran_amt','now');" $db_conn "insert into transaction (id,username,amount,timestamp) values ('$tran_user2_id','$tran_user2','+$tran_amt','now');" LAST_USER=$tran_user1 ;; 4 ) $db_conn "select id,username,balance from account join balance using (id) where username='$LAST_USER';" ;; * ) clear ;; esac done } tran_menu() { clear while true do echo "" echo "1) Show Transactions for user" echo "2) Show last # Transactions." echo "3) Show last 5 Transactions." echo "" echo "q) Go back." echo :: read -n1 -p "*Transaction Menu: Select from above: " ii_tmenu case $ii_tmenu in 1 ) echo "" read -p "Transactions for user: " tmenu_user read -p "Number of transactions: (0 for no limit) " tmenu_num1 if [ $tmenu_num1 = 0 ]; then { tmenu_num1=all } fi $db_conn "select id,username,amount,timestamp from transaction where username = '$tmenu_user' order by timestamp DESC limit $tmenu_num1;" ;; 2 ) echo "" read -p "Number of transactions: " tmenu_num2 if [ $tmenu_num2 = 0 ]; then { tmenu_num2=all } fi $db_conn "select id,username,amount,timestamp from transaction order by timestamp DESC limit $tmenu_num2;" ;; 3 ) echo "" $db_conn "select id,username,amount,timestamp from transaction order by timestamp DESC limit 5;" [0q] ) break ;; * ) clear ;; esac done } clear while true do # Main Menu echo "" echo "DDBank Main Menu: " echo "1) Create new user account." echo "2) List user accounts." echo "3) List user(s) balance." echo "4) Banking Menu (Deposit, withdraw, transfer)" echo "5) Transaction Menu" echo "" echo "9) Clear contents of screen" echo "0) Exit" echo "" read -p "Select from the menu above: " -n1 i case $i in 1 ) new_account ;; 2 ) list_user ;; 3 ) list_balance ;; 4 ) bank_menu ;; 5 ) tran_menu ;; 9 ) clear ;; 0 ) break ;; * ) clear ;; esac done #if [ $i == 1 ]; then { # new_account #} else { # echo "Some other thing..." #} fi