void ProjetManager::ajouterTacheUnitaire(const QString& titre, QDate debTot, QDate finTard, const QString& nomMere, TIME::Duree duree, bool preemptable) { if (this->existeNom(titre)) throw ProjectException("Impossible de créer la tache : le nom est déjà pris !"); TacheComposite* mere = dynamic_cast<TacheComposite*>(this->get(nomMere)); if (mere == 0) throw ProjectException("Impossible de créer la tache : parent introuvable ou n'est pas une tache composite !"); if (debTot < mere->getDebTot() || mere->getFinTard() < finTard) throw ProjectException("Impossible de créer la tache : Les dates doivent concorder avec les dates du parent !"); Tache* t; if (!preemptable) { if (duree.getDureeEnHeures() > 12) throw ProjectException("Impossible de créer la tache : Les taches non préemptables ne doivent pas dépasser 12h !"); t = new TacheUnitaire(titre, debTot, finTard, mere, duree); } else t = new TachePreemptable(titre, debTot, finTard, mere, duree); this->addItem(t); mere->addTache(t); }
void ProjetManager::ajouterTacheComposite(const QString& titre, QDate debTot, const QString& nomMere, QDate finTard) { if (this->existeNom(titre)) throw ProjectException("Impossible de créer la tache : le nom est déjà pris !"); TacheComposite* mere = dynamic_cast<TacheComposite*>(this->get(nomMere)); if (mere == 0) throw ProjectException("Impossible de créer la tache : parent introuvable ou n'est pas une tache composite !"); if (debTot < mere->getDebTot() || mere->getFinTard() < finTard) throw ProjectException("Impossible de créer la tache : Les dates doivent concorder avec les dates du parent !"); Tache * t = new TacheComposite(titre, debTot, finTard, mere); this->addItem(t); mere->addTache(t); }