-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPoliticalParty.cpp
More file actions
103 lines (91 loc) · 3.23 KB
/
PoliticalParty.cpp
File metadata and controls
103 lines (91 loc) · 3.23 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
#include "PoliticalParty.h"
#include <string>
PoliticalParty::PoliticalParty()
: partyID("0000"), partyName("Unknown"), rank(RANK_UNKNOWN),
membersLimit(0), candidatesLimit(0), partyPresidentCNIC("N/A") {
}
PoliticalParty::PoliticalParty(const string& id, const string& name, PartyRank r, const string& presidentCnic)
: partyID(id), partyName(name), rank(r), partyPresidentCNIC(presidentCnic) {
setLimitsByRank();
}
void PoliticalParty::setLimitsByRank() {
switch (rank) {
case TIER1:
membersLimit = 20;
candidatesLimit = 10;
break;
case TIER2:
membersLimit = 25;
candidatesLimit = 15;
break;
case TIER3:
membersLimit = 30;
candidatesLimit = 20;
break;
default:
membersLimit = 0;
candidatesLimit = 0;
break;
}
}
void PoliticalParty::setPartyID(const string& id) { partyID = id; }
void PoliticalParty::setPartyName(const string& name) { partyName = name; }
void PoliticalParty::setPartyRank(PartyRank r) {
rank = r;
setLimitsByRank();
}
void PoliticalParty::setPartyPresidentCNIC(const string& cnic) { partyPresidentCNIC = cnic; }
string PoliticalParty::getPartyID() const { return partyID; }
string PoliticalParty::getPartyName() const { return partyName; }
PartyRank PoliticalParty::getPartyRank() const { return rank; }
string PoliticalParty::getPartyRankString() const {
return PoliticalParty::partyRankToString(rank);
}
int PoliticalParty::getMembersLimit() const { return membersLimit; }
int PoliticalParty::getCandidatesLimit() const { return candidatesLimit; }
string PoliticalParty::getPartyPresidentCNIC() const { return partyPresidentCNIC; }
string PoliticalParty::toString(char delimiter) const {
string rankStr = "3";
if (rank == TIER1) rankStr = "0";
else if (rank == TIER2) rankStr = "1";
else if (rank == TIER3) rankStr = "2";
return partyID + delimiter +
partyName + delimiter +
rankStr + delimiter +
partyPresidentCNIC;
}
bool PoliticalParty::fromString(const string& partyDataString, char delimiter) {
string fields[4];
int count = 0;
size_t start = 0;
size_t end = partyDataString.find(delimiter);
while (end != string::npos && count < 3) {
fields[count++] = partyDataString.substr(start, end - start);
start = end + 1;
end = partyDataString.find(delimiter, start);
}
if (count < 4 && start <= partyDataString.length()) {
fields[count++] = partyDataString.substr(start);
}
if (count == 4) {
partyID = fields[0];
partyName = fields[1];
rank = stringToPartyRank(fields[2]);
partyPresidentCNIC = fields[3];
setLimitsByRank();
return true;
}
return false;
}
PartyRank PoliticalParty::stringToPartyRank(const string& rankStr) {
if (rankStr == "0") return TIER1;
if (rankStr == "1") return TIER2;
if (rankStr == "2") return TIER3;
return RANK_UNKNOWN;
}
string PoliticalParty::partyRankToString(PartyRank r) {
if (r == TIER1) return "Tier 1";
if (r == TIER2) return "Tier 2";
if (r == TIER3) return "Tier 3";
return "Unknown Rank";
}