-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUserManager.cpp
More file actions
145 lines (122 loc) · 4.46 KB
/
UserManager.cpp
File metadata and controls
145 lines (122 loc) · 4.46 KB
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#include "UserManager.h"
#include "SupportMethods.h"
using namespace std;
void UserManager :: userRegistration() {
User user = provideNewUserData();
users.push_back(user);
fileWithUsers.addUserToFile(user);
cout << endl << "Account created" << endl << endl;
system("pause");
}
User UserManager :: provideNewUserData() {
User user;
user.setupUserId(getNewUserId());
string login = "", userName = "", userSurname = "";
do {
cout << "Provide login: ";
user.setupLogin(SupportMethods :: loadLine());
} while (isLoginExist(user.getLogin()) == true);
cout << "Provide password: ";
user.setupPassword(SupportMethods :: loadLine());
cout << "Provide name: ";
userName = SupportMethods :: loadLine();
user.setupUserName(SupportMethods :: changeFirstLetterToCapitalAndOtherToLowercase(userName));
cout << "Provide surname: ";
userSurname = SupportMethods :: loadLine();;
user.setupUserSurname(SupportMethods :: changeFirstLetterToCapitalAndOtherToLowercase(userSurname));
return user;
}
int UserManager :: getNewUserId() {
if (users.empty() == true)
return 1;
else
return users.back().getUserId() + 1;
}
bool UserManager :: isLoginExist(string login) {
for (unsigned int i = 0; i < users.size(); i++) {
if (users[i].getLogin() == login) {
cout << endl << "User with such login already exists." << endl;
return true;
}
}
return false;
}
void UserManager :: showAllUsers() {
for (unsigned int i = 0; i < users.size(); i++) {
cout << "User ID: " << users[i].getUserId() << endl;
cout << "Login: " << users[i].getLogin() << endl;
cout << "Password: " << users[i].getPassword() << endl;
cout << "User name: " << users[i].getUserName() << endl;
cout << "User surname: " << users[i].getUserSurname() << endl << endl;
}
}
bool UserManager :: ifUserIsLogged() {
if (idLoggedUser > 0)
return true;
else
return false;
}
int UserManager :: getIdLoggedUser() {
return idLoggedUser;
}
int UserManager :: userLogIn() {
string providedLogin = "", providedPassword = "";
cout << endl << "Provide login: ";
providedLogin = SupportMethods :: loadLine();
for (unsigned int i = 0; i < users.size(); i++) {
if (users[i].getLogin() == providedLogin) {
for (int numberOfTrial = 3; numberOfTrial > 0; numberOfTrial--) {
cout << "Provide password. You have " << numberOfTrial << " left: ";
providedPassword = SupportMethods :: loadLine();
if (users[i].getPassword() == providedPassword) {
cout << endl << "You logged successfully" << endl << endl;
system("pause");
idLoggedUser = users[i].getUserId();
return idLoggedUser;
}
}
cout << "You have provided 3 times incorrect password" << endl;
system("pause");
return 0;
}
}
cout << "There is no user with this login" << endl << endl;
system("pause");
return 0;
}
void UserManager :: logOffUser() {
idLoggedUser = 0;
}
char UserManager :: chooseOptionFromUserMenu() {
char choose;
system("cls");
cout << " >>> USER MENU <<<" << endl;
cout << "---------------------------" << endl;
cout << "1. Add income" << endl;
cout << "2. Add expense" << endl;
cout << "3. Display balance for current month" << endl;
cout << "4. Display balance for previous month" << endl;
cout << "5. Display balance for selected period" << endl;
cout << "---------------------------" << endl;
cout << "6. Change password" << endl;
cout << "7. Log off" << endl;
cout << "---------------------------" << endl;
cout << "Your choice: ";
choose = SupportMethods :: getCharacter();
return choose;
}
void UserManager :: changePasswordLoggedUser() {
string newPassword = "";
cout << "Enter new password: " ;
newPassword = SupportMethods::loadLine();
bool isPasswordChanged = false;
for(vector <User>::iterator itr = users.begin(); itr != users.end(); itr++) {
if(itr -> getUserId() == idLoggedUser) {
itr -> setupPassword(newPassword);
isPasswordChanged = fileWithUsers.changePasswordLoggedUser(itr);
if(isPasswordChanged)
cout << "Your password has been changed. " << endl;
system("pause");
}
}
}