#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
#include "Esame.h"
#include "Data.h"


Esame::Esame(string n, Data d, int v, bool lode)
{
   if(n.size()>40)
	   n.resize(40);
   denominazione=n;
   data_esame=d;
   if (controllaVoto(v,lode))
   {
	  voto=v;
      if (lode)
    	  voto++;
   }
   else
   {
         cout << "ERRORE NEL VOTO ESAME:" << n << endl;
         voto=0;
         system("EXIT");
   }
}

Esame::Esame()
{}

Esame::~Esame()
{}

bool Esame::controllaVoto(int voto, bool lode)  
{
	return ((voto <= 30) && (voto >= 18) && (!lode)) || ((voto==30) && (lode));
}


bool Esame::presaLode()  
{
   return (voto==31);
}

bool Esame::nullo()
{
   return (voto==0);
}

void Esame::stampa()
{ cout << "STAMPA DATI ESAME" << endl;
     cout << "Data Esame: ";
     data_esame.stampa();
     cout << " Esame di: " << denominazione << " Voto: ";
     if (nullo())
         cout << "esame non valido";
     else
     {
        if (presaLode())
    	    cout << voto-1 << " con lode";
        else cout << voto;
     }
     cout << endl;
}

void Esame::printFormatoElenco()
{
     data_esame.stampaCompatta();
     cout << " " << denominazione << " ";
     if (nullo())
         cout << "NULL";
     else
     {
        if (presaLode())
    	    cout << voto-1 << " con lode";
        else cout << voto;
     }
     cout << endl;
}

int Esame::getVoto()
{
   int vret=voto;
	if (vret==31)
		vret--;
	return vret;
}
