Beispiel #1
0
class Controller:
    def __init__(self):
        self.model = Model()
        self.view = View()

    def start(self):
        self.view.start()
        self.main_menu()

    def update_lists(self, fs, vs):
        fields = []
        vals = []
        for f, v in zip(fs, vs):
            if v != '':
                fields.append(f + ' = %s')
                vals.append(v)
        return fields, vals

    def main_menu(self):
        o = '0'
        while o != 3:
            self.view.menu()
            self.view.option('3')
            o = input()
            if o == '1':
                self.menu_cartelera()
            elif o == '2':
                self.view.ask('Admin: ')
                ad = input()
                self.view.ask('Password: '******'CREDENCIALES INCORRECTAS')
            elif o == '3':
                self.view.end()
                self.model.close_db()
                return
            else:
                self.view.no_valid_option()
        return

    #Usuario regular
    def menu_cartelera(self):
        o = '0'
        while o != 3:
            self.view.menu_cartelera()
            self.view.option('3')
            o = input()
            if o == '1':
                fecha = date.today()
                self.cartelera_de_dia(fecha)
            elif o == '2':
                self.view.ask('Ingrese la Fecha (YYYY-MM-DD): ')
                fecha = input()
                self.cartelera_de_dia(fecha)
            elif o == '3':
                return
            else:
                self.view.no_valid_option()
        return

    def cartelera_de_dia(self, fecha):
        p = self.model.leer_peliculas()
        if type(p) == list:
            f = self.model.leer_funciones_dia(fecha)
            if type(f) == list:
                peliculas_del_dia = []
                cont = 0
                for recordF in f:
                    for recordP in p:
                        contp = 0
                        if recordP[0] == recordF[2]:
                            if cont == 0:
                                peliculas_del_dia.append(recordP)
                            else:
                                for x in peliculas_del_dia:
                                    if recordP == x:
                                        contp += 1
                                if contp == 0:
                                    peliculas_del_dia.append(recordP)
                    cont += 1
                self.view.leer_cartelera_dia(peliculas_del_dia, f)
                self.view.ask('¿Desea comprar un boleto?(Y/N): ')
                r = input()
                if r.lower() == 'y':
                    self.view.ask('Ingrese el numero de Funcion: ')
                    f = input()
                    while r.lower() == 'y':
                        b = self.comprar_boleto(f)
                        if b == True:
                            self.view.ask(
                                '¿Desea comprar OTRO boleto de esta misma funcion?(Y/N): '
                            )
                            r = input()
                        else:
                            r = 'n'
            else:
                self.view.error('PROBLEMA AL LEER LAS FUNCIONES')
        else:
            self.view.error('PROBLEMA AL LEER LAS PELICULAS')

    def comprar_boleto(self, id_funcion):
        caracteres_asientos = []
        funcion = self.model.leer_funcion(id_funcion)
        if type(funcion) == tuple:
            id_sala = funcion[1]
            sala = self.model.leer_sala(id_sala)
            asientos_sala = self.model.leer_asientos_sala(id_sala)
            boletos = self.model.leer_boletos()
            for recordA in asientos_sala:
                j = 0
                for recordB in boletos:
                    if recordB[1] == recordA[0] and recordB[0] == int(
                            id_funcion):
                        j = 1
                        caracteres_asientos.append('X')
                if j == 0:
                    caracteres_asientos.append('0')
            self.view.leer_asientos_sala(caracteres_asientos, sala)
            self.view.ask('¿Que fila quieres?: ')
            fila = input()
            self.view.ask('¿Que asiento quieres?: ')
            asiento = input()
            filas = {
                'A': 1,
                'B': 2,
                'C': 3,
                'D': 4,
                'E': 5,
                'F': 6,
                'G': 7,
                'H': 8,
                'I': 9,
                'J': 10,
                'K': 11,
                'L': 12
            }
            asi = self.model.leer_asiento(id_sala, asiento,
                                          filas[fila.upper()])
            check = self.model.leer_boleto(id_funcion, asi[0])
            if type(check) != tuple:
                o = self.model.crear_boleto(
                    id_funcion,
                    asi[0],
                )
                if o == True:
                    self.view.msg('¡Boleto comprado exitosamente!')
                    self.leer_boleto(id_funcion, asiento, filas[fila.upper()])
                else:
                    self.view.error(o)
            else:
                print('¡Asiento ocupado, escoge otro!')
        else:
            self.view.msg('ERROR. FUNCION INVALIDA')
            return False
        return True

    def leer_boleto(self, id_funcion, asiento, fila):
        fun = self.model.leer_funcion(id_funcion)
        peli = self.model.leer_pelicula(fun[2])
        self.view.leer_boleto(peli[1], peli[2], fun[3], fun[4], asiento, fila)

    #Administracion
    def menu_admin(self):
        o = '0'
        while o != 5:
            self.view.menu_admin()
            self.view.option('5')
            o = input()
            if o == '1':
                self.menu_funciones()
            elif o == '2':
                self.menu_peliculas()
            elif o == '3':
                self.menu_salas()
            elif o == '4':
                self.menu_administradores()
            elif o == '5':
                return
            else:
                self.view.no_valid_option()
        return

    #Funciones
    def menu_funciones(self):
        o = '0'
        while o != 9:
            self.view.menu_funciones()
            self.view.option('9')
            o = input()
            if o == '1':
                self.crear_funcion()
            elif o == '2':
                self.leer_funciones()
            elif o == '3':
                self.leer_funcion()
            elif o == '4':
                self.leer_funciones_dia()
            elif o == '5':
                self.leer_funciones_peli()
            elif o == '6':
                self.leer_funciones_sala()
            elif o == '7':
                self.actualizar_funcion()
            elif o == '8':
                self.eliminar_funcion()
            elif o == '9':
                return
            else:
                self.view.no_valid_option()
        return

    def ask_fun(self):
        self.view.ask('ID Sala: ')
        id_s = input()
        self.view.ask('ID Pelicula: ')
        id_p = input()
        self.view.ask('Fecha(YYYY-MM-DD): ')
        fe = input()
        self.view.ask('Hora(HH:MM:SS): ')
        ho = input()
        return [id_s, id_p, fe, ho]

    def crear_funcion(self):
        id_s, id_p, fe, ho = self.ask_fun()
        out = self.model.crear_funcion(id_s, id_p, fe, ho)
        if out == True:
            self.view.msg('Funcion agregada correctamente')
        else:
            if out.errno == 1062:
                self.view.error('LA FUNCION ESTA REPETIDA')
            else:
                self.view.error('NO SE PUDO AGREGAR LA FUNCION. REVISE.')
        return

    def leer_funciones(self):
        out = self.model.leer_funciones()
        if type(out) == list:
            self.view.leer_funciones(out)
        else:
            self.view.error('PROBLEMA AL VER FUNCIONES. REVISA.')
        return

    def leer_funcion(self):
        self.view.ask('ID Funcion: ')
        id_f = input()
        out = self.model.leer_funcion(id_f)
        if type(out) == tuple:
            self.view.leer_funcion(out)
        else:
            if out == None:
                self.view.error('LA FUNCION NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER FUNCION. REVISA.')
        return

    def leer_funciones_dia(self):
        self.view.ask('Dia(YYYY-MM-DD): ')
        dia = input()
        out = self.model.leer_funciones_dia(dia)
        if type(out) == list:
            self.view.leer_funciones(out)
        else:
            self.view.error('PROBLEMA AL VER FUNCIONES. REVISA.')
        return

    def leer_funciones_peli(self):
        self.view.ask('ID Peli: ')
        id_p = input()
        out = self.model.leer_funciones_pelicula(id_p)
        if type(out) == list:
            self.view.leer_funciones(out)
        else:
            self.view.error('PROBLEMA AL VER FUNCIONES. REVISA.')
        return

    def leer_funciones_sala(self):
        self.view.ask('ID Sala: ')
        id_s = input()
        out = self.model.leer_funciones_sala(id_s)
        if type(out) == list:
            self.view.leer_funciones(out)
        else:
            self.view.error('PROBLEMA AL VER FUNCIONES. REVISA.')
        return

    def actualizar_funcion(self):
        self.view.ask('ID Funcion: ')
        id_f = input()
        out = self.model.leer_funcion(id_f)
        if type(out) == tuple:
            self.view.leer_funcion(out)
        else:
            if out == None:
                self.view.error('LA FUNCION NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER FUNCION. REVISA.')
            return
        self.view.msg(
            'Ingresa los valores a modificar (vacio para dejarlo igual):')
        whole_vals = self.ask_fun()
        fields, vals = self.update_lists(
            ['id_sala', 'id_peli', 'fecha_f', 'hora_f'], whole_vals)
        vals.append(id_f)
        vals = tuple(vals)
        out = self.model.actualizar_funcion(fields, vals)
        if out == True:
            self.view.ok(id_f, 'actualizado')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR LA PELICULA')
        return

    def eliminar_funcion(self):
        self.view.ask('ID Funcion: ')
        id_f = input()
        count = self.model.eliminar_funcion(id_f)
        if count != 0:
            self.view.ok(id_f, 'borro')
        else:
            if count == 0:
                self.view.error('LA FUNCION NO EXISTE')
            else:
                self.view.error('PROBLEMA AL BORRAR LA FUNCION. REVISA.')
        return

    #Salas
    def menu_salas(self):
        o = '0'
        while o != 6:
            self.view.menu_salas()
            self.view.option('6')
            o = input()
            if o == '1':
                self.crear_sala()
            elif o == '2':
                self.leer_salas()
            elif o == '3':
                self.leer_sala()
            elif o == '4':
                self.actualizar_sala()
            elif o == '5':
                self.eliminar_sala()
            elif o == '6':
                return
            else:
                self.view.no_valid_option()
        return

    def ask_sala(self):
        self.view.ask('ID Sala: ')
        id_s = input()
        self.view.ask('Filas: ')
        nf = input()
        self.view.ask('Asientos por fila: ')
        na = input()
        return [id_s, nf, na]

    def ask_sala_update(self):
        self.view.ask('Filas: ')
        nf = input()
        self.view.ask('Asientos por fila: ')
        na = input()
        return [nf, na]

    def crear_sala(self):
        print('DIMENSION MAXIMA: 12 Filas x 25 Asientos por fila')
        id_s, nf, na = self.ask_sala()
        out = self.model.crear_sala(id_s, nf, na)
        if out == True:
            self.view.msg('Sala agregada correctamente.')
            i = 1
            while i < int(nf) + 1:
                j = 1
                while j < int(na) + 1:
                    self.model.crear_asientos_sala(id_s, j, i)
                    j += 1
                print('fila: ', i)
                i += 1
        else:
            if out.errno == 1062:
                self.view.error('LA SALA ESTA REPETIDA')
            else:
                self.view.error('NO SE PUDO AGREGAR LA SALA. REVISE.')
        return

    def leer_salas(self):
        out = self.model.leer_salas()
        if type(out) == list:
            self.view.leer_salas(out)
        else:
            self.view.error('PROBLEMA AL VER SALAS. REVISA.')
        return

    def leer_sala(self):
        self.view.ask('ID Sala: ')
        id_a = input()
        out = self.model.leer_sala(id_a)
        if type(out) == tuple:
            self.view.leer_sala(out)
        else:
            if out == None:
                self.view.error('LA SALA NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER SALA. REVISA.')
        return

    def actualizar_sala(self):
        self.view.ask('ID Sala: ')
        id_s = input()
        out = self.model.leer_sala(id_s)
        if type(out) == tuple:
            self.view.leer_sala(out)
        else:
            if out == None:
                self.view.error('LA SALA NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER SALA. REVISA.')
            return
        self.view.msg(
            'Ingresa los valores a modificar (vacio para dejarlo igual):')
        whole_vals = self.ask_sala_update()
        fields, vals = self.update_lists(['num_filas', 'asientos_por_fila'],
                                         whole_vals)
        vals.append(id_s)
        vals = tuple(vals)
        out = self.model.actualizar_sala(fields, vals)
        if out == True:
            self.view.ok(id_s, 'actualizado')
            self.model.eliminar_asientos(id_s)
            i = 1
            while i < out[1] + 1:
                j = 1
                while j < (out[2] + 1):
                    self.model.crear_asientos_sala(id_s, j, i)
                    j += 1
                i += 1
        else:
            self.view.error('NO SE PUDO ACTUALIZAR LA SALA')
            print(out)
        return

    def eliminar_sala(self):
        self.view.ask('ID Sala: ')
        id_s = input()
        count = self.model.eliminar_sala(id_s)
        if count != 0:
            self.view.ok(id_s, 'borro')
        else:
            if count == 0:
                self.view.error('LA SALA NO EXISTE')
            else:
                self.view.error('PROBLEMA AL BORRAR LA SALA. REVISA.')
        return

    #Peliculas
    def menu_peliculas(self):
        o = '0'
        while o != 6:
            self.view.menu_peliculas()
            self.view.option('6')
            o = input()
            if o == '1':
                self.crear_pelicula()
            elif o == '2':
                self.leer_peliculas()
            elif o == '3':
                self.leer_pelicula()
            elif o == '4':
                self.actualizar_pelicula()
            elif o == '5':
                self.eliminar_pelicula()
            elif o == '6':
                return
            else:
                self.view.no_valid_option()
        return

    def ask_peli(self):
        self.view.ask('Titulo: ')
        titu = input()
        self.view.ask('Duracion: ')
        dura = input()
        self.view.ask('Director: ')
        dire = input()
        self.view.ask('Sinopsis: ')
        sino = input()
        return [titu, dura, dire, sino]

    def crear_pelicula(self):
        titu, dura, dire, sino = self.ask_peli()
        out = self.model.crear_pelicula(titu, dura, dire, sino)
        if out == True:
            self.view.ok(titu, 'agrego')
        else:
            if out.errno == 1062:
                self.view.error('LA PELICULA ESTA REPETIDA')
            else:
                self.view.error('NO SE PUDO AGREGAR LA PELICULA. REVISE.')
        return

    def leer_peliculas(self):
        out = self.model.leer_peliculas()
        if type(out) == list:
            self.view.leer_peliculas(out)
        else:
            self.view.error('PROBLEMA AL VER PELICULAS. REVISA.')
        return

    def leer_pelicula(self):
        self.view.ask('ID Peli: ')
        id_p = input()
        out = self.model.leer_pelicula(id_p)
        if type(out) == tuple:
            self.view.leer_pelicula(out)
        else:
            if out == None:
                self.view.error('LA PELICULA NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER PELICULA. REVISA.')
        return

    def actualizar_pelicula(self):
        self.view.ask('ID Peli: ')
        id_p = input()
        out = self.model.leer_pelicula(id_p)
        if type(out) == tuple:
            self.view.leer_pelicula(out)
        else:
            if out == None:
                self.view.error('LA PELICULA NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER PELICULA. REVISA.')
            return
        self.view.msg(
            'Ingresa los valores a modificar (vacio para dejarlo igual):')
        whole_vals = self.ask_peli()
        fields, vals = self.update_lists(
            ['titulo_p', 'duracion_p', 'director_p', 'sinopsis'], whole_vals)
        vals.append(id_p)
        vals = tuple(vals)
        out = self.model.actualizar_peli(fields, vals)
        if out == True:
            self.view.ok(id_p, 'actualizado')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR LA PELICULA')
            print(out)
        return

    def eliminar_pelicula(self):
        self.view.ask('ID Pelicula: ')
        id_p = input()
        count = self.model.eliminar_peli(id_p)
        if count != 0:
            self.view.ok(id_p, 'borro')
        else:
            if count == 0:
                self.view.error('LA PELICULA NO EXISTE')
            else:
                self.view.error('PROBLEMA AL BORRAR LA PELICULA. REVISA.')
        return

    #administradores
    def menu_administradores(self):
        o = '0'
        while o != 5:
            self.view.menu_administradores()
            self.view.option('5')
            o = input()
            if o == '1':
                self.crear_admin()
            elif o == '2':
                self.leer_admins()
            elif o == '3':
                self.actualizar_admin()
            elif o == '4':
                self.eliminar_admin()
            elif o == '5':
                return
            else:
                self.view.no_valid_option()
        return

    def ask_admin(self):
        self.view.ask('User: '******'Password: '******'agrego')
        else:
            if out.errno == 1062:
                self.view.error('EL ADMIN ESTA REPETIDO')
            else:
                self.view.error('NO SE PUDO AGREGAR EL ADMIN. REVISE.')
        return

    def leer_admins(self):
        out = self.model.leer_administradores()
        if type(out) == list:
            self.view.leer_admins(out)
        else:
            self.view.error('PROBLEMA AL VER ADMINISTRADORES. REVISA.')
        return

    def actualizar_admin(self):
        self.view.ask('ID Admin: ')
        id_a = input()
        out = self.model.leer_admin(id_a)
        if type(out) == tuple:
            self.view.leer_admin(out)
        else:
            if out == None:
                self.view.error('EL ADMINISTRADOR NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER ADMINISTRADOR. REVISA.')
            return
        self.view.msg(
            'Ingresa los valores a modificar (vacio para dejarlo igual):')
        whole_vals = self.ask_admin()
        fields, vals = self.update_lists(['user_admin', 'pass_admin'],
                                         whole_vals)
        vals.append(id_a)
        vals = tuple(vals)
        out = self.model.actualizar_admin(fields, vals)
        if out == True:
            self.view.ok(id_a, 'actualizado')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR EL ADMINISTRADOR')
        return

    def eliminar_admin(self):
        self.view.ask('ID Admin: ')
        id_a = input()
        count = self.model.eliminar_admin(id_a)
        if count != 0:
            self.view.ok(id_a, 'borro')
        else:
            if count == 0:
                self.view.error('EL ADMINISTRADOR NO EXISTE')
            else:
                self.view.error('PROBLEMA AL BORRAR EL ADMINISTRADOR. REVISA.')
        return
Beispiel #2
0
class Controller:
    def __init__(self):
        self.model = Model()
        self.view = View()

    def start(self):
        self.view.start()
        self.main_menu()

    def main_menu(self):
        o = '0'
        while o != '3':
            self.view.main_menu()
            self.view.option('3')
            o = input()
            if o == '1':
                self.user_menu()
            elif o == '2':
                self.admin_menu()
            elif o == '3':
                self.view.end()
            else:
                self.view.not_valid_option()
        return

    def update_lists(self, fs, vs):
        fields = []
        vals = []
        for f, v in zip(fs, vs):  #zip une de uno por uno
            if v != '':
                fields.append(f + ' = %s')
                vals.append(v)
        return fields, vals

    def admin_menu(self):
        o = '0'
        while o != '10':
            self.view.admin_menu()
            self.view.option('10')
            o = input()
            if o == '1':
                self.usuario_menu()
            elif o == '2':
                self.admins_menu()
            elif o == '3':
                self.pelicula_menu()
            elif o == '4':
                self.sala_menu()
            elif o == '5':
                self.horario_menu()
            elif o == '6':
                self.asiento_menu()
            elif o == '7':
                self.hora_peli_menu()
            elif o == '8':
                self.sala_peli_menu()
            elif o == '9':
                self.ticket_menu()
            elif o == '10':
                self.view.end()
            else:
                self.view.not_valid_option()
        return

    def user_menu(self):
        o = '0'
        while o != '10':
            self.view.user_menu()
            self.view.option('10')
            o = input()
            if o == '1':
                self.crear_usuario()
            elif o == '2':
                self.ver_sala()
            elif o == '3':
                self.leer_salas()
            elif o == '4':
                self.leer_estrenos()
            elif o == '5':
                self.leer_preestrenos()
            elif o == '6':
                self.crear_asiento()
            elif o == '7':
                self.leer_asientos_sala()
            elif o == '8':
                self.leer_horario_peliculas()
            elif o == '9':
                self.leer_costo_pelicula()
            elif o == '10':
                self.view.end()
            else:
                self.view.not_valid_option()
        return

    """
    *******************************
    *Controlador para los clientes*
    *******************************
    """

    def usuario_menu(self):
        o = '0'
        while o != '6':
            self.view.clients_menu()
            self.view.option('6')
            o = input()
            if o == '1':
                self.crear_usuario()
            elif o == '2':
                self.leer_usuario()
            elif o == '3':
                self.leer_todo_usuarios()
            elif o == '4':
                self.actualizar_usuarios()
            elif o == '5':
                self.borrar_usuario()
            elif o == '6':
                self.view.end()
            else:
                self.view.not_valid_option()
        return

    def pedir_usuario(self):
        self.view.ask('Nombre: ')
        u_nombre = input()
        self.view.ask('Apellido: ')
        u_apellidos = input()
        self.view.ask('Correo: ')
        u_correo = input()
        self.view.ask('Telefono: ')
        u_telefono = input()
        return [u_nombre, u_apellidos, u_correo, u_telefono]

    def crear_usuario(self):
        u_nombre, u_apellidos, u_correo, u_telefono = self.pedir_usuario()
        out = self.model.crear_usuario(u_nombre, u_apellidos, u_correo,
                                       u_telefono)
        if out == True:
            self.view.ok(u_nombre + ' ' + u_apellidos, 'agrego')
        else:
            self.view.error('NO SE PUDO AGREGAR EL CCLIENTE. REVISA.')
        return

    def leer_usuario(self):
        self.view.ask('ID del usuario: ')
        id_usuario = input()
        cliente = self.model.leer_un_usuario(id_usuario)
        if type(cliente) == tuple:
            self.view.show_client_header(' Datos del cliente ' + id_usuario +
                                         ' ')
            self.view.show_a_client(cliente)
            self.view.show_client_midder()
            self.view.show_client_footer()
        else:
            if cliente == None:
                self.view.error('EL USUARIO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL USUARIO: REVISA.')
        return

    def leer_todo_usuarios(self):
        clientes = self.model.leer_todo_usuarios()
        if type(clientes) == list:
            self.view.show_client_header(' Todos los clientes ')
            for cliente in clientes:
                self.view.show_a_client(cliente)
                self.view.show_client_midder()
            self.view.show_client_footer()
        else:
            self.view.error('PROBLEMA AL LEER EL USUARIO: REVISA.')
        return

    def actualizar_usuarios(self):
        self.view.ask(' ID de cliente a modificar: ')
        id_usuario = input()
        cliente = self.model.leer_un_usuario(id_usuario)
        if type(cliente) == tuple:
            self.view.show_client_header(' Datos del cliente ' + id_usuario +
                                         ' ')
            self.view.show_a_client(cliente)
            self.view.show_client_midder()
            self.view.show_client_footer()
        else:
            if cliente == None:
                self.view.error('EL CLIENTE NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL CLIENTE. REVISA.')
            return
        self.view.msg(
            'Ingresa los valores a modificar (vaciar para dejar igual):')
        whole_vals = self.pedir_usuario()
        fields, vals = self.update_lists(
            ['u_nombre', 'u_apellidos', 'u_correo', 'u_telefono'], whole_vals)
        vals.append(id_usuario)
        vals = tuple(vals)
        out = self.model.actualizar_usuarios(fields, vals)
        if out == True:
            self.view.ok(id_usuario, 'actualizo')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR EL CLIENTE. REVISA.')
        return

    def borrar_usuario(self):
        self.view.ask('Id  de cliente a borrar: ')
        id_usuario = input()
        count = self.model.borrar_usuario(id_usuario)
        if count != 0:
            self.view.ok(id_usuario, 'borro')
        else:
            if count == 0:
                self.view.error('EL CLIENTE NO EXISTE')
            else:
                self.view.error('PROBELEMA AL BORRAR EL CLIENTE. REVISA.')
        return

    """
    **************************************
    *Controlador para los administradores*
    **************************************
    """

    def admins_menu(self):
        o = '0'
        while o != '6':
            self.view.admins_menu()
            self.view.option('6')
            o = input()
            if o == '1':
                self.crear_admin()
            elif o == '2':
                self.leer_admin()
            elif o == '3':
                self.leer_todo_admin()
            elif o == '4':
                self.actualizar_admin()
            elif o == '5':
                self.borrar_admin()
            elif o == '6':
                return
            else:
                self.view.not_valid_option()
        return

    def pedir_admin(self):
        self.view.ask('Nombre: ')
        a_nombre = input()
        self.view.ask('Apellido: ')
        a_apellidos = input()
        self.view.ask('Puesto: ')
        a_posicion = input()
        self.view.ask('Correo: ')
        a_correo = input()
        self.view.ask('Telefono: ')
        a_telefono = input()
        self.view.ask('Contraseña: ')
        a_pass = input()
        return [
            a_nombre, a_apellidos, a_posicion, a_correo, a_telefono, a_pass
        ]

    def crear_admin(self):
        a_nombre, a_apellidos, a_posicion, a_correo, a_telefono, a_pass = self.pedir_admin(
        )
        out = self.model.crear_admin(a_nombre, a_apellidos, a_posicion,
                                     a_correo, a_telefono, a_pass)
        if out == True:
            self.view.ok(a_nombre + ' ' + a_apellidos, 'agrego')
        else:
            self.view.error('NO SE PUDO AGREGAR EL ADMINISTRADOR. REVISA.')
        return

    def leer_admin(self):
        self.view.ask('ID del administrador: ')
        id_admin = input()
        admin = self.model.leer_un_admin(id_admin)
        if type(admin) == tuple:
            self.view.show_admin_header(' Datos del administrador ' +
                                        id_admin + ' ')
            self.view.show_a_admin(admin)
            self.view.show_admin_midder()
            self.view.show_admin_footer()
        else:
            if admin == None:
                self.view.error('EL ADMINISTRADOR NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL ADMINISTRADOR: REVISA.')
        return

    def leer_todo_admin(self):
        admins = self.model.leer_todo_admin()
        if type(admins) == list:
            self.view.show_admin_header(' Todos los administradores ')
            for admin in admins:
                self.view.show_a_admin(admin)
                self.view.show_admin_midder()
            self.view.show_admin_footer()
        else:
            self.view.error('PROBLEMA AL LEER EL ADMINISTRADOR: REVISA.')
        return

    def actualizar_admin(self):
        self.view.ask(' ID de administrador a modificar: ')
        id_admin = input()
        admin = self.model.leer_un_admin(id_admin)
        if type(admin) == tuple:
            self.view.show_admin_header(' Datos del administrador ' +
                                        id_admin + ' ')
            self.view.show_a_admin(admin)
            self.view.show_admin_midder()
            self.view.show_admin_footer()
        else:
            if admin == None:
                self.view.error('EL ADMINISTRADOR NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL ADMINISTRADOR. REVISA.')
            return
        self.view.msg(
            'Ingresa los valores a modificar (vaciar para dejar igual):')
        whole_vals = self.pedir_admin()
        fields, vals = self.update_lists([
            'a_nombre', 'a_apellidos', 'a_posicion', 'a_correo', 'a_telefono',
            'a_pass'
        ], whole_vals)
        vals.append(id_admin)
        vals = tuple(vals)
        out = self.model.actualizar_admin(fields, vals)
        if out == True:
            self.view.ok(id_admin, 'actualizo')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR EL ADMINISTRADOR. REVISA.')
        return

    def borrar_admin(self):
        self.view.ask('Id del administrador a borrar: ')
        id_admin = input()
        count = self.model.borrar_admin(id_admin)
        if count != 0:
            self.view.ok(id_admin, 'borro')
        else:
            if count == 0:
                self.view.error('EL ADMINISTRADOR NO EXISTE')
            else:
                self.view.error(
                    'PROBELEMA AL BORRAR EL ADMINISTRADOR. REVISA.')
        return

    """
    *******************************
    *Controlador para los pelicula*
    *******************************
    """

    def pelicula_menu(self):
        o = '0'
        while o != '7':
            self.view.peliculas_menu()
            self.view.option('7')
            o = input()
            if o == '1':
                self.crear_pelicula()
            elif o == '2':
                self.leer_pelicula()
            elif o == '3':
                self.leer_todo_peliculas()
            elif o == '4':
                self.leer_lenguaje_pelicula()
            elif o == '5':
                self.actualizar_pelicula()
            elif o == '6':
                self.borrar_pelicula()
            elif o == '7':
                return
            else:
                self.view.not_valid_option()
        return

    def pedir_pelicula(self):
        self.view.ask('Nombre: ')
        nombre = input()
        self.view.ask('Lenguaje: ')
        lenguaje = input()
        self.view.ask('Sinopsis: ')
        sinopsis = input()
        return [nombre, lenguaje, sinopsis]

    def crear_pelicula(self):
        nombre, lenguaje, sinopsis = self.pedir_pelicula()
        out = self.model.crear_pelicula(nombre, lenguaje, sinopsis)
        if out == True:
            self.view.ok(nombre + ' ', 'agrego')
        else:
            self.view.error('NO SE PUDO AGREGAR LA PELICULA. REVISA.')
        return

    def leer_pelicula(self):
        self.view.ask('ID del pelicula: ')
        id_pelicula = input()
        pelicula = self.model.leer_pelicula(id_pelicula)
        if type(pelicula) == tuple:
            self.view.show_movie_header(' Datos de la pelicula ' +
                                        id_pelicula + ' ')
            self.view.show_a_movie(pelicula)
            self.view.show_movie_midder()
            self.view.show_movie_footer()
        else:
            if pelicula == None:
                self.view.error('LA PELICULA NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER LA PELICULA: REVISA.')
        return

    def leer_todo_peliculas(self):
        peliculas = self.model.leer_todas_peliculas()
        if type(peliculas) == list:
            self.view.show_admin_header(' Todos las peliculas ')
            for pelicula in peliculas:
                self.view.show_a_movie(pelicula)
                self.view.show_movie_midder()
            self.view.show_movie_footer()
        else:
            self.view.error('PROBLEMA AL LEER LA PELICULA: REVISA.')
        return

    def leer_lenguaje_pelicula(self):
        self.view.ask('ID del pelicula: ')
        id_pelicula = input()
        pelicula = self.model.lenguaje_pelicula(id_pelicula)
        if type(pelicula) == tuple:
            self.view.show_movie_header(' Lenguaje de la pelicula ' +
                                        id_pelicula + ' ')
            self.view.show_movie_languaje(pelicula)
            self.view.show_movie_midder()
            self.view.show_movie_footer()
        else:
            if pelicula == None:
                self.view.error('LA PELICULA NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER LA PELICULA: REVISA.')
        return

    def actualizar_pelicula(self):
        self.view.ask(' ID de pelicula a modificar: ')
        id_pelicula = input()
        pelicula = self.model.leer_pelicula(id_pelicula)
        if type(pelicula) == tuple:
            self.view.show_movie_header(' Datos de la pelicula ' +
                                        id_pelicula + ' ')
            self.view.show_a_movie(pelicula)
            self.view.show_movie_midder()
            self.view.show_movie_footer()
        else:
            if pelicula == None:
                self.view.error('LA PELICULA NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER LA PELICULA. REVISA.')
            return
        self.view.msg(
            'Ingresa los valores a modificar (vaciar para dejar igual):')
        whole_vals = self.pedir_pelicula()
        fields, vals = self.update_lists(['nombre', 'lenguaje', 'sinopsis'],
                                         whole_vals)
        vals.append(id_pelicula)
        vals = tuple(vals)
        out = self.model.actualizar_pelicula(fields, vals)
        if out == True:
            self.view.ok(id_pelicula, 'actualizo')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR LA PELICULA. REVISA.')
        return

    def borrar_pelicula(self):
        self.view.ask('Id de la pelicula a borrar: ')
        id_pelicula = input()
        count = self.model.borrar_pelicula(id_pelicula)
        if count != 0:
            self.view.ok(id_pelicula, 'borro')
        else:
            if count == 0:
                self.view.error('LA PELICULA NO EXISTE')
            else:
                self.view.error('PROBELEMA AL BORRAR LA PELICULA. REVISA.')
        return

    """
    ****************************
    *Controlador para las Salas*
    ****************************
    """

    def sala_menu(self):
        o = '0'
        while o != '7':
            self.view.salas_menu()
            self.view.option('7')
            o = input()
            if o == '1':
                self.crear_sala()
            elif o == '2':
                self.leer_sala()
            elif o == '3':
                self.leer_salas()
            elif o == '4':
                self.leer_lenguaje_pelicula()
            elif o == '5':
                self.actualizar_sala()
            elif o == '6':
                self.borrar_sala()
            elif o == '7':
                return
            else:
                self.view.not_valid_option()
        return

    def pedir_sala(self):
        self.view.ask('No. Sala: ')
        no_sala = input()
        self.view.ask('Filas (1-13): ')
        fila = input()
        self.view.ask('Pasillos (1-11): ')
        pasillo = input()
        self.view.ask('Tipo (3D, VIP, Normal): ')
        tipo = input()
        return [no_sala, fila, pasillo, tipo]

    def crear_sala(self):
        no_sala, fila, pasillo, tipo = self.pedir_sala()
        out = self.model.crear_sala(no_sala, fila, pasillo, tipo)
        if out == True:
            self.view.ok(no_sala + ' ', 'agrego')
        else:
            self.view.error('NO SE PUDO AGREGAR LA SALA. REVISA.')
        return

    def leer_sala(self):
        self.view.ask('No. de la sala: ')
        no_sala = input()
        sala = self.model.leer_sala(no_sala)
        if type(sala) == tuple:
            self.view.show_sala_header(' Datos de la sala ' + no_sala + ' ')
            self.view.show_sala(sala)
            self.view.show_sala_midder()
            self.view.show_sala_footer()
        else:
            if sala == None:
                self.view.error('LA SALA NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER LA SALA: REVISA.')
        return

    def leer_salas(self):
        salas = self.model.leer_salas()
        if type(salas) == list:
            self.view.show_sala_header(' Todos las salas ')
            for sala in salas:
                self.view.show_sala(sala)
                self.view.show_sala_midder()
            self.view.show_sala_footer()
        else:
            self.view.error('PROBLEMA AL LEER LA SALA: REVISA.')
        return

    def actualizar_sala(self):
        self.view.ask(' No. de sala a modificar: ')
        no_sala = input()
        sala = self.model.leer_sala(no_sala)
        if type(sala) == tuple:
            self.view.show_sala_header(' Datos de la sala ' + no_sala + ' ')
            self.view.show_sala(sala)
            self.view.show_sala_midder()
            self.view.show_sala_footer()
        else:
            if sala == None:
                self.view.error('LA SALA NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER LA SALA. REVISA.')
            return
        self.view.msg(
            'Ingresa los valores a modificar (vaciar para dejar igual):')
        whole_vals = self.pedir_sala()
        fields, vals = self.update_lists(
            ['no_sala', 'pasillo', 'fila', 'tipo'], whole_vals)
        vals.append(no_sala)
        vals = tuple(vals)
        out = self.model.actualizar_sala(fields, vals)
        if out == True:
            self.view.ok(no_sala, 'actualizo')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR LA SALA. REVISA.')
        return

    def borrar_sala(self):
        self.view.ask('Id de la sala a borrar: ')
        no_sala = input()
        count = self.model.borrar_sala(no_sala)
        if count != 0:
            self.view.ok(no_sala, 'borro')
        else:
            if count == 0:
                self.view.error('LA SALA NO EXISTE')
            else:
                self.view.error('PROBELEMA AL BORRAR LA SALA. REVISA.')
        return

    """
    *******************************
    *Controlador para los horarios*
    *******************************
    """

    def horario_menu(self):
        o = '0'
        while o != '6':
            self.view.horario_menu()
            self.view.option('6')
            o = input()
            if o == '1':
                self.crear_horario()
            elif o == '2':
                self.leer_horario()
            elif o == '3':
                self.leer_estrenos()
            elif o == '4':
                self.leer_preestrenos()
            elif o == '5':
                self.borrar_horario()
            elif o == '6':
                return
            else:
                self.view.not_valid_option()
        return

    def crear_horario(self):
        self.view.ask('Horario (yyy-mm-dd): ')
        id_horario = input()
        self.view.ask('ID Administrador: ')
        id_admin = input()
        self.view.ask('ID Pelicula: ')
        id_pelicula = input()
        self.view.ask('Estrenos: ')
        estrenos = input()
        self.view.ask('Preestrenos: ')
        prestrenos = input()
        out = self.model.crear_horario(id_horario, id_admin, id_pelicula,
                                       estrenos, prestrenos)
        if out == True:
            self.view.ok(id_horario + ' ', 'agrego')
        else:
            self.view.error('NO SE PUDO AGREGAR EL HORARIO. REVISA.')
        return

    def leer_horario(self):
        self.view.ask('ID del Horario: ')
        id_horario = input()
        horario = self.model.leer_horario(id_horario)
        if type(horario) == tuple:
            self.view.show_date_header(' Datos de la fecha ' + id_horario +
                                       ' ')
            self.view.show_date(horario)
            self.view.show_date_midder()
            self.view.show_date_footer()
        else:
            if horario == None:
                self.view.error('LA FECHA NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER LA FECHA: REVISA.')
        return

    def leer_estrenos(self):
        estrenos = self.model.leer_estrenos()
        if type(estrenos) == list:
            self.view.show_date_header(' Todos los horarios ')
            for estreno in estrenos:
                self.view.show_estrenos(estreno)
                self.view.show_date_midder()
            self.view.show_date_footer()
        else:
            self.view.error('PROBLEMA AL LEER LAS PELICULAS: REVISA.')
        return

    def leer_preestrenos(self):
        estrenos = self.model.leer_prestrenos()
        if type(estrenos) == list:
            self.view.show_date_header(' Todos los estrenos ')
            for estreno in estrenos:
                self.view.show_estrenos(estreno)
                self.view.show_date_midder()
            self.view.show_date_footer()
        else:
            self.view.error('PROBLEMA AL LEER LOS ESTRENOS: REVISA.')
        return

    def actualizar_horario(self):
        self.view.ask('ID de la fecha a modificar: ')
        id_horario = input()
        horario = self.model.leer_horario(id_horario)
        if type(horario) == tuple:
            self.view.show_date_header(' Datos del horario ' + id_horario +
                                       ' ')
            self.view.show_date(horario)
            self.view.show_date_footer()
        else:
            if horario == None:
                self.view.error('EL HORARIO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL HORARIO. REVISA.')
            return
        self.view.msg(
            'Ingresa los valores a morificar (vacio para dejarlo igual): ')
        self.view.ask('Fecha (yy/mm/dd):')
        id_horario = input()
        self.view.ask('Administrador: ')
        id_admin = input()
        self.view.ask('ID Pelicula: ')
        id_pelicula = input()
        self.view.ask('Estrenos: ')
        estrenos = input()
        self.view.ask('Preestrenos: ')
        prestrenos = input()

        whole_vals = [id_horario, id_admin, id_pelicula, estrenos, prestrenos]
        fields, vals = self.update_lists([
            'id_horario', 'id_admin', 'id_pelicula', 'estrenos', 'prestrenos'
        ], whole_vals)
        vals.append(id_horario)
        vals = tuple(vals)
        out = self.model.actualizar_horario(fields, vals)
        if out == True:
            self.view.ok(id_horario, 'actualizo')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR EL HORARIO. REVISA.')
        return

    def borrar_horario(self):
        self.view.ask('Id del horario a borrar: ')
        id_horario = input()
        self.view.ask('Id de la pelicula a borrar: ')
        id_pelicula = input()
        count = self.model.borrar_horario(id_horario, id_pelicula)
        if count != 0:
            self.view.ok(id_horario, 'borro')
        else:
            if count == 0:
                self.view.error('EL HORARIO NO EXISTE')
            else:
                self.view.error('PROBELEMA AL BORRAR. REVISA.')
        return

    """
    *******************************
    *Controlador para los asientos*
    *******************************
    """

    def asiento_menu(self):
        o = '0'
        while o != '5':
            self.view.asiento_menu()
            self.view.option('5')
            o = input()
            if o == '1':
                self.crear_asiento()
            elif o == '2':
                self.leer_asientos_usuario()
            elif o == '3':
                self.leer_asientos_sala()
            #elif o == '5':
            #    self.actualizar_pelicula()
            elif o == '4':
                self.borrar_asiento()
            elif o == '5':
                return
            else:
                self.view.not_valid_option()
        return

    def pedir_asiento(self):
        self.view.ask('Pasillo: ')
        pasillo = input()
        self.view.ask('Filas: ')
        fila = input()
        self.view.ask('id_usuario: ')
        id_usuario = input()
        self.view.ask('No. Sala: ')
        no_sala = input()
        self.view.ask('Tipo (Ocupado, Apartado): ')
        asiento = input()
        return [pasillo, fila, id_usuario, no_sala, asiento]

    def pedir_asiento_sala(self):
        self.view.ask('Pasillo: ')
        pasillo = input()
        self.view.ask('Filas: ')
        fila = input()
        self.view.ask('Tipo (Ocupado, Apartado): ')
        asiento = input()
        return [pasillo, fila, asiento]

    def crear_asiento(self):
        pasillo, fila, id_usuario, no_sala, asiento = self.pedir_asiento()
        out = self.model.crear_asiento(pasillo, fila, id_usuario, no_sala,
                                       asiento)
        if out == True:
            self.view.ok(pasillo + '-' + fila, 'agrego')
        else:
            self.view.error('NO SE PUDO AGREGAR EL ASIENTO. REVISA.')
        return

    def leer_asientos_usuario(self):
        self.view.ask('ID de Usuario: ')
        id_usuario = input()
        self.view.ask('No. Sala: ')
        no_sala = input()
        asientos = self.model.leer_asientos_usuario(id_usuario, no_sala)
        if type(asientos) == list:
            self.view.show_date_header(' Asientos del usuario ')
            for asiento in asientos:
                self.view.show_asiento_user(asiento)
                self.view.show_asiento_midder()
            self.view.show_asiento_footer()
        else:
            self.view.error('PROBLEMA AL LEER LOS ASIENTOS: REVISA.')
        return

    def leer_asientos_sala(self):
        self.view.ask('No. Sala: ')
        no_sala = input()
        asientos = self.model.leer_asientos_sala(no_sala)
        if type(asientos) == list:
            self.view.show_date_header(' Asientos de la sala ')
            for asiento in asientos:
                self.view.show_asiento_sala(asiento)
                self.view.show_asiento_midder()
            self.view.show_asiento_footer()
        else:
            self.view.error('PROBLEMA AL LEER LOS ASIENTOS: REVISA.')
        return

    def actualizar_asiento(self):
        self.view.ask('Pasillo a modificar: ')
        pasillo = input()
        self.view.ask('Fila a modificar: ')
        fila = input()
        self.view.ask('Sala a modificar: ')
        no_sala = input()
        sala = self.model.leer_asientos_sala(no_sala)
        if type(sala) == list:
            self.view.show_asiento_header(' Datos del asiento ' + fila + '- ' +
                                          pasillo + ' ')
            self.view.show_asiento(sala)
            self.view.show_asiento_midder()
            self.view.show_asiento_footer()
        else:
            if sala == None:
                self.view.error('EL ASIENTO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL ASIENTO. REVISA.')
            return
        self.view.msg(
            'Ingresa los valores a modificar (vaciar para dejar igual):')
        whole_vals = self.pedir_asiento_sala()
        fields, vals = self.update_lists(['pasillo', 'fila', 'asiento'],
                                         whole_vals)
        vals.append(no_sala)
        vals = list(vals)
        out = self.model.actualizar_asiento(fields, vals)
        if out == True:
            self.view.ok(no_sala, 'actualizo')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR EL ASIENTO. REVISA.')
        return

    def borrar_asiento(self):
        self.view.ask('Pasillo de usuario a borrar (A-M): ')
        pasillo = input()
        self.view.ask('Fila de usuario a borrar (1-11): ')
        fila = input()
        self.view.ask('Sala de usuario a borrar: ')
        no_sala = input()
        count = self.model.borrar_asiento(pasillo, fila, no_sala)
        if count != 0:
            self.view.ok(pasillo + ' - ' + fila + ' ', 'borro')
        else:
            if count == 0:
                self.view.error('EL ASIENTO NO EXISTE')
            else:
                self.view.error('PROBELEMA AL BORRAR EL ASIENTO. REVISA.')
        return

    """
    *****************************************
    *Controlador para los horarios_peliculas*
    *****************************************
    """

    def hora_peli_menu(self):
        o = '0'
        while o != '5':
            self.view.hora_peli_menu()
            self.view.option('5')
            o = input()
            if o == '1':
                self.crear_horario_pelicula()
            elif o == '2':
                self.leer_horario_peliculas()
            elif o == '3':
                self.leer_peliculas_fecha()
            #elif o == '5':
            #    self.actualizar_pelicula()
            elif o == '4':
                self.borrar_horario_pelicula()
            elif o == '5':
                return
            else:
                self.view.not_valid_option()
        return

    def pedir_horario_peli(self):
        self.view.ask('ID horario (yyyy-mmm-dd): ')
        id_horario = input()
        self.view.ask('ID pelicula: ')
        id_pelicula = input()
        self.view.ask('Hora: (hh:mm): ')
        hora = input()
        #hora = time.strftime("%I:%M")
        #print(hora)
        return [id_horario, id_pelicula, hora]

    def crear_horario_pelicula(self):
        id_horario, id_pelicula, hora = self.pedir_horario_peli()
        out = self.model.crear_horario_pelicula(id_horario, id_pelicula, hora)
        if out == True:
            self.view.ok(id_horario + '-' + hora, 'agrego')
        else:
            self.view.error('NO SE PUDO AGREGAR EL HORARIO-PELICULA. REVISA.')
        return

    def leer_horario_peliculas(self):
        peliculas = self.model.leer_horario_peliculas()
        if type(peliculas) == list:
            self.view.show_hora_peli_header(' Todos los horarios-peliculas ')
            for pelicula in peliculas:
                self.view.show_hora_peli(pelicula)
                self.view.show_hora_peli_midder()
            self.view.show_hora_peli_footer()
        else:
            self.view.error('PROBLEMA AL LEER HORARIO PELICULAS: REVISA.')
        return

    def leer_peliculas_fecha(self):
        self.view.ask('ID horario (yyyy-mmm-dd): ')
        id_horario = input()
        peliculas = self.model.leer_peliculas_fecha(id_horario)
        if type(peliculas) == list:
            self.view.show_hora_peli_header(' Todos los horarios-peliculas ')
            for pelicula in peliculas:
                self.view.show_hora_peli(pelicula)
                self.view.show_hora_peli_midder()
            self.view.show_hora_peli_footer()
        else:
            self.view.error('PROBLEMA AL LEER HORARIO PELICULAS: REVISA.')
        return

    def borrar_horario_pelicula(self):
        self.view.ask('Id del horario-pelicula a borrar: ')
        id_hora_peli = input()
        count = self.model.borrar_horario_pelicula(id_hora_peli)
        if count != 0:
            self.view.ok(id_hora_peli, 'borro')
        else:
            if count == 0:
                self.view.error('EL HORARIO NO EXISTE')
            else:
                self.view.error('PROBELEMA AL BORRAR. REVISA.')
        return

    """
    ************************************
    *Controles para los salas_peliculas*
    ************************************
    """

    def sala_peli_menu(self):
        o = '0'
        while o != '4':
            self.view.sala_peli_menu()
            self.view.option('4')
            o = input()
            if o == '1':
                self.crear_sala_pelicula()
            elif o == '2':
                self.leer_costo_pelicula()
            elif o == '3':
                self.borrar_sala_peli()
            #elif o == '5':
            #    self.actualizar_pelicula()
            elif o == '4':
                return
            else:
                self.view.not_valid_option()
        return

    def pedir_sala_pelicula(self):
        self.view.ask('No. Sala: ')
        no_sala = input()
        self.view.ask('ID Pelicula: ')
        id_pelicula = input()
        self.view.ask('Costo: ')
        costo = input()
        return [no_sala, id_pelicula, costo]

    def crear_sala_pelicula(self):
        no_sala, id_pelicula, costo = self.pedir_sala_pelicula()
        out = self.model.crear_sala_pelicula(no_sala, id_pelicula, costo)
        if out == True:
            self.view.ok(no_sala + '-' + id_pelicula, 'agrego')
        else:
            self.view.error('NO SE PUDO AGREGAR EL ASIENTO. REVISA.')
        return

    def leer_costo_pelicula(self):
        self.view.ask('ID Pelicula: ')
        id_pelicula = input()
        peliculas = self.model.leer_precio_pelicula(id_pelicula)
        if type(peliculas) == list:
            self.view.show_sala_peli_header(' Datos de la pelicula ' +
                                            id_pelicula + ' ')
            for pelicula in peliculas:
                self.view.show_costo_peli(pelicula)
                self.view.show_sala_peli_midder()
            self.view.show_sala_peli_footer()
        else:
            self.view.error('PROBLEMA AL LEER LA PELICULA: REVISA.')
        return

    def borrar_sala_peli(self):
        self.view.ask('No de sala a borrar: ')
        no_sala = input()
        self.view.ask('ID  de pelicula a borrar: ')
        id_pelicula = input()
        count = self.model.borrar_sala_peli(no_sala, id_pelicula)
        if count != 0:
            self.view.ok(no_sala + ' - ' + id_pelicula + ' ', 'borro')
        else:
            if count == 0:
                self.view.error('SALA-PELICULA NO EXISTE')
            else:
                self.view.error('PROBELEMA AL BORRAR SALA-PELICULA. REVISA.')
        return

    """
    ****************************
    *Controles para los tickets*
    ****************************
    """

    def ticket_menu(self):
        o = '0'
        while o != '4':
            self.view.ticket_menu()
            self.view.option('4')
            o = input()
            if o == '1':
                self.crear_ticket()
            elif o == '2':
                self.leer_ticket()
            #elif o == '5':
            #    self.actualizar_pelicula()
            elif o == '3':
                self.borrar_pelicula()
            elif o == '4':
                return
            else:
                self.view.not_valid_option()
        return

    def crear_ticket(self):
        self.view.ask('ID del usuario: ')
        id_usuario = input()
        self.view.ask('ID de la pelicula: ')
        id_pelicula = input()
        self.view.ask('No. sala: ')
        no_sala = input()
        total_asientos = len(
            self.model.leer_asientos_usuario(id_usuario, no_sala))
        costo = self.model.leer_precio_P_S(id_pelicula, no_sala)
        total_pago = int(total_asientos * float(costo[1]))
        out = self.model.crear_ticket(id_usuario, total_asientos, total_pago)

        if out == True:
            self.view.ok(id_pelicula, 'pago')
        else:
            self.view.error('NO SE PUDO PAGAR. REVISA.')
        return

    def leer_ticket(self):
        self.view.ask('ID del Usuario: ')
        id_usuario = input()
        tickets = self.model.leer_ticket_usuario(id_usuario)
        if type(tickets) == list:
            self.view.show_ticket_header(' Datos de el duario ' + id_usuario +
                                         ' ')
            for ticket in tickets:
                self.view.show_ticket(ticket)
                self.view.show_ticket_midder()
            self.view.show_ticket_footer()
        else:
            self.view.error('PROBLEMA AL LEER EL TICKET: REVISA.')
        return

    def borrar_ticket(self):
        self.view.ask('ID del ticket: ')
        id_ticket = input()
        count = self.model.borrar_ticket(id_ticket)
        if count != 0:
            self.view.ok(id_ticket, 'borro')
        else:
            if count == 0:
                self.view.error('EL TICKET NO EXISTE')
            else:
                self.view.error('PROBELEMA AL BORRAR EL TICKET. REVISA.')
        return

    def ver_sala(self):
        self.view.ask('No. Sala: ')
        no_sala = input()
        a = [
            ' ', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
            'M'
        ]
        b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

        u = self.model.leer_asientos_sala(no_sala)
        s = self.model.leer_sala(no_sala)
        print()
        print('***********', s[3], '***********')
        print()
        for i in a[s[1]:0:-1]:
            print(i + " |", end="")
            for j in b[0:s[2]]:
                aux = int(0)
                for f in range(len(u)):
                    if ((i, j, 'ocupado') == u[f]):
                        print(' O  ', end="")
                        aux += 1
                    elif ((i, j, 'apartado') == u[f]):
                        print(' A  ', end="")
                        aux += 1
                if (aux):
                    continue
                else:
                    print(' L  ', end="")
            print()

        print("    ", end="")
        for i in b[0:s[2]]:
            print(i, "  ", end="")
        print()