Ejemplo n.º 1
0
def app():
    try:
        print('''
        ==========================
            Biblioteca Virtual
        ==========================
        ''')
        menu_principal = ["Usuarios", "Libros", "Salir"]
        respuesta = Menu(menu_principal).show()
        print(respuesta)
        if respuesta == 1:
            usuario = UsuarioController()
            usuario.menu()
            if usuario.salir:
                app()
        elif respuesta == 2:
            libro = LibroController()
            libro.menu()
            if libro.salir:
                app()

        print("\n Gracias por utilizar el sistema \n")
    except KeyboardInterrupt:
        print('\n Se interrumpio la aplicación')
    except Exception as e:
        print(f'{str(e)}')
Ejemplo n.º 2
0
def cambiar_contrasena():
    if request.method == "GET":
        return UsuarioController().get_cambiar_contrasena_coordinador()
    contrasena_a = request.form.get('contrasena_a', None)
    contrasena_n = request.form.get('contrasena_n', None)
    contrasena_nc = request.form.get('contrasena_nc', None)
    return UsuarioController().cambiar_contrasena(contrasena_a, contrasena_n,
                                                  contrasena_nc)
Ejemplo n.º 3
0
def editar_usuario(id_usuario):
    if request.method == "GET":
        return UsuarioController().get_editar_usuario(id_usuario)
    nombres = request.form.get('nombres', None)
    apellidos = request.form.get('apellidos', None)
    cedula = request.form.get('cedula', None)
    email = request.form.get('email', None)
    tipo_usuario = request.form.get('tipo_usuario', 0)
    id = id_usuario
    return UsuarioController().editar_usuario(nombres, apellidos, cedula,
                                              email, tipo_usuario, id)
Ejemplo n.º 4
0
def registro_usuario():
    if request.method == "GET":
        return UsuarioController().get_registro()
    codigo = request.form.get('codigo', None)
    nombres = request.form.get('nombres', None)
    apellidos = request.form.get('apellidos', None)
    cedula = request.form.get('cedula', None)
    email = request.form.get('email', None)
    contrasena = request.form.get('contrasena', None)
    tipo_usuario = request.form.get('tipo_usuario', 0)
    return UsuarioController().crear_usuario(codigo,
        nombres, apellidos, cedula, email, contrasena, tipo_usuario)
Ejemplo n.º 5
0
def listar_usuarios():
    pagina = request.args.get('pagina', 1)
    codigo = request.args.get('codigo', "")
    nombre = request.args.get('nombres', "")
    cedula = request.args.get('cedula', "")
    apellidos = request.args.get('apellidos', "")
    return UsuarioController().get_lista_usuarios(
        pagina, codigo, nombre, cedula, apellidos)
Ejemplo n.º 6
0
def eliminar_usuario(id_usuario):
    return UsuarioController().eliminar_usuario(id_usuario)
Ejemplo n.º 7
0
class LibroController:
    def __init__(self):
        self.libro = Libro()
        self.usuario = Usuario()
        self.prestamo = Prestamo()
        self.usuario_controller = UsuarioController()
        self.salir = False

    def menu(self):
        try:
            while True:
                print('''
                ==================
                    Libros
                ==================
                ''')
                lista_menu = ["Listar", "Buscar", "Crear", "Salir"]
                respuesta = Menu(lista_menu).show()

                if respuesta == 1:
                    self.all_libros()
                elif respuesta == 2:
                    self.search_libro()
                elif respuesta == 3:
                    self.insert_libro()
                else:
                    self.salir = True
                    break
        except Exception as e:
            print(f'{str(e)}')

    def all_libros(self):
        try:
            print('''
            ==========================
                Listar Libros
            ==========================
            ''')
            libros = self.libro.get_libros('id_libro')
            print(
                print_table(libros,
                            ['ID', 'Codigo', 'Titulo', 'Editorial', 'Stock']))
            input('\nPresiona una tecla para continuar...')
        except Exception as e:
            print(f'{str(e)}')

    def search_libro(self):
        print('''
        ========================
            Buscar Libro
        ========================
        ''')
        try:
            cod_libro = input_data("Ingrese el CODIGO del libro >> ")
            libro = self.libro.get_libro({'codigo': cod_libro})
            print(
                print_table(libro,
                            ['ID', 'Codigo', 'Titulo', 'Editorial', 'Stock']))

            if libro:
                if question(
                        '¿Deseas dar mantenimiento, alquilar o devolver el libro?'
                ):
                    opciones = [
                        'Editar', 'Eliminar', 'Alquilar',
                        'Registrar Devolucion', 'Salir'
                    ]
                    respuesta = Menu(opciones).show()
                    if respuesta == 1:
                        self.update_libro(cod_libro)
                    elif respuesta == 2:
                        self.delete_libro(cod_libro)
                    elif respuesta == 3:
                        self.alquilar_libro(cod_libro)
                    elif respuesta == 4:
                        self.devolucion_libro(cod_libro)
        except Exception as e:
            print(f'{str(e)}')
        input('\nPresiona una tecla para continuar...')

    def devolucion_libro(self, cod_libro):

        #Obtiene Libro
        libro = self.libro.get_libro({'codigo': cod_libro})

        self.usuario_controller.all_usuarios()

        while True:
            codigo = input_data(
                'Ingrese el Codigo del Usuario que Alquilo el libro >> ')

            #Obtiene User
            user = self.usuario.get_usuario({'codigo': codigo})

            if user:
                prestamos = self.prestamo.get_prestamo({
                    'id_usuario': user[0],
                    'id_libro': libro[0],
                    'devuelto': False
                })

                print('''
            ======================================
                Lista de Prestamos del Usuario
            ======================================
            ''')

                print(
                    print_table(prestamos, [
                        'ID Prestamo', 'ID Libro', 'ID Usuario',
                        'Fecha Prestamo', 'Fecha Devolucion', 'Devuelto'
                    ]))
                input('\nPresiona una tecla para continuar...')

                while True:
                    id_prestamo = input_data(
                        'Ingrese el Id del Prestamo que desea registrar la devolucion >> ',
                        'int')

                    prest = self.prestamo.get_prestamo(
                        {'id_prestamo': id_prestamo})

                    if prest:
                        now = datetime.now()
                        fecha_devolucion = str(now.year) + '-' + str(
                            now.month) + '-' + str(now.day) + ' ' + str(
                                now.hour) + ':' + str(now.minute) + ':' + str(
                                    now.second)

                        self.prestamo.update_prestamo(
                            {'id_prestamo': id_prestamo}, {
                                'fecha_devolucion': fecha_devolucion,
                                'devuelto': True
                            })

                        self.update_stock_of_devolucion_libro_by_codlibro(
                            cod_libro)

                        print(f'''
                    ==========================================================================
                        Libro {libro[2]} Devuelto por {user[4]} {user[5]} {user[6]} con Exito
                    ==========================================================================
                    ''')
                        prestamos_2 = self.prestamo.get_prestamo({
                            'id_usuario':
                            user[0],
                            'id_libro':
                            libro[0],
                        })

                        print(
                            print_table(prestamos_2, [
                                'ID Prestamo', 'ID Libro', 'ID Usuario',
                                'Fecha Prestamo', 'Fecha Devolucion',
                                'Devuelto'
                            ]))

                        break
                break

    def alquilar_libro(self, cod_libro):

        if (self.valida_disponibilidad_by_codlibro(cod_libro)):

            print(f'\n Libro Disponible para Alquiler \n')

            #Obtiene Libro
            libro = self.libro.get_libro({'codigo': cod_libro})

            self.usuario_controller.all_usuarios()
            while True:
                codigo = input_data(
                    'Ingrese el Codigo de uno de los Usuario que Alquilara del libro >> '
                )

                #Obtiene User
                user = self.usuario.get_usuario({'codigo': codigo})

                if user:
                    now = datetime.now()
                    fecha_prestamo = str(now.year) + '-' + str(
                        now.month) + '-' + str(now.day) + ' ' + str(
                            now.hour) + ':' + str(now.minute) + ':' + str(
                                now.second)

                    self.prestamo.insert_prestamo({
                        'id_usuario': user[0],
                        'id_libro': libro[0],
                        'fecha_prestamo': fecha_prestamo,
                        'devuelto': False
                    })

                    self.update_stock_of_alquiler_libro_by_codlibro(cod_libro)

                    print(f'''
              ==========================================================================
                  Libro {libro[2]} alquilado a {user[4]} {user[5]} {user[6]} con Exito
              ==========================================================================
              ''')
                    break
        else:
            print('''
          ================================
              Libro sin Stock
          ================================
          ''')

    def insert_libro(self):
        titulo = input_data('Ingrese el titulo del libro >> ')
        editorial = input_data('Ingrese la editorial del libro >> ')
        stock = input_data('Ingrese el Stock del libro >> ', 'int')
        codigo = genera_codigo_by_texto(titulo)
        self.libro.insert_libro({
            'codigo': codigo,
            'titulo': titulo,
            'editorial': editorial,
            'stock': stock
        })
        print('''
        ================================
            Nuevo libro agregado
        ================================
        ''')
        self.all_libros()

    def update_libro(self, cod_libro):
        titulo = input_data('Ingrese el Nuevo titulo del libro >> ')
        editorial = input_data('Ingrese la Nueva editorial del libro >> ')
        stock = input_data('Ingrese el nuevo Stock del libro >> ', 'int')
        self.libro.update_libro({'codigo': cod_libro}, {
            'titulo': titulo,
            'editorial': editorial,
            'stock': stock
        })
        print('''
        ============================
            Libro Actualizado
        ============================
        ''')

    def delete_libro(self, cod_libro):
        self.libro.delete_libro({'codigo': cod_libro})
        print('''
        =========================
            Libro Eliminado
        =========================
        ''')

    def update_stock_by_codlibro(self, cod_libro, stock):
        self.libro.update_libro({'codigo': cod_libro}, {'stock': stock})
        return True

    def obtiene_stock_by_codlibro(self, cod_libro):

        libro = self.libro.get_libro({'codigo': cod_libro})

        if libro:
            return libro[4]

        return 0

    def valida_disponibilidad_by_codlibro(self, cod_libro):

        stock = int(self.obtiene_stock_by_codlibro(cod_libro))

        if stock > 0:
            return True

        return False

    def update_stock_of_alquiler_libro_by_codlibro(self, cod_libro):

        if self.valida_disponibilidad_by_codlibro(cod_libro):
            stock = int(self.obtiene_stock_by_codlibro(cod_libro))
            self.update_stock_by_codlibro(cod_libro, stock - 1)
            return True

        return False

    def update_stock_of_devolucion_libro_by_codlibro(self, cod_libro):

        stock = int(self.obtiene_stock_by_codlibro(cod_libro))
        self.update_stock_by_codlibro(cod_libro, stock + 1)
        return True
Ejemplo n.º 8
0
 def __init__(self):
     self.libro = Libro()
     self.usuario = Usuario()
     self.prestamo = Prestamo()
     self.usuario_controller = UsuarioController()
     self.salir = False