// Emprunteur.cpp: implementation of the Emprunteur class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "bibli.h"
#include "Emprunteur.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
Emprunteur::Emprunteur(CString _nom, CString _prenom, int _no, CString _rtype, 
					   CString _rnom, int _cp, CString _ville )
{
   this->nom	= _nom;
   this->prenom	= _prenom;
   this->no		= _no;
   this->rtype	= _rtype;
   this->rnom	= _rnom;
   this->cp		= _cp;
   this->ville	= _ville;
   this->nombreEmprunt = 0;
   this->maxEmprunt    = 5;
}

Emprunteur::~Emprunteur()
{
   for ( int i = 0 ; i < nombreEmprunt ; i++ ) {
      delete emprunts[i];
   }
}

bool Emprunteur::autoriseEmprunt(void)
{
	return ( this->nombreEmprunt < this->maxEmprunt ) ? true : false;
}


//////////////////////////////////////////////////////////////////////
// Gestion des emprunts
//////////////////////////////////////////////////////////////////////

bool Emprunteur::creerEmprunt(Livre * livre)
{
	if ( livre->disponible() ) {
		livre->emprunterLivre();
		this->emprunts[this->nombreEmprunt] = new Emprunt(livre);
		this->nombreEmprunt++;
		return true;
	} else
		return false;
}

bool Emprunteur::retourLivre(Livre * livre)
{
	bool trouve  = false;
	for ( int i = 0 ; i < this->nombreEmprunt ; i++ ) {
		if ( this->emprunts[i]->getLivre() == livre ) {
			this->emprunts[i]->getLivre()->rendreLivre();
			delete emprunts[i];
			trouve = true;
		}  else if ( trouve ) 
			        this->emprunts[i-1] = this->emprunts[i];
    }
	if (trouve) {
		this->emprunts[i-1] = NULL;
		this->nombreEmprunt --;
		return true;
	} else
		return false;
}

///////////////////////////////////////////////////////////////////
// Pour recherche
///////////////////////////////////////////////////////////////////		
bool Emprunteur::compareNom(CString cnom) 
{
   if ( nom.CompareNoCase(cnom) == 0 )
	   return true;
   else
	   return false;
}

///////////////////////////////////////////////////////////////////
// ACCES aux parametres
///////////////////////////////////////////////////////////////////
CString Emprunteur::getNom(void)
{
	return nom;
}