//Examen Junio 2018 - FP
//Grupos C, E y G.
//Fernando Méndez Torrubiano

#include "Departamentos.h"
#include "checkML.h"
using namespace std;

int menu();

int main() {
	_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); //Muestra fugas de memoria.
	system("chcp 1252"); //Castellano.
	system("cls");

	tDepartamento dpto;
	tListaContratos lista;
	tPrioridades prioridades;
	tEmpleado empleado;
	string id, nif;
	int opcion, pos = -1;


	if (cargarPrioridades(prioridades)) {
		if (cargarContratos(lista, prioridades)) {
			cout << "Identificador del departamento: ";
			cin >> id;
			cout << endl;
			inicializar(dpto, id);
			do {
				opcion = menu();
				switch (opcion){
				case 1:
					pos = seleccionarContratos(lista);
					if (!insertarEmpleado(lista, dpto, pos)) {
						cout << "Error al insertar el empleado." << endl;
					}
					break;
				case 2:
					cout << "NIF del emplieado: ";
					cin >> nif;
					cout << endl;
					pos = buscarEmpleado(dpto, nif);
					if (pos != -1) {
						mostrarTareas(dpto.empleado[pos].puntero->lista);
					}
					else {
						cout << "El empleado no está en el departamento." << endl;
					}
					cout << endl;
					break;
				case 3:
					if (dpto.cont != 0) {
						cout  << endl << "Los empleados del departamento '" << dpto.id  << "' son:" << endl;
						mostrarDepartamentos(dpto);
					}
					else {
						cout << "No hay empleados." << endl;
					}
					cout << endl;
					break;
				default:
					break;
				}
			} while (opcion != 0);

			liberar(lista);
			liberar(dpto);	
		}
		else {
			cout << "Error al cargar la lista de contratos." << endl;
		}
	}
	else {
		cout << "Error al cargar las prioridades." << endl;
	}

	return 0;
}

int menu() {
	int opc = -1;

	cout << "1.-Insertar empleado en nuevo dpto." << endl;
	cout << "2.-Mostrar tareas de un empleado." << endl;
	cout << "3.-Mostrar los empleados actuales de un dpto." << endl;
	cout << "0.-SALIR." << endl;
	do {
		cout << "Introduzca una opc: ";
		cin >> opc;
	} while (opc < 0 || opc > 3);
	
	return opc;
}