from Validators.StringValidator import StringValidator
from Validators.NumberValidator import NumberValidator

class Questions:

    def __init__(self, createModuleAction,deleteModuleAction,addEntityAction, createModuleSpecifiqueAction):
        self.createModuleAction = createModuleAction
        self.deleteModuleAction = deleteModuleAction
        self.addEntityAction = addEntityAction
        self.createModuleSpecifiqueAction = createModuleSpecifiqueAction

        
    def getQuesitonsGeneral(self):
        return [
            {
                'type': 'list',
                'name': 'user_option',
                'message': 'Bienvenue dans le Framework Oxalys, que voulez vous faire ?',
                'choices': [self.createModuleAction,self.createModuleSpecifiqueAction,self.deleteModuleAction,self.addEntityAction]
            },
        ]

    def getQuesitonsAddModule(self):
        return [
            {
                'type': "input",
                "name": "nomModule",
                "message": "Reseigner le nom du Module que vous voulez créer",
                "validate": StringValidator,
                "filter": lambda val: str(val)
            }
        ]

    def getQuesitonsAddModuleSpecifique(self):
        return [
            {
                'type': "input",
                "name": "numClient",
                "message": "Reseigner le numéro de client",
                "validate": NumberValidator,
                "filter": lambda val: str(val)
            },
            {
                'type': "input",
                "name": "nomModule",
                "message": "Reseigner le nom du Module que vous voulez créer",
                "validate": StringValidator,
                "filter": lambda val: str(val)
            },
        ]

    def getQuesitonsAddEntity(self):
        return [
            {
                'type': "input",
                "name": "nomEntity",
                "message": "Reseigner le nom de Table de la base de données que vous voulez créer en Entity",
                "validate": StringValidator,
                "filter": lambda val: str(val)
            },
            {
                'type': "input",
                "name": "primaryKey",
                "message": "Reseigner le nom de la clée primaire",
                "validate": StringValidator,
                "filter": lambda val: str(val)
            },
            {
                'type': "input",
                "name": "labelle",
                "message": "Reseigner le champ qui fait office de labelle de laclef primaire si il y en a un"
            },
        ]
        
    def getCreateModuleAction(self):
        return self.createModuleAction
        
    def getDeleteModuleAction(self):
        return self.deleteModuleAction
        
    def getAddEntityAction(self):
        return self.addEntityAction

    def getDeleteModuleSpecifiqueAction(self):
        return self.createModuleSpecifiqueAction
        

