-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathassignmentHandler.cpp
More file actions
145 lines (133 loc) · 4.35 KB
/
assignmentHandler.cpp
File metadata and controls
145 lines (133 loc) · 4.35 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 <string>
#include "AssignmentHandler.h"
#include "Date.h"
#include "Assignment.h"
#include "List.h"
#include "List_Const_Iterator.h"
#include "List_Iterator.h"
//will be adding more error detection/correction to the code - CN
//adds an assignment to the appropriate list
void AssignmentHandler::Add_Assignment(const string& dataline)
{
Assignment temp(dataline);
if (temp.getStringStatus() == "Assigned")
Add_To_Assignments(temp);
else
Add_To_Completes(temp);
}
//prints the assignments from both lists to the designated ostream
void AssignmentHandler::DisplayAssignments(ostream& cout)
{
cout << endl << "Assigned Assignments:" << endl;
List<Assignment>::iterator itr = Assigned_Assignments.begin();
while (itr != Assigned_Assignments.end())
{
cout << itr->GetdueDate() << "," << itr->getDescription() << "," << itr->GetAssignDate() << "," << itr->getStringStatus() << endl;
++itr;
}
cout << endl << "Completed Assignments:" << endl;
itr = Completed_Assignments.begin();
while (itr != Completed_Assignments.end())
{
cout << itr->GetdueDate() << "," << itr->getDescription() << "," << itr->GetAssignDate() << "," << itr->getStringStatus() << endl;
++itr;
}
}
void AssignmentHandler::SaveToFile(ostream& cout)
{
List<Assignment>::iterator itr = Assigned_Assignments.begin();
while (itr != Assigned_Assignments.end())
{
cout << itr->GetdueDate() << "," << itr->getDescription() << "," << itr->GetAssignDate() << "," << itr->getStringStatus() << endl;
++itr;
}
itr = Completed_Assignments.begin();
while (itr != Completed_Assignments.end())
{
cout << itr->GetdueDate() << "," << itr->getDescription() << "," << itr->GetAssignDate() << "," << itr->getStringStatus() << endl;
++itr;
}
}
//counts the number of late assignments
int AssignmentHandler::CountLate()
{
int count = 0;
List<Assignment>::iterator itr = Completed_Assignments.begin();
while (itr != Completed_Assignments.end())
{
if (itr->getStatus() == AssignStatus::Late)
++count;
++itr;//forgot to incriment the iterator, my bad
}
return count;
}
//finds an assignment, marks it complete or late, adds it to the completed list and removes it from the assigned list
void AssignmentHandler::CompleteAssignment(string uniqueDate, string completeDate)
{
List<Assignment>::iterator litr = findAssignment(uniqueDate);
litr->completeAssignment(Date(completeDate));
Assignment temp(*litr);
List<Assignment>::iterator citr = Completed_Assignments.begin();
while (citr != Completed_Assignments.end() && *citr < temp)
{
++citr;
}
Completed_Assignments.insert(citr, temp);
Assigned_Assignments.remove(temp);
}
//finds an assignment and edits its description
void AssignmentHandler::EditAssignmentDescrip(string uniqueDate, string newDescrip)
{
List<Assignment>::iterator itr = findAssignment(uniqueDate);
itr->changeDescription(newDescrip);
}
//finds an asignment and edits its due date
void AssignmentHandler::EditAssignmentDue(string uniqueDate, string newDue)
{
List<Assignment>::iterator itr = findAssignment(uniqueDate);
itr->changeDueDate(newDue);
}
//puts an assignment into the assigned list IN ORDERED FASHION
void AssignmentHandler::Add_To_Assignments(Assignment assignment)
{
List<Assignment>::iterator itr = Assigned_Assignments.begin();
while (itr != Assigned_Assignments.end() && *itr < assignment)
{
++itr;
}
Assigned_Assignments.insert(itr, assignment);
}
//puts an assignment into the completed list IN ORDERED FASHION
void AssignmentHandler::Add_To_Completes(Assignment assignment)
{
List<Assignment>::iterator itr = Completed_Assignments.begin();
while (itr != Completed_Assignments.end() && *itr < assignment)
{
++itr;
}
Completed_Assignments.insert(itr, assignment);
}
//finds an assignment since the find function of list wont find an assignment based on a string
List<Assignment>::iterator AssignmentHandler::findAssignment(string uniqueDate)
{
List<Assignment>::iterator itr = Assigned_Assignments.begin();
while (itr != Assigned_Assignments.end())
{
if (itr->GetAssignDate() == uniqueDate)
return itr;
++itr;
}
itr = Completed_Assignments.begin();
while (itr != Completed_Assignments.end())
{
if (itr->GetAssignDate() == uniqueDate)
return itr;
++itr;
}
}
AssignmentHandler& AssignmentHandler::operator =(const AssignmentHandler& other)
{
Assigned_Assignments = other.Assigned_Assignments;
Completed_Assignments = other.Completed_Assignments;
return *this;
}