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

#include "stdafx.h"
#include "bibli.h"
#include "Bibliotheque.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

Bibliotheque::Bibliotheque()
{
	nbLivre = 0;
	nbEmprunteur = 0;

}

Bibliotheque::~Bibliotheque()
{
   int i;
   for ( i = 0 ; i < nbLivre ; i++ )
	   delete listLivre[i];

   for ( i = 0 ; i < nbEmprunteur ; i++ )
	   delete listeEmprunteur[i];

}

////////////////////////////////////////////////////////////////////
// Gestion des Livres
////////////////////////////////////////////////////////////////////

bool Bibliotheque::ajouterLivre(CString titre, CString isbn)
{
    // Verifie que les infos soient bien entrées
	if (    titre.Compare("") == 0 
		 || isbn.Compare("")  == 0) 
	   return false;

	// Verifie que le livre existe pas deja
    for ( int i = 0 ; i < nbLivre ; i++ ) {
       if ( listLivre[i]->getTitre().CompareNoCase(titre) == 0 )
		   return false;
	}

	if ( nbLivre < MAX_LIVRE ) {
		listLivre[nbLivre] = new Livre(titre,isbn);
		nbLivre++;
		return true;
	}
	return false;
}

bool Bibliotheque::supprimerLivre(CString isbn)
{
 	bool trouve  = false;
	for ( int i = 0 ; i < this->nbLivre ; i++ ) {
		if ( this->listLivre[i]->compareIsbn(isbn) == true ) {
			delete listLivre[i];
			trouve = true;
		}  else if ( trouve ) 
			        this->listLivre[i-1] = this->listLivre[i];
    }
	if (trouve) {
		this->listLivre[i-1] = NULL;
		this->nbLivre--;
		return true;
	} else
		return false;
}


void Bibliotheque::creerListLivre(CComboBox * cbox)
{
   // On commence par vider le combo
   cbox->ResetContent();

   // Maintenant on peut mettre a jour simplement
   for (int j=0 ; j < nbLivre ; j++ ) 
      cbox->AddString(listLivre[j]->getTitre());
}


CString Bibliotheque::donnerIsbnFromTitre(CString titre)
{
	if ( titre.GetLength() ) {
      for ( int i = 0 ; i < nbLivre ; i++ ) {
  		if ( listLivre[i]->getTitre().CompareNoCase(titre) == 0 ) 
		   return listLivre[i]->getIsbn();
	  }
	}
	return CString("");
}

////////////////////////////////////////////////////////////////////
// Gestion des Emprunteurs
////////////////////////////////////////////////////////////////////

bool Bibliotheque::ajouterEmprunteur(CString _nom, CString _prenom, int _no, CString _rtype, 
					   CString _rnom, int _cp, CString _ville )
{
	if ( nbLivre < MAX_EMPRUNTEUR ) {
		listeEmprunteur[nbEmprunteur] = new Emprunteur(_nom,_prenom,_no,_rtype,_rnom,_cp,_ville);
		nbEmprunteur++;
		return true;
	}
	return false;
}

bool Bibliotheque::supprimerEmprunteur(CString nom)
{
 	bool trouve  = false;
	for ( int i = 0 ; i < this->nbEmprunteur ; i++ ) {
		if ( this->listeEmprunteur[i]->compareNom(nom) == true ) {
			delete listeEmprunteur[i];
			trouve = true;
		}  else if ( trouve ) 
			        this->listeEmprunteur[i-1] = this->listeEmprunteur[i];
    }
	if (trouve) {
		this->listeEmprunteur[i-1] = NULL;
		this->nbEmprunteur--;
		return true;
	} else
		return false;
}

void Bibliotheque::creerListEmprunteur(CComboBox * cbox)
{
   // On commence par vider le combo
   cbox->ResetContent();

   // Maintenant on peut mettre a jour simplement
   for (int j=0 ; j < nbEmprunteur ; j++ ) 
      cbox->AddString(listeEmprunteur[j]->getNom());
}