Esempio n. 1
0
class Controle_tela_cliente_login():
    '''Classe para controlar a tela de login do cliente'''
    def __init__(self):
        self.tela_cliente_login = Tela_cliente_login()
        self.bd_cliente = ClienteDAO()
        self.current_cliente = Cliente()   

    def voltar_tela(self):
        '''metodo para sair da tela'''
        self.bd_cliente.close()
        self.tela_cliente_login.janela.destroy()
        Controle_tela_inicial().start()

    def __fill_current_cliente(self):
        '''metodo para pegar oque foi digitado nos widgets ENTRY da tela'''
        global login_globlal 
        login_globlal = self.tela_cliente_login.ent_login.get()
        self.current_cliente.login = self.tela_cliente_login.ent_login.get()
        self.current_cliente.senha = self.tela_cliente_login.ent_senha.get()

    def fazer_login(self):
        '''metodo para fazer login como cliente'''
        try:
            self.__fill_current_cliente()
            if(self.current_cliente.login == '' or self.current_cliente.senha == ''):
                tkinter.messagebox.showinfo('Aviso!', 'PRENCHA OS CAMPOS !')
            else:
                rows = self.bd_cliente.search(self.current_cliente) #rows é um lista[]
                if (rows == []):
                    tkinter.messagebox.showinfo('Aviso!', 'DADOS INVALIDOS !')
                else:
                    self.bd_cliente.close()
                    self.tela_cliente_login.janela.destroy()
                    Controle_tela_cliente().start()
        except Exception as e:
            print(e)

    def fazer_cadastro(self):
        '''metodo que abre a tela para fazer o cadastro do cliente'''
        self.tela_cliente_login.janela.destroy() 
        Controle_tela_cliente_registrar().start()

    def start(self):
        '''Inicia a tela de login do cliente e os eventos dos botoes'''
        self.tela_cliente_login.btn_voltar_tela.configure(command = self.voltar_tela)
        self.tela_cliente_login.btn_login.configure(command = self.fazer_login)
        self.tela_cliente_login.btn_cadastro.configure(command = self.fazer_cadastro)
        self.tela_cliente_login.iniciar()
Esempio n. 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()