Event-Scheduler / DS (1) / Ds demo project / event.cpp
event.cpp
Raw
#include "event.h"


event::event(void) {
	eventId = 0;
	place, name = " ";
	done = "no";
	
}

bool event::compare(Date date1, Date date2)
{
	if (date1.y < date2.y)
		return true;
	else if (date1.y == date2.y && date1.m < date2.m)
		return true;
	else if (date1.y == date2.y && date1.m == date2.m && date1.d < date2.d)
		return true;
	else
		return false;
}

void event::sortDate()
{
	sort(dateVector.begin(), dateVector.end(), compare);
}

void event::display()
{
	
	for (int i = 0; i <dateVector.size();i++)
	{
		
		cout << dateVector[i].d << " " << dateVector[i].m << " " << dateVector[i].y << endl;
			
	}
	
}



time_t t = time(NULL);
tm* timePtr = localtime(&t);


Date currentDate() {
	Date cd;
	
	cd.d = timePtr->tm_mday;

	cd.m = 0;
	if (timePtr->tm_mon == 12) {
		cd.m = 1;
	}
	cd.m = (timePtr->tm_mon) + 1;
	
	cd.y = timePtr->tm_year;
	cd.y += 1900;
	return cd;
}


string event::remainingTime(Date sd, Time st, Time rt)
{

	int remindingHours = 0;
	int remindingMinutes = 0;
	int remainingDays = 0;
	Date cd;

	cd = currentDate();

	
	/*const int monthDays[12]
		= { 31, 28, 31, 30, 31, 30,
		31, 31, 30, 31, 30, 31 };*/


	long int n1 = cd.y * 365 + cd.d;
	for (int i = 0; i < cd.m - 1; i++)
		n1 += monthDays[i];



	long int n2 = sd.y * 365 + sd.d;
	for (int i = 0; i < sd.m - 1; i++)
		n2 += monthDays[i];


	remainingDays = n2 - n1;
	if (remainingDays <= 0)
	{
		done = "yes";

	}

	remindingHours = st.h - rt.h;
	remindingMinutes = st.m - rt.m;

	cout << "The remaining time for the event is: \n" << remainingDays << " days, " << remindingHours << " hours" << " and " << remindingMinutes << " minutes \n";
	return done;

}

void event::addEvent(vector<event>v) {

	int day, month, year;
	fstream file;
	string fileName;

	eventId++;
	
	cout << "Enter the event's name: \n";
	cin>>name;
	
	cout << "Enter the event's place: \n";
	cin >> place;

	cout << "Enter the event's start date (day,month,year): \n";
	cin >> day >> month >> year;
	
	for (int i = 0; i < v.size(); i++)
	{
		while (v[i].sd.d == day && v[i].sd.m == month && v[i].sd.y == year)
		{
			cout << "Invalid date.\n";
			cout << "Enter the event's start date (day,month,year): \n";
			cin >> day >> month >> year;

		}
		
	}

	sd.d = day;
	sd.m = month;
	sd.y = year;
	dateVector.push_back(sd);
	sortDate();

	cout << "Enter the event's end date (day,month,year): \n";
	cin >> ed.d >> ed.m >> ed.y;


	cout << "Enter the event's start time (hours,minutes): \n";
	cin >> st.h >> st.m;

	cout << "Enter the time you want us to remind you with on this day (hours,minutes): \n";
	cin >> rt.h >> rt.m;

	fileName = name + ".txt";
	file.open(fileName, ios::out);
	if (file.is_open())
	{
		file << name << endl;
		file << place << endl;
		file << "Start date is: " << sd.d << " " << sd.m << " " << sd.y << endl;
		file << "End date is: " << ed.d << " " << " " << ed.m << " " << ed.y << endl;
		file << "Event's start time is: " << st.h << ":" << st.m << endl;
		file << "Your Event Id is: " << eventId << endl;
		file.close();
	}

	done = remainingTime(sd,st,rt);
	cout << "Your event ID is: " << eventId << endl<<endl;
	
}

void event::updateEvent(event e)
{
	
	fstream file;
	string fName = e.name + ".txt";
	string newfname;
	int choice;
	cout << "To change name press 1\n To change place press 2\n To change Start date press 3\n To change End date press 4\n To change start time press 5\n";
	cin >> choice;
	switch (choice)
	{
	case 1:
	{
		remove(fName.c_str());

		string newName;
		cin >> newName;
		e.name = newName;

		break;
	}
	case 2:
	{
		string newPlace;
		cin >> newPlace;
		e.place = newPlace;
		break;
	}
	case 3:
	{
		Date newSD;
		cin >> newSD.d >> newSD.m >> newSD.y;
		
		for (int i = 0; i < dateVector.size(); i++)
		{
			if (dateVector[i].d == e.sd.d && dateVector[i].m == e.sd.m && dateVector[i].y == e.sd.y)
			{
				dateVector[i].d = newSD.d;
				dateVector[i].m = newSD.m;
				dateVector[i].y = newSD.y;
			}
		}
		e.sd.d = newSD.d;
		e.sd.m = newSD.m;
		e.sd.y = newSD.y;

		break;

	}
	case 4:
	{
		Date newED;
		cin >> newED.d >> newED.m >> newED.y;
		e.ed.d = newED.d;
		e.ed.m = newED.m;
		e.ed.y = newED.y;
		break;
	}
	case 5:
	{
		Time newST;
		cin >> newST.h >> newST.m;
		e.st.h = newST.h;
		e.st.m = newST.m;
		break;
	}

	}
	newfname = e.name + ".txt";
	file.open(newfname, ios::out | ios::trunc);
	if (file.is_open())
	{
		file << e.name << endl;
		file << e.place << endl;
		file << "Start date is: " << e.sd.d << " " << e.sd.m << " " << e.sd.y << endl;
		file << "End date is: " << e.ed.d << " " << " " << e.ed.m << " " << e.ed.y << endl;
		file << "Event's start time is: " << e.st.h << ":" << e.st.m << endl;
		file << "Your Event Id is: " << e.eventId << endl;
		file.close();
	}

}

void event::DoneEvents(vector<event> v, vector<event> dv)
{
	for (int i = 0; i < v.size(); i++)
	{
		if (v[i].done == "yes")
		{
			dv.push_back(v[i]);
			v.erase(v.begin() + i);
		}
	}
	for (int i = 0; i < dv.size(); i++)
	{
		cout << dv[i].name << endl;

	}
}

void event::deleteDateV(vector<event> v)
{
	dateVector.clear();
	for (int i = 0; i < v.size(); i++)
	{
		dateVector.push_back(v[i].sd);
	}
}