예제 #1
0
class Controle_tela_bibliotecario():
    '''Classe para controlar a tela do bibliotecario  depois de feito o login'''
    def __init__(self):
        self.tela_bibliotecario = Tela_bibliotecario()
        self.bd_livro = LivroDAO()
        self.selected_livro = None
        self.current_livro = Livro()

        self.bd_cliente = ClienteDAO()
        self.selected_cliente = None
        self.current_cliente = Cliente()

        self.bd_emprestimo = EmprestimoDAO()

    def fechar_janela(self):
        '''metodo para sair da tela'''
        self.bd_livro.close()
        self.bd_cliente.close()
        self.bd_emprestimo.close()
        self.tela_bibliotecario.janela.destroy()
        Controle_tela_bibliotecario_login().start()

    def emprestimo_devolucao(self):
        '''metodo para abrir janela de emprestimo e devoluçao de livro'''
        self.bd_livro.close()
        self.bd_cliente.close()
        self.tela_bibliotecario.janela.destroy()
        Controle_tela_emprestimo_devolucao().start()

    def criar_acesso_cliente(self):
        '''metodo para criar acesso do cliente no sistema'''
        id = self.selected_cliente[0]
        self.__fill_current_cliente()
        if (self.current_cliente.senha == ''):
            tkinter.messagebox.showinfo('Aviso!', 'SENHA NAO PODE SER VAZIA!')
        else:
            self.bd_cliente.update(id,self.current_cliente)
            self.ver_todos_cliente()
            

    def retirar_acesso_cliente(self):
        '''metodo para retirar acesso do cliente no sistema'''
        id = self.selected_cliente[0]
        self.__fill_current_cliente()
        if (self.current_cliente.nome == '' or self.current_cliente.sobrenome == '' or self.current_cliente.cpf == '' or self.current_cliente.email == '' or self.current_cliente.login == ''):
            tkinter.messagebox.showinfo('Aviso!', 'APAGUE APENAS A SENHA!')
        else:
            self.bd_cliente.update(id,self.current_cliente)
            self.ver_todos_cliente()

    def get_selected_row_cliente(self, event):
        "método que seleciona na listbox e popula os campos de input"
        if self.tela_bibliotecario.list_cliente.curselection():
            index = self.tela_bibliotecario.list_cliente.curselection()[0]        
            self.selected_cliente = self.tela_bibliotecario.list_cliente.get(index)
            self.tela_bibliotecario.ent_nome_cliente.delete(0, END)
            self.tela_bibliotecario.ent_nome_cliente.insert(END, self.selected_cliente[1])
            self.tela_bibliotecario.ent_sobrenome_cliente.delete(0, END)
            self.tela_bibliotecario.ent_sobrenome_cliente.insert(END, self.selected_cliente[2])
            self.tela_bibliotecario.ent_cpf_clienteo.delete(0, END)
            self.tela_bibliotecario.ent_cpf_clienteo.insert(END, self.selected_cliente[3])
            self.tela_bibliotecario.ent_email_cliente.delete(0, END)
            self.tela_bibliotecario.ent_email_cliente.insert(END, self.selected_cliente[4])
            self.tela_bibliotecario.ent_login_cliente.delete(0, END)
            self.tela_bibliotecario.ent_login_cliente.insert(END, self.selected_cliente[5])
            self.tela_bibliotecario.ent_senha_cliente.delete(0, END)
            self.tela_bibliotecario.ent_senha_cliente.insert(END, self.selected_cliente[6])
            
    def get_selected_row_livro(self, event):
        "método que seleciona na listbox e popula os campos de input"
        if self.tela_bibliotecario.list_livro.curselection():
            index = self.tela_bibliotecario.list_livro.curselection()[0]        
            self.selected_livro = self.tela_bibliotecario.list_livro.get(index)
            self.tela_bibliotecario.ent_id_livro.delete(0, END)
            self.tela_bibliotecario.ent_id_livro.insert(END, self.selected_livro[1])
            self.tela_bibliotecario.ent_nome_livro.delete(0, END)
            self.tela_bibliotecario.ent_nome_livro.insert(END, self.selected_livro[2])
            self.tela_bibliotecario.ent_genero_livro.delete(0, END)
            self.tela_bibliotecario.ent_genero_livro.insert(END, self.selected_livro[3])
            self.tela_bibliotecario.ent_autor_livro.delete(0, END)
            self.tela_bibliotecario.ent_autor_livro.insert(END, self.selected_livro[4])
            self.tela_bibliotecario.ent_area_livro.delete(0, END)
            self.tela_bibliotecario.ent_area_livro.insert(END, self.selected_livro[5])
            self.tela_bibliotecario.ent_editora_livro.delete(0, END)
            self.tela_bibliotecario.ent_editora_livro.insert(END, self.selected_livro[6])
            self.tela_bibliotecario.ent_edicao_livro.delete(0, END)
            self.tela_bibliotecario.ent_edicao_livro.insert(END, self.selected_livro[7])

    def __fill_current_livro(self):
        '''metodo para pegar oque foi digitado nos widgets ENTRY da tela'''
        self.current_livro.id_livro = self.tela_bibliotecario.ent_id_livro.get()
        self.current_livro.nome = self.tela_bibliotecario.ent_nome_livro.get()
        self.current_livro.genero = self.tela_bibliotecario.ent_genero_livro.get()
        self.current_livro.autor = self.tela_bibliotecario.ent_autor_livro.get()
        self.current_livro.area = self.tela_bibliotecario.ent_area_livro.get()
        self.current_livro.editora = self.tela_bibliotecario.ent_editora_livro.get()
        self.current_livro.edicao = self.tela_bibliotecario.ent_edicao_livro.get()

    def __fill_current_cliente(self):
        '''metodo para pegar oque foi digitado nos widgets ENTRY da tela'''
        self.current_cliente.nome = self.tela_bibliotecario.ent_nome_cliente.get()
        self.current_cliente.sobrenome = self.tela_bibliotecario.ent_sobrenome_cliente.get()
        self.current_cliente.cpf = self.tela_bibliotecario.ent_cpf_clienteo.get()
        self.current_cliente.email = self.tela_bibliotecario.ent_email_cliente.get()
        self.current_cliente.login = self.tela_bibliotecario.ent_login_cliente.get()
        self.current_cliente.senha = self.tela_bibliotecario.ent_senha_cliente.get()
        
    def cadastro_livro(self):
        '''metodo para cadastrar livro no sistema'''
        self.__fill_current_livro()
        try:
            rows = self.bd_livro.search_livro_id(self.current_livro)
            if (rows != []):
                tkinter.messagebox.showinfo('Aviso!', 'ESSE ID JA FOI CADASTRADO!')
            else:
                self.bd_livro.insert(self.current_livro)
                self.ver_todos_livro()
        except Exception as e:
            print(e)

    def retirar_livro(self):
        '''metodo para retirar livro no sistema'''
        id = self.selected_livro[0]
        self.__fill_current_livro()
        try:
            rows = self.bd_emprestimo.verificar_emprestimo(self.current_livro)
            if (rows != []):
                tkinter.messagebox.showinfo('Aviso!', 'LIVRO ESTA EMPRESTADO!')
            else:
                self.bd_livro.delete(id)
                self.ver_todos_livro()
        except Exception as e:
            print(e)

    def ver_todos_livro(self):
        '''metodo que visualiza todos os livros'''
        try:
            rows = self.bd_livro.view()
            self.tela_bibliotecario.list_livro.delete(0, END)
            for r in rows:
                self.tela_bibliotecario.list_livro.insert(END, r)
        except Exception as e:
            print(e)        

    def ver_todos_cliente(self):
        '''metodo para vizualizar todos os cliente'''
        try:
            rows = self.bd_cliente.view()
            self.tela_bibliotecario.list_cliente.delete(0, END)
            for r in rows:
                self.tela_bibliotecario.list_cliente.insert(END, r)
        except Exception as e:
            print(e)

    def start(self):
        '''Inicia a tela do bibliotecario  e os eventos dos botoes'''
        self.tela_bibliotecario.list_livro.bind('<<ListboxSelect>>', self.get_selected_row_livro)
        self.tela_bibliotecario.list_cliente.bind('<<ListboxSelect>>', self.get_selected_row_cliente)
        self.tela_bibliotecario.btn_fechar.configure(command = self.fechar_janela)
        self.tela_bibliotecario.btn_realizar_emprestimo_devolucao.configure(command = self.emprestimo_devolucao)
        self.tela_bibliotecario.btn_criar_acesso_cliente.configure(command = self.criar_acesso_cliente)
        self.tela_bibliotecario.btn_retirar_acesso_cliente.configure(command = self.retirar_acesso_cliente)
        self.tela_bibliotecario.btn_ver_todos_cliente.configure(command = self.ver_todos_cliente)
        self.tela_bibliotecario.btn_cadastro_livro.configure(command = self.cadastro_livro)
        self.tela_bibliotecario.btn_retirar_livro.configure(command = self.retirar_livro)
        self.tela_bibliotecario.btn_ver_todos_livros.configure(command = self.ver_todos_livro)
        self.tela_bibliotecario.iniciar()
예제 #2
0
class Controle_tela_emprestimo_devolucao():
    '''Classe para controlar a tela de emprestimo e devolucao do livro'''
    def __init__(self):
        self.tela_emprestimo_devolucao = Tela_emprestimo_devolucao()
        self.bd_cliente = ClienteDAO()
        self.bd_emprestimo = EmprestimoDAO()
        self.bd_livro = LivroDAO()

        self.selected = None

        self.current_cliente = Cliente()
        self.current_cliente_verifica = Cliente()
        self.current_livro = Livro()

    def __fill_current_cliente_login_senha_emprestimo(self):
        '''metodo para pegar oque foi digitado nos widgets ENTRY da tela'''
        self.current_cliente_verifica.login = self.tela_emprestimo_devolucao.ent_login_cliente_emprestimo.get()
        self.current_cliente_verifica.senha = self.tela_emprestimo_devolucao.ent_senha_cliente_emprestimo.get()

    def __fill_current_cliente_emprestimo(self):
        '''metodo para pegar oque foi digitado nos widgets ENTRY da tela'''
        self.current_cliente.login = self.tela_emprestimo_devolucao.ent_login_cliente_emprestimo.get()

    def __fill_current_livro_emprestimo(self):
        '''metodo para pegar oque foi digitado nos widgets ENTRY da tela'''
        self.current_livro.id_livro = self.tela_emprestimo_devolucao.ent_id_livro_emprestimo.get()
        self.current_livro.nome = self.tela_emprestimo_devolucao.ent_nome_livro_emprestimo.get()
        self.current_livro.genero = self.tela_emprestimo_devolucao.ent_genero_livro_emprestimo.get()
        self.current_livro.autor = self.tela_emprestimo_devolucao.ent_autor_livro_emprestimo.get()
        self.current_livro.area = self.tela_emprestimo_devolucao.ent_area_livro_emprestimo.get()
        self.current_livro.editora = self.tela_emprestimo_devolucao.ent_editora_livro_emprestimo.get()
        self.current_livro.edicao = self.tela_emprestimo_devolucao.ent_edicao_livro_emprestimo.get()

    def __fill_current_cliente_devolucao(self):
        '''metodo para pegar oque foi digitado nos widgets ENTRY da tela'''
        self.current_cliente.login = self.tela_emprestimo_devolucao.ent_login_cliente_devolucao.get()

    def __fill_current_livro_devolucao(self):
        '''metodo para pegar oque foi digitado nos widgets ENTRY da tela'''
        self.current_livro.id_livro = self.tela_emprestimo_devolucao.ent_id_livro_devolucao.get()

    def get_selected_row_emprestimo(self, event):
        "método que seleciona na listbox e popula os campos de input"
        if self.tela_emprestimo_devolucao.list_emprestimo.curselection():
            index = self.tela_emprestimo_devolucao.list_emprestimo.curselection()[0]        
            self.selected = self.tela_emprestimo_devolucao.list_emprestimo.get(index)
            self.tela_emprestimo_devolucao.ent_id_livro_emprestimo.delete(0, END)
            self.tela_emprestimo_devolucao.ent_id_livro_emprestimo.insert(END, self.selected[1])
            self.tela_emprestimo_devolucao.ent_nome_livro_emprestimo.delete(0, END)
            self.tela_emprestimo_devolucao.ent_nome_livro_emprestimo.insert(END, self.selected[2])
            self.tela_emprestimo_devolucao.ent_genero_livro_emprestimo.delete(0, END)
            self.tela_emprestimo_devolucao.ent_genero_livro_emprestimo.insert(END, self.selected[3])
            self.tela_emprestimo_devolucao.ent_autor_livro_emprestimo.delete(0, END)
            self.tela_emprestimo_devolucao.ent_autor_livro_emprestimo.insert(END, self.selected[4])
            self.tela_emprestimo_devolucao.ent_area_livro_emprestimo.delete(0, END)
            self.tela_emprestimo_devolucao.ent_area_livro_emprestimo.insert(END, self.selected[5])
            self.tela_emprestimo_devolucao.ent_editora_livro_emprestimo.delete(0, END)
            self.tela_emprestimo_devolucao.ent_editora_livro_emprestimo.insert(END, self.selected[6])
            self.tela_emprestimo_devolucao.ent_edicao_livro_emprestimo.delete(0, END)
            self.tela_emprestimo_devolucao.ent_edicao_livro_emprestimo.insert(END, self.selected[7])

    def get_selected_row_devolucao(self, event):
        "método que seleciona na listbox e popula os campos de input"
        if self.tela_emprestimo_devolucao.list_devolucao.curselection():
            index = self.tela_emprestimo_devolucao.list_devolucao.curselection()[0]        
            self.selected = self.tela_emprestimo_devolucao.list_devolucao.get(index)
            self.tela_emprestimo_devolucao.ent_id_livro_devolucao.delete(0, END)
            self.tela_emprestimo_devolucao.ent_id_livro_devolucao.insert(END, self.selected[1])
            self.tela_emprestimo_devolucao.ent_login_cliente_devolucao.delete(0, END)
            self.tela_emprestimo_devolucao.ent_login_cliente_devolucao.insert(END, self.selected[8])

    def emprestimo(self):
        '''metodo que realiza o emprestimo do livro'''
        emprestimo = date.today()
        dataDevolucaoToordinal = emprestimo.toordinal()+7
        devolucao = date.fromordinal(emprestimo.toordinal()+7)
        try:
            self.__fill_current_livro_emprestimo()
            self.__fill_current_cliente_emprestimo()
            self.__fill_current_cliente_login_senha_emprestimo()
            if(self.current_cliente_verifica.login == '' or self.current_cliente_verifica.senha == '' or self.current_livro.id_livro == ''):
                tkinter.messagebox.showinfo('Aviso!', 'PRENCHA OS CAMPOS !')
            else:
                rows1 = self.bd_cliente.search_login(self.current_cliente)
                rows2 = self.bd_emprestimo.search_livro_emprestimo(self.current_livro)
                rows3 = self.bd_emprestimo.verificar_emprestimo(self.current_livro)
                rows4 = self.bd_cliente.search(self.current_cliente_verifica)
                rows5 = self.bd_cliente.search_livro_cliente(self.current_cliente)
                if (rows1 == []):
                    tkinter.messagebox.showinfo('Aviso!', 'LOGIN NAO ENCONTRADO!')
                elif (rows2 == []):
                    tkinter.messagebox.showinfo('Aviso!', 'LIVRO NAO ENCONTRADO!')
                elif (rows3 != []):
                    tkinter.messagebox.showinfo('Aviso!', 'LIVRO JA FOI EMPRESTADO!')
                elif (rows4 == []):
                    tkinter.messagebox.showinfo('Aviso!', 'LOGIN E SENHA INCORRETOS!')
                elif (len(rows5) > 2): # [(0),(1),(2)] por isso len(rows5) > 2
                    tkinter.messagebox.showinfo('Aviso!', 'CLIENTE POSSUI 3 LIVRO, NAO PODE REALIZAR MAIS EMPRESTIMO')
                else:
                    self.bd_emprestimo.insert(self.current_livro,self.current_cliente,emprestimo,devolucao,dataDevolucaoToordinal)
                    tkinter.messagebox.showinfo('Aviso!', 'EMPRESTIMO CONCLUIDO!')
        except Exception as e:
            print(e)

    def obter_info_emprestimo(self):
        '''metodo para pesquisar livros disponivel para emprestimo'''
        self.tela_emprestimo_devolucao.list_emprestimo.delete(0, END)
        self.__fill_current_livro_emprestimo()
        try:
            if (self.current_livro.id_livro == ''):
                tkinter.messagebox.showinfo('Aviso!', 'PRENCHA O CAMPO ID!')
            rows1 = self.bd_emprestimo.verificar_emprestimo(self.current_livro)
            rows2 = self.bd_emprestimo.search_livro_emprestimo(self.current_livro)
            if (rows1 != []):
                tkinter.messagebox.showinfo('Aviso!', 'LIVRO JA FOI EMPRESTADO!')
            else:
                for r in rows2:
                    self.tela_emprestimo_devolucao.list_emprestimo.insert(END, r)
        except Exception as e:
            print(e)

    def obter_info_devolucao(self):
        '''metodo para pesquisar livros emprestados'''
        self.tela_emprestimo_devolucao.list_devolucao.delete(0, END)
        self.__fill_current_cliente_devolucao()
        self.__fill_current_livro_devolucao()
        try:
            if(self.current_cliente.login == '' or self.current_livro.id_livro == ''):
                tkinter.messagebox.showinfo('Aviso!', 'PRENCHA OS CAMPOS !')
            else:
                rows = self.bd_emprestimo.search_livro_devolucao(self.current_livro,self.current_cliente)
                if (rows == []):
                    tkinter.messagebox.showinfo('Aviso!', 'DADOS INVALIDOS !')
                for r in rows:
                    self.tela_emprestimo_devolucao.list_devolucao.insert(END, r[:9])
        except Exception as e:
            print(e)

    def devolucao(self):
        '''metodo que realiza a devoluçao do livro'''
        id = self.selected[0]
        self.bd_emprestimo.delete(id)
        self.tela_emprestimo_devolucao.list_devolucao.delete(0, END)
        tkinter.messagebox.showinfo('Aviso!', 'DEVOLUÇAO CONCLUIDA!')
    
    def sair(self):
        '''metodo para sair da tela'''
        self.bd_cliente.close()
        self.bd_emprestimo.close()
        self.bd_livro.close()
        self.tela_emprestimo_devolucao.janela.destroy()
        Controle_tela_bibliotecario().start()
    
    def start(self):
        '''Inicia a tela e os eventos dos botoes'''
        self.tela_emprestimo_devolucao.list_emprestimo.bind('<<ListboxSelect>>', self.get_selected_row_emprestimo)
        self.tela_emprestimo_devolucao.list_devolucao.bind('<<ListboxSelect>>', self.get_selected_row_devolucao)
        self.tela_emprestimo_devolucao.btn_sair.configure(command=self.sair)
        self.tela_emprestimo_devolucao.btn_emprestimo.configure(command=self.emprestimo)
        self.tela_emprestimo_devolucao.btn_devolucao.configure(command=self.devolucao)
        self.tela_emprestimo_devolucao.btn_obter_info_emprestimo.configure(command=self.obter_info_emprestimo)
        self.tela_emprestimo_devolucao.btn_obter_info_devolucao.configure(command=self.obter_info_devolucao)
        self.tela_emprestimo_devolucao.iniciar()