-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathShowPersons.cpp
More file actions
71 lines (61 loc) · 2.83 KB
/
ShowPersons.cpp
File metadata and controls
71 lines (61 loc) · 2.83 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
#include "ShowPersons.hpp"
#include <iostream>
ShowPersons::ShowPersons()
{
}
ShowPersons::ShowPersons(std::shared_ptr<ValidationData> validation)
: validation_(validation)
{
}
ShowPersons::ShowPersons(std::vector<std::shared_ptr<Person>>& person)
: persons_(person)
{
}
void ShowPersons::operator()(std::vector<std::shared_ptr<Person>>& person) {
person.size();
std::cout << "SHOW PERSON HERE\n";
if (person.size() > 0) {
generateAllRecord(person);
} else {
std::cout << "DATABASE IS EMPTY\n\n";
}
}
std::string ShowPersons::generateSingleRecord(const std::string& singleRecord, int cellSize) {
std::string output { };
output.append(cellSize / 2 - singleRecord.size() / 2, ' ');
output += singleRecord;
output.append(cellSize / 2 - (singleRecord.size() / 2) + (cellSize % 2) - (singleRecord.size() % 2), ' ');
return output;
}
std::string ShowPersons::generateSingleRecordLine(Person* singlePerson, size_t personIndex) {
std::string output { };
output = "| " + generateSingleRecord(std::to_string(static_cast<int>(personIndex)), static_cast<int>(std::to_string(personIndex).size())) + " | ";
output += generateSingleRecord(singlePerson->getName(), validation_->getNameSize()) + " | ";
output += generateSingleRecord(singlePerson->getSurname(), validation_->getSurnameSize()) + " | ";
output += generateSingleRecord(singlePerson->getAddress(), validation_->getAddressSize()) + " | ";
output += generateSingleRecord(singlePerson->getPeselNumber(), validation_->getPeselNumberSize()) + " | ";
output += generateSingleRecord(singlePerson->getGender(), validation_->getGenderSize()) + " | ";
output += generateSingleRecord(singlePerson->getIndexNumber(), validation_->getIndexNumberSize()) + " | ";
output += generateSingleRecord(singlePerson->getSalary(), validation_->getSalarySize()) + " |\n";
return output;
}
void ShowPersons::printSeparateLine(int tableSize) {
int bordersAndSeparatorsSize { 23 };
int lineSize = validation_->getNameSize() + validation_->getSurnameSize() +
validation_->getAddressSize() + validation_->getPeselNumberSize() +
validation_->getGenderSize() + validation_->getIndexNumberSize() + validation_->getSalarySize() + bordersAndSeparatorsSize + tableSize;
std::string line { };
line.append(lineSize, '-');
std::cout << line << '\n';
}
void ShowPersons::generateAllRecord(std::vector<std::shared_ptr<Person>>& person) {
printSeparateLine(static_cast<int>(person.size()));
std::string singleStringLine { };
auto personIndex { 0 };
for (const auto & ele : person) {
singleStringLine = generateSingleRecordLine(ele.get(), ++personIndex);
std::cout << singleStringLine;
printSeparateLine(static_cast<int>(person.size()));
}
std::cout << '\n';
}