#include <Qstring>
#include <QVector>

#ifndef CLASSES_H
#define CLASSES_H
typedef enum DAY
{
    lundi1,
    mardi1,
    mercredi1,
    jeudi1,
    vendredi1,
    lundi2,
    mardi2,
    mercredi2,
    jeudi2,
    vendredi2,
    lundi3,
    mardi3,
    mercredi3,
    jeudi3,
    vendredi3,
    lundi4,
    mardi4,
    mercredi4,
    jeudi4,
    vendredi4
}jours;

typedef enum HEURE
{
    H815,
    H830,
    H845,
    H900,
    H915,
    H930,
    H945,
    H1000,
    H1015,
    H1030,
    H1045,
    H1100,
    H1115,
    H1130,
    H1145,
    H1200,
    H1215,
    H1230,
    H1245,
    H1300,
    H1315,
    H1330,
    H1345,
    H1400,
    H1415,
    H1430,
    H1445,
    H1500,
    H1515,
    H1530,
    H1545,
    H1600,
    H1615,
    H1630,
    H1645,
    H1700,
    H1715,
    H1730,
    H1745,
    H1800,
    H1815,
    H1830,
    H1845,
    H1900,
    H1915,
    H1930,
    H1945
}choix_heure;

class Date
{
    int _jour;
    int _mois;
    //int annee;

    public:
        Date();
        Date(int,int);
        void setDate();

};

class Horaire
{
    int _heure;
    int _min;

    public:
        Horaire();
        Horaire(int,int);
        void setHoraire();
};

class Salle
{
    QString _typeSalle;//choix TD TP Amphi
    QString _nomSalle;
    int _salleIsOccupe;
    public:
        Salle();
        void setTypeSalle(QString);
        void setNomSalle(QString);
        void setSalleIsOccupe(int occupe);
        QString getNomSalle() const;
        QString getTypeSalle() const;
        int getSalleIsOccupe() const;

};

class Professeur
{
    private:
        QString _nom;
        QString _module;
        int _faitPromoL1;
        int _faitPromoL2;
        int _faitAmphi;
        int _faitTD;
        int _faitTP;

    public:
        Professeur();
        void setNom(QString Nom);
        void setModule(QString module);
        void setFaitPromoL1(int);
        void setFaitPromoL2(int);
        void setFaitAmphi(int);
        void setFaitTD(int);
        void setFaitTP(int);
        int getFaitTP() const;
        int getFaitTD() const;
        int getFaitAmphi() const;
        int getFaitPromoL2() const;
        int getFaitPromoL1() const;
        QString getModule() const;
        QString getNom() const;

};

class Matiere //rentré lors de la lecture texte
{
    int _promo;
    QString _module;
    int _nb_TD;
    int _nb_Amphi;
    int _nb_TP;
    int _duree_TD;
    int _duree_amphi;
    int _duree_TP;

public:
    Matiere();
    void setPromo(int);
    void setModule(QString module);
    void setNbTD(int);
    void setNbAmphi(int);
    void setNbTP(int);

    QString getModule() const;
    int getPromo() const ;
    int getNbAmphi() const;
    int getNbTD () const;
    int getNbTP() const;


};
class Cours
{
    Matiere matiereDuCours;
    Professeur professeurDuCours;
    int promotionDuCours;
    Salle salleDuCours;
    Date dateDuCours;
    Horaire horaireDuCours;

public:
    Cours();
    ~Cours();
    void setMatiere();
    void setProfesseur();
    void setPromotionDuCours();
    void setSalle();
    void setDate();
    void setHoraire();

    QString getModule() const;

};


#endif // CLASSES_H
