class ParkingController(object):
    def __init__(self):
        self.parking = Parking(NB_NIVEAU, PLACE_PAR_NIVEAU, PRIX).charger().charger_fichier_stat()
   
    def ajouter_client_parking(self, nom, adresse, abonnement):
        cli = Client(nom, adresse)
        contrat = Contrat(cli)
        
        if abonnement == "Abonne" : 
            cli.est_abonne = True
            self.abonner_un_client(cli, abonnement, contrat)
            
        if abonnement == "Super abonne" : 
            cli.est_super_abonne = True
            self.abonner_un_client(cli, abonnement, contrat)
        else : self.abonner_un_client(cli, abonnement, contrat)
        
        hauteur  = randint(MIN_HAUTEUR, MAX_HAUTEUR)
        longueur = randint(MIN_LONGUEUR, MAX_LONGUEUR)
        largeur  = randint(MIN_LARGEUR, MAX_LARGEUR)
        cli.nouvelle_voiture("", hauteur, longueur, largeur)
        return cli.entrer_parking(self.parking.mes_acces[0])
    
    def abonner_un_client(self, client, type_abonne, contrat):
        print(self.parking.mes_abonnements)
        abonnement = self.parking.mes_abonnements[type_abonne]
        client.s_abonner(contrat)
        abonnement.add_contrat(contrat)
        contrat.definir_abonnement(abonnement)
        
    def afficher_place_disponible(self):
        return self.parking.mes_acces[0].mon_panneau.get_nb_place_disponible(self.parking)
    
    def get_numero_ticket(self)   : return self.parking.dernier_numero_ticket
    def sauvegarder_parking(self) : self.parking.sauvegarder()
    def faire_sortir(self, num)   : return self.parking.recupere_place_id(num)
    def recuperer_prix(self, num) : return self.parking.calcul_prix(num)
    def __get_client(self, num)   : return self.parking.get_client(num)
    
    def creer_livraison(self, date, num) :
        client = self.__get_client(num)
        print(client)
        if client is not None : 
            return client.demander_livraison(date)
        else : 
            return None
    
    def creer_entretien(self, date, num) :
        client = self.__get_client(num)
        print(client)
        if client is not None : 
            return client.demander_entretien(date)
        else : 
            return None
    
    def creer_maintenance(self, date, num) :
        client = self.__get_client(num)
        print(client)
        if client is not None : 
            return client.demander_maintenance(date)
        else : 
            return None