import { Cours as CoursInterface } from "../models/cours";
import { Travail as TravailInterface } from "../models/travail";
import { Etudiant } from "./etudiant";
import { HoraireCours } from "./horaireCours";

export class Cours implements CoursInterface {
  public id: string;
  public group_id: string;
  public prealable: string;
  public titre: string;
  public actif: boolean;
  public etudiants_ids: Etudiant[];
  public horaire_cours: HoraireCours[];
  public liste_travaux: TravailInterface[];

  constructor(
    id: string,
    group_id: string,
    prealable: string,
    titre: string,
    etudiants_ids: Etudiant[],
    horaire_cours: HoraireCours[]
  ) {
    this.id = id;
    this.group_id = group_id;
    this.prealable = prealable;
    this.titre = titre;
    this.actif = false;
    this.etudiants_ids = etudiants_ids;
    this.horaire_cours = horaire_cours;
    this.liste_travaux = [];
  }

  public getEnseignantId() {
    return this.horaire_cours[0].enseignant_id;
  }
  
  public setEtat(etat: boolean) {
    this.actif = etat;
  }

  public getTravaux() {
    return this.liste_travaux;
  }

  public setTravail(travail : TravailInterface, id : string) {
    return this.liste_travaux[this.liste_travaux.indexOf(this.liste_travaux.find(t => t.id === id))] = travail;
  }

  public ajouterTravail(travail : TravailInterface) {
    this.liste_travaux.push(travail);
  }

  retirerTravail(devoir_id: string) {
    const index = this.liste_travaux.indexOf(this.liste_travaux.find(t => t.id === devoir_id), 0);
    if (index > -1) {
      this.liste_travaux.splice(index, 1);
    }
  }
}
