示例#1
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
示例#2
0
class UsuariosController:
    def __init__(self):
        self.usuario = Usuario()
        self.libro = Libros()
        self.salir = False

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

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

    def all_usuarios(self):
        print('''
        ==========================
               Listar Usuario
        ==========================
        ''')
        usuarios = self.usuario.get_usuarios('id_usuario')
        print(
            print_table(usuarios,
                        ['dni_usuario', 'id_usuario', 'nombre_usuario']))
        input('\nPresiona una tecla para continuar...')

    def search_usuario(self):
        print('''
        ========================
              Buscar Usuario
        ========================
        ''')
        try:
            dni_usuario = input_data("Ingrese el DNI del usuario >> ", "int")
            usuario = self.usuario.get_usuario({'dni_usuario': dni_usuario})
            print(print_table(usuario, ['id_usuario', 'nombre_usuario']))

            ###### DESCONOCIMIENTO DE LIBRO ######
            ######################################

            if libro:
                if question('¿Deseas dar mantenimiento al libro?'):
                    opciones = [
                        'Asignar Curso', 'Editar Profesor',
                        'Eliminar profesor', 'Salir'
                    ]
                    respuesta = Menu(opciones).show()
                    if respuesta == 1:
                        pass
                    elif respuesta == 2:
                        self.update_profesor(profesor_id)
                    elif respuesta == 3:
                        pass
        except Exception as e:
            print(f'{str(e)}')
        input('\nPresiona una tecla para continuar...')

###### DESCONOCIMIENTO DE LIBRO ######
######################################

    def insert_usuario(self):
        dni_usuario = input_data('Ingrese el DNI del usuario >> ', 'int')
        id_usuario = uuid.uuid4().hex[:8]
        nombre_usuario = input_data('Ingrese el nombre del usuario >> ')
        self.usuario.insert_usuario({
            'dni_usuario': dni_usuario,
            'id_usuario': id_usuario,
            'nombre_usuario': nombre_usuario
        })
        print('''
        ==================================
               Nuevo usuario agregado
        ==================================
        ''')
        self.all_usuarios()

    def update_usuario(self, dni_usuario):
        id_usuario = input_data('Ingrese el nuevo ID asignado al usuario >> ',
                                'int')
        nombre_usuario = input_data('Ingrese el nombre del usuario >> ')
        self.usuario.update_libro({'dni_usuario': dni_usuario}, {
            'id_usuario': id_usuario,
            'nombre_usuario': nombre_usuario
        })
        print('''
        ==============================
              Usuario Actualizado
        ==============================
        ''')
示例#3
0
class UsuarioController:
    def __init__(self):
        self.usuario = Usuario()
        self.salir = False

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

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

    def all_usuarios(self):
        try:
            print('''
            ==========================
                Listar Usuarios
            ==========================
            ''')
            usuarios = self.usuario.get_usuarios('id_usuario')
            print(
                print_table(usuarios, [
                    'ID', 'Tipo Doc', 'Num Doc', 'Codigo', 'Nombre',
                    'Ap. Paterno', 'Ap. Materno'
                ]))
            input('\nPresiona una tecla para continuar...')
        except Exception as e:
            print(f'{str(e)}')

    def search_usuario(self):
        print('''
        ========================
            Buscar Usuario
        ========================
        ''')
        try:
            cod_usuario = input_data("Ingrese el Codigo del usuario >> ")
            usuario = self.usuario.get_usuario({'codigo': cod_usuario})
            print(
                print_table(usuario, [
                    'ID', 'Tipo Doc', 'Num Doc', 'Codigo', 'Nombre',
                    'Ap. Paterno', 'Ap. Materno'
                ]))

            if usuario:
                if question('¿Deseas dar mantenimiento al usuario?'):
                    opciones = ['Editar', 'Eliminar', 'Salir']
                    respuesta = Menu(opciones).show()
                    if respuesta == 1:
                        self.update_usuario(cod_usuario)
                    elif respuesta == 2:
                        self.delete_usuario(cod_usuario)
        except Exception as e:
            print(f'{str(e)}')
        input('\nPresiona una tecla para continuar...')

    def insert_usuario(self):
        print('Seleccion el Tipo de Documento del usuario >>')
        lista_menu = ["DNI", "RUC", "PASAPORTE", "OTRO"]
        respuesta = Menu(lista_menu).show()
        if respuesta == 1:
            tipo_doc = 'DNI'
        elif respuesta == 2:
            tipo_doc = 'RUC'
        elif respuesta == 3:
            tipo_doc = 'PASAPORTE'
        else:
            tipo_doc = 'OTRO'

        num_doc = input_data('Ingrese el Numero Documento del usuario >> ')
        nombre = input_data('Ingrese el Nombre del usuario >> ')
        ap_paterno = input_data('Ingrese el Apellido Paterno del usuario >> ')
        ap_materno = input_data('Ingrese el Apellido Materno del usuario >> ')
        codigo = genera_codigo_by_texto(ap_paterno + ap_materno)

        self.usuario.insert_usuario({
            'tipo_doc': tipo_doc,
            'num_doc': num_doc,
            'codigo': codigo,
            'nombre': nombre,
            'ap_paterno': ap_paterno,
            'ap_materno': ap_materno
        })
        print('''
        ================================
            Nuevo usuario agregado
        ================================
        ''')
        self.all_usuarios()

    def update_usuario(self, cod_usuario):

        print('Seleccion el Nuevo Tipo de Documento del usuario >>')
        lista_menu = ["DNI", "RUC", "PASAPORTE", "OTRO"]
        respuesta = Menu(lista_menu).show()
        if respuesta == 1:
            tipo_doc = 'DNI'
        elif respuesta == 2:
            tipo_doc = 'RUC'
        elif respuesta == 3:
            tipo_doc = 'PASAPORTE'
        else:
            tipo_doc = 'OTRO'

        num_doc = input_data(
            'Ingrese el Nuevo Numero Documento del usuario >> ')
        nombre = input_data('Ingrese el Nuevo Nombre del usuario >> ')
        ap_paterno = input_data(
            'Ingrese el Nuevo Apellido Paterno del usuario >> ')
        ap_materno = input_data(
            'Ingrese el Nuevo Apellido Materno del usuario >> ')
        self.usuario.update_usuario({'codigo': cod_usuario}, {
            'tipo_doc': tipo_doc,
            'num_doc': num_doc,
            'nombre': nombre,
            'ap_paterno': ap_paterno,
            'ap_materno': ap_materno
        })
        print('''
        ============================
            Usuario Actualizado
        ============================
        ''')

    def delete_usuario(self, cod_usuario):
        self.usuario.delete_usuario({'codigo': cod_usuario})
        print('''
        =========================
            Usuario Eliminado
        =========================
        ''')