/****************************************************************************
** ui.h extension file, included from the uic-generated form implementation.
**
** If you wish to add, delete or rename functions or slots use
** Qt Designer which will update this file, preserving your code. Create an
** init() function in place of a constructor, and a destroy() function in
** place of a destructor.
*****************************************************************************/


void FormDevoirs::init()
{
    //mise en forme du tableau
    tableNotes->verticalHeader()->hide();
    tableNotes->setLeftMargin(0);
    tableNotes->setColumnWidth(0,150);
    tableNotes->setColumnWidth(1,150);
    tableNotes->setColumnWidth(2,100);
    
    //on sélectionne toutes les matières
    QSqlQuery req;
    QString lib="SELECT nomMatiere FROM MATIERE ORDER BY nomMatiere";
    req.exec(lib);
    
     //pour chaque matière
    while (req.next() )
    {
	comboBoxMatiere->insertItem(req.value(0).toString() );
    }
    
    matiere_changement();
    
}


void FormDevoirs::matiere_changement()
{
     //on vide la liste des devoirs
    comboBoxDevoir->clear();
     
    //récupération de l'élèment sélectionné
    QString matiere=comboBoxMatiere->currentText();
    
    //on sélectionne le numéro de la matière correspondant
    QSqlQuery req;
    QString lib="SELECT noMatiere FROM MATIERE WHERE nomMatiere='"+matiere+"'";
    req.exec(lib);
    req.next();
    int noMat=req.value(0).toInt();
    QString noMatiere=QString::number(noMat);
    
    //on sélectionne tous les devoirs concernant cette matière
    lib="SELECT libDevoir FROM DEVOIR WHERE noMatiere="+noMatiere+" ORDER BY dateDevoir,libDevoir";
    req.exec(lib);
    
    //pour chaque devoir
    while (req.next() )
    {
	comboBoxDevoir->insertItem(req.value(0).toString() );
    }
    
    devoir_changement();
}


void FormDevoirs::devoir_changement()
{
    //récupération de la matière sélectionnée
    QString matiere=comboBoxMatiere->currentText();
    //on sélectionne le numéro de la matière correspondant
    QSqlQuery req;
    QString lib="SELECT noMatiere FROM MATIERE WHERE nomMatiere='"+matiere+"'";
    req.exec(lib);
    req.next();
    //QString noMatiere=req.value(0).toString();
    int noMat=req.value(0).toInt();
    QString noMatiere=QString::number(noMat);
    
     //récupération du devoir sélectionné
    QString devoir=comboBoxDevoir->currentText();
    //on sélectionne le numéro du devoir correspondant
    lib="SELECT noDevoir FROM DEVOIR WHERE libDevoir='"+devoir+"'";
    lib=lib+" AND noMatiere="+noMatiere;
    req.exec(lib);
    req.next();
    int noDev=req.value(0).toInt();
    QString noDevoir=QString::number(noDev);
    
    //on sélectionne les élèves ayant une note concernant le devoir sélectionné
    lib="SELECT nomEleve,prenomEleve,note FROM ELEVE EL,EFFECTUER EF";
    lib=lib+" WHERE EL.noEleve=EF.noEleve AND noMatiere="+noMatiere;
    lib=lib+" AND noDevoir="+noDevoir+" AND note IS NOT NULL ORDER BY nomEleve";
    req.exec(lib);
    qDebug(lib);
    
    //on indique que le nombre de lignes du tableau est égal au nombre d'élèves qu'on a sélectionné
    tableNotes->setNumRows(req.size() );
    
    int noLigne=0;
    uint i;
    
    //pour chaque élève
    while (req.next() )
    {
	for (i=0;i<3;i++)
	tableNotes->setText(noLigne,i,req.value(i).toString() );
	noLigne++;
    }
}
