#include "Printer.h"

void Printer::readPrintJobs()
{
	ifstream in;
	in.open("P07.txt");
	if (in.fail())
	{
		cerr << "Error opening P07.txt\n\n";
		exit(1);
	}
	PrintJob temp;
	int count = 0;
	string name;
	string fname;
	int fsize;
	int pages;
	char sender;
	getline(in, name);
	temp.setName(name);
	while (!in.eof())
	{
		getline(in, fname);
		temp.setFilename(fname);
		in >> fsize;
		temp.setFileSize(fsize);
		in >> pages;
		temp.setNumPages(pages);
		in >> sender;
		temp.setSenderStatus(sender);
		if (sender == 'E')
		{
			empQueue.addToQueue(temp);
		}
		if (sender == 'M')
		{
			managerQueue.addToQueue(temp);
		}
		count++;
		in.ignore(1);
		getline(in, name);
		temp.setName(name);
	}
	in.close();
}
void Printer::jobSchedule()
{
	cout << "\n\nThis is the job schedule for the printer:\n\n";
	srand((unsigned)time(NULL));
	while (!(empQueue.isEmpty()) || !(managerQueue.isEmpty()))
	{
		int num = (rand() % 10) + 1;
		switch (num)
		{
		case 1:
		case 2:
		case 3:
			if (empQueue.isEmpty())
				cout << managerQueue.removeFromQueue() << setw(12) << "randnum: " << num << endl;
			else
				cout << empQueue.removeFromQueue() << setw(12) << "randnum: " << num << endl;
			break;
		case 4:
		case 5:
		case 6:
		case 7:
		case 8:
		case 9:
		case 10:
			if (managerQueue.isEmpty())
				cout << empQueue.removeFromQueue() << setw(12) << "randnum: " << num << endl;
			else
				cout << managerQueue.removeFromQueue() << setw(12) << "randnum: " << num << endl;
			break;
		default:
			break;
		}
	}
}
void Printer::printJobs()
{
	cout << "\n\nManager Queue:\n";
	if (managerQueue.isEmpty())
		cout << "The manager queue is empty!\n\n";
	else
		managerQueue.printQueue();

	cout << "\n\nEmployee Queue:\n";
	if (empQueue.isEmpty())
		cout << "The employee queue is empty!\n\n";
	else
		empQueue.printQueue();
}