Skip to content

Commit

Permalink
Fonction d'édition de vol - Etape 2
Browse files Browse the repository at this point in the history
La fonction d'édition de vol est fonctionnelle et complète.
  • Loading branch information
cvermot committed Jan 14, 2024
1 parent 27ccd4a commit d12e5c9
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 24 deletions.
83 changes: 68 additions & 15 deletions src/AeroDms.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ AeroDms::AeroDms(QWidget* parent):QMainWindow(parent)

//========================Initialisation des autres attributs
piloteAEditer = "";
volAEditer = "";
volAEditer = -1;
factureIdEnBdd = 0;

peuplerListesPilotes();
Expand Down Expand Up @@ -635,6 +635,10 @@ void AeroDms::selectionnerUneFacture()
if (!fichier.isNull())
{
chargerUneFacture(fichier);
//Si on passe ici, on est pas en édition de vol
volAEditer = -1;
//On restaure le texte du bouton de validation (qui a changé si on était en édition)
validerLeVol->setText("Valider le vol");
}
}

Expand All @@ -645,7 +649,18 @@ void AeroDms::chargerUneFacture(QString p_fichier)
pdfDocument->load(p_fichier);

choixPilote->setEnabled(true);
dureeDuVol->setEnabled(true);
prixDuVol->setEnabled(true);
choixBalade->setEnabled(true);
typeDeVol->setEnabled(true);

choixPilote->setCurrentIndex(0);
dureeDuVol->setTime(QTime::QTime(0, 0));
prixDuVol->setValue(0);
remarqueVol->clear();
typeDeVol->setCurrentIndex(2);
choixBalade->setCurrentIndex(0);

//On affiche le widget qui contient la fonction d'ajout de vol
mainTabWidget->setCurrentIndex(2);
}
Expand Down Expand Up @@ -750,7 +765,6 @@ void AeroDms::enregistrerUneFacture()
}
}


void AeroDms::enregistrerUnVol()
{
bool estEnEchec = false;
Expand Down Expand Up @@ -836,20 +850,21 @@ void AeroDms::enregistrerUnVol()
}


db->enregistrerUnVolDEntrainement(idPilote,
/*db->enregistrerUnVolSortieOuBalade(idPilote,
typeDeVol->currentText(),
dateDuVol->date(),
dureeDuVol->time().hour() * 60.0 + dureeDuVol->time().minute(),
prixDuVol->value(),
montantSubventionne,
factureIdEnBdd,
remarqueVol->text());
choixBalade->currentData().toInt(),
remarqueVol->text());*/

subventionRestante = subventionRestante - montantSubventionne;
}
//Sinon on est balade ou sortie, on enregistre le vol avec la référence de balade/sortie
else
{
//else
//{
db->enregistrerUnVolSortieOuBalade(idPilote,
typeDeVol->currentText(),
dateDuVol->date(),
Expand All @@ -858,11 +873,11 @@ void AeroDms::enregistrerUnVol()
montantSubventionne,
factureIdEnBdd,
choixBalade->currentData().toInt(),
remarqueVol->text());
remarqueVol->text(),
volAEditer);

//On met a jour la liste des vols balades/sorties dans l'onglet des recettes
peuplerListeBaladesEtSorties();
}

//}

statusBar()->showMessage(QString("Vol ")
+ typeDeVol->currentText()
Expand All @@ -883,6 +898,15 @@ void AeroDms::enregistrerUnVol()
dureeDuVol->setTime(QTime::QTime(0, 0));
prixDuVol->setValue(0);
remarqueVol->clear();

//on réactive les éventuels élements d'IHM désactivés par une mise à jour de vol
typeDeVol->setEnabled(true);
choixBalade->setEnabled(true);
dureeDuVol->setEnabled(true);
prixDuVol->setEnabled(true);

//On sort du mode édition, si on y etait...
volAEditer = -1;
}
else
{
Expand All @@ -892,9 +916,14 @@ void AeroDms::enregistrerUnVol()
//On met à jour la table des pilotes et celle des vols
peuplerTablePilotes();
peuplerTableVols();
//On met a jour la liste des vols balades/sorties dans l'onglet des recettes
peuplerListeBaladesEtSorties();

//Et l'affichage des statistiques
peuplerStatistiques();

//On restaure le texte du bouton de validation (qui a changé si on était en édition)
validerLeVol->setText("Valider le vol");
}

void AeroDms::enregistrerUneRecette()
Expand Down Expand Up @@ -1127,11 +1156,11 @@ void AeroDms::menuContextuelVols(const QPoint& pos)
{
QMenu menuClicDroitVol(tr("Menu contextuel"), this);
const int ligneSelectionnee = vueVols->itemAt(pos)->row();
volAEditer = vueVols->item( ligneSelectionnee,
AeroDmsTypes::VolTableElement_VOL_ID)->text();
volAEditer = (vueVols->item( ligneSelectionnee,
AeroDmsTypes::VolTableElement_VOL_ID)->text()).toInt();

const bool leVolEstSupprimable = (vueVols->item(ligneSelectionnee, AeroDmsTypes::VolTableElement_SOUMIS_CE)->text() == "Non");

volPartiellementEditable = !leVolEstSupprimable;

QAction editerLeVol(QIcon("./ressources/airplane-edit.svg"), "Editer le vol", this);
connect(&editerLeVol, SIGNAL(triggered()), this, SLOT(editerVol()));
Expand All @@ -1153,22 +1182,43 @@ void AeroDms::menuContextuelVols(const QPoint& pos)
void AeroDms::editerVol()
{
//On récupère le nom de la facture associée et on la charge
const QString cheminComplet = cheminStockageFacturesTraitees + "/" + db->recupererNomFacture(volAEditer.toInt());
const QString cheminComplet = cheminStockageFacturesTraitees + "/" + db->recupererNomFacture(volAEditer);
chargerUneFacture(cheminComplet);
qDebug() << cheminComplet;

//On indique que c'est une facture déjà en BDD

//On récupère les infos du vol pour les réintegrer dans l'IHM
const AeroDmsTypes::Vol vol = db->recupererVol(volAEditer.toInt());
const AeroDmsTypes::Vol vol = db->recupererVol(volAEditer);
choixPilote->setCurrentIndex(listeDeroulantePilote->findData(vol.idPilote));
choixPilote->setEnabled(false);

//Type de vol jamais éditable
typeDeVol->setCurrentIndex(typeDeVol->findText(vol.typeDeVol));
typeDeVol->setEnabled(false);

dateDuVol->setDate(vol.date);

QStringList hhmm = vol.duree.split("h");
dureeDuVol->setTime(QTime(hhmm.at(0).toInt(), hhmm.at(1).toInt(),0));

prixDuVol->setValue(vol.coutVol);

choixBalade->setCurrentIndex(choixBalade->findData(vol.baladeId));
choixBalade->setEnabled(false);

remarqueVol->setText(vol.remarque);

//Si le vol est déjà soumis au CE, on ne peut plus modifier les temps de vol et le coût du vol :
//(modifierait des montants de subventions déjà soumises au CE)
//On va chercher cette infos dans la table des vol
if (volPartiellementEditable)
{
dureeDuVol->setEnabled(false);
prixDuVol->setEnabled(false);
}

validerLeVol->setText("Modifier le vol");

}

Expand Down Expand Up @@ -1205,6 +1255,9 @@ void AeroDms::supprimerVol()
}
break;
}

//On sort du mode suppression de vol
volAEditer = -1;
}

void AeroDms::switchModeDebug()
Expand Down
7 changes: 4 additions & 3 deletions src/AeroDms.h
Original file line number Diff line number Diff line change
Expand Up @@ -115,9 +115,10 @@ class AeroDms : public QMainWindow
QAction* boutonModeDebug;

//Données internes
QString piloteAEditer;
QString volAEditer;
int factureIdEnBdd;
QString piloteAEditer = "";
int volAEditer = -1;
bool volPartiellementEditable = false;
int factureIdEnBdd = 0;

//Statistiques
StatistiqueWidget* m_activeWidget = nullptr;
Expand Down
25 changes: 21 additions & 4 deletions src/ManageDb.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -430,10 +430,27 @@ void ManageDb::enregistrerUnVolSortieOuBalade(const QString& p_piloteId,
const float p_montantSubventionne,
const int p_facture,
const int p_idSortie,
const QString& p_remarque)
const QString& p_remarque,
const int p_idVolAEditer)
{
QSqlQuery query;
query.prepare("INSERT INTO 'vol' ('typeDeVol','pilote','date','duree','cout','montantRembourse','facture','sortie','remarque') VALUES(:typeDeVol,:pilote,:date,:duree,:cout,:montantRembourse,:facture,:sortie,:remarque)");
//Si on est sur un ajout
if (p_idVolAEditer == -1)
{
query.prepare("INSERT INTO 'vol' ('typeDeVol','pilote','date','duree','cout','montantRembourse','facture','remarque') VALUES(:typeDeVol,:pilote,:date,:duree,:cout,:montantRembourse,:facture,:remarque)");
//Si on est sur une sortie, on la renseigne
if (p_idSortie != -1)
query.prepare("INSERT INTO 'vol' ('typeDeVol','pilote','date','duree','cout','montantRembourse','facture','sortie','remarque') VALUES(:typeDeVol,:pilote,:date,:duree,:cout,:montantRembourse,:facture,:sortie,:remarque)");
}
//Sinon, un numéro de vol est renseigné : on est en édition
else
{
query.prepare("UPDATE 'vol' SET 'date' = :date,'duree' = :duree,'cout' = :cout,'montantRembourse' = :montantRembourse,'remarque' = :remarque WHERE volId = :volId");
if (p_idSortie != -1)
query.prepare("UPDATE 'vol' SET 'date' = :date,'duree' = :duree,'cout' = :cout,'montantRembourse' = :montantRembourse,'remarque' = :remarque,'sortie' = :sortie WHERE volId = :volId");
query.bindValue(":volId", p_idVolAEditer);
}

query.bindValue(":typeDeVol", p_typeDeVol);
query.bindValue(":pilote", p_piloteId);
query.bindValue(":date", p_date.toString("yyyy-MM-dd"));
Expand All @@ -447,11 +464,11 @@ void ManageDb::enregistrerUnVolSortieOuBalade(const QString& p_piloteId,
query.exec();
}

bool ManageDb::supprimerUnVol(const QString p_volAEditer)
bool ManageDb::supprimerUnVol(const int p_volAEditer)
{
QSqlQuery query;
query.prepare("SELECT * FROM 'xAssociationRecette-Vol' WHERE volId = :volId");
query.bindValue(":volId", p_volAEditer);
query.bindValue(":volId", QString::number(p_volAEditer));
query.exec();
if (query.next())
{
Expand Down
5 changes: 3 additions & 2 deletions src/ManageDb.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,9 @@ class ManageDb : public QWidget {
const float p_montantSubventionne,
const int p_facture,
const int p_idSortie,
const QString& p_remarque);
bool supprimerUnVol(const QString p_volAEditer);
const QString& p_remarque,
const int p_idVolAEditer);
bool supprimerUnVol(const int p_volAEditer);
void enregistrerUneFacture( const QString& p_payeur,
const int factureId,
const QDate& p_date,
Expand Down

0 comments on commit d12e5c9

Please sign in to comment.