-
Notifications
You must be signed in to change notification settings - Fork 0
/
clsAtmTransferScreen.h
99 lines (76 loc) · 2.75 KB
/
clsAtmTransferScreen.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#pragma once
#include "clsScreen.h"
#include "clsBankClient.h"
#include "clsInputValidate.h"
#include <iomanip>
class clsAtmTransferScreen : protected clsScreen
{
private:
static void _PrintClient(clsBankClient Client)
{
cout << "\n\t~~~ Client Card ~~~ ";
cout << "\n======================================\n";
cout << "\nFirst Name : " << Client.FirstName;
cout << "\nLast Name : " << Client.LastName;
cout << "\nFull Name : " << Client.FullName();
cout << "\nEmail : " << Client.Email;
cout << "\nPhone : " << Client.Phone;
cout << "\nAccount Number : " << Client.GetAccountNumber();
cout << "\nPinCode : " << Client.PinCode;
cout << "\nAccount Balance: " << Client.AccountBalance;
cout << "\n\n======================================\n";
}
static clsBankClient _ReadDestinationAccountNumber()
{
string AccountNumber = "";
cout << "\nPlease Enter Account Number to Transfer To : ";
AccountNumber = clsInputValidate::ReadString();
while (AccountNumber == CurrentClient.GetAccountNumber())
{
cout << "\nYou cannot Transfer to your own Account, choose another one to Transfer To : ";
AccountNumber = clsInputValidate::ReadString();
}
clsBankClient Client = clsBankClient::Find(AccountNumber);
return Client;
}
static float _ReadTransferAmount()
{
double Amount;
cout << "\nEnter Transfer Amount : ";
Amount = clsInputValidate::ReadFloatNumber();
while (Amount > CurrentClient.AccountBalance)
{
cout << "\n\nAmount Exceeds the available Balance , Enter another Amount : ";
Amount = clsInputValidate::ReadFloatNumber();
}
return Amount;
}
public :
static void ShowAtmTransferScreen()
{
_DrawScreenHeader("\t Transfer Screen ", "", enSystemChoice::eAtmSystem);
clsBankClient ClientDestination = _ReadDestinationAccountNumber();
_PrintClient(ClientDestination);
float Amount = _ReadTransferAmount();
char Answer = 'Y';
cout << "\n\nAre you sure you want to perform this operation ? Y/N ? ";
cin >> Answer;
if (toupper(Answer) == 'Y')
{
if (CurrentClient.Transfer(ClientDestination, Amount))
{
cout << "\nTransfer Done successfully ! \n";
_PrintClient(CurrentClient);
_PrintClient(ClientDestination);
}
else
{
cout << "\n\nTransfer Failed :-(\n";
}
}
else
{
cout << "\nOperation was cancelled ! \n";
}
}
};