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
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 ============================== ''')
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 ========================= ''')