示例#1
0
class CustomerMenu(Customer):

    global validate
    validate = Validate()

    def customer_menu(self, user_id):
        print("_" * 80)
        choice_option = input(
            "\n \t \t \t Menu Clientes\n" + "_" * 80 +
            "\n 1º Verificar Clientes Cadastrados\n 2º Pesquisar por Cliente\n"
            " 3º Cadastrar Cliente\n 4º Alterar Cliente\n 5º Exlcuir Cliente\n 6º Sair\n "
            "Escolha a sua opção --> ")
        while choice_option not in ("1", "2", "3", "4", "5", "6"):
            validate.validate_text_while()
            choice_option = input(
                "\t \t \t Menu Clientes\n" + "_" * 80 +
                "\n 1º Verificar Clientes Cadastrados\n 2º Pesquisar por Cliente\n"
                " 3º Cadastrar Cliente\n 4º Alterar Cliente\n 5º Exlcuir Cliente\n 6º Sair\n "
                "Escolha a sua opção --> ")

        if choice_option == "1":
            self.select_all_customers()

        elif choice_option == "2":
            self.search_customer_name()

        elif choice_option == "3":
            self.register_customer(user_id)

        elif choice_option == "4":
            self.update_customer(user_id)

        elif choice_option == "5":
            self.delete_customer()

        elif choice_option == "6":
            print("_" * 80)
            print("Saindo do Sistema.")
            exit()

    def register_customer(self, user_id):
        datas = []

        print("_" * 80)
        name = input("Digite o Nome do Cliente: ")
        while name.isdigit() or name is "":
            print("_" * 80)
            print("Por favor digite o seu nome corretamente.")
            name = input("Digite o Nome do Cliente: ")

        age = input("Digite a Idade do Cliente: ")
        while age.isdigit() is False or age is "" or len(age) > 3:
            print("_" * 80)
            print("Por favor digite a sua idade corretamente.")
            age = input("Digite a Idade do Cliente: ")

        street = input("Digite o Nome da Rua do Cliente: ")
        if street is "":
            street = None

        number = input("Digite o Número: ")
        if number is not "":
            while number.isdigit() is False:
                print("_" * 80)
                print("Por favor digite o Número corretamente.")
                number = input("Digite o Número: ")

        elif number is "":
            number = None

        complement = input("Digite o Complemento do Endereço do Cliente: ")
        if complement is "":
            complement = None

        cep = input("Digite o CEP do Cliente: ")
        cep = cep.replace(".", "")
        cep = cep.replace("-", "")
        while cep.isdigit() is False or len(cep) != 8:
            print("_" * 80)
            print("Por favor digite o CEP do Cliente de Maneira correta.")
            cep = input("Digite o CEP do Cliente: ")
            cep = cep.replace(".", "")
            cep = cep.replace("-", "")

        telephone = input("Digite o número de Telefone do Cliente:")
        telephone = telephone.replace("-", "")
        telephone = telephone.replace(".", "")
        if telephone is not "":
            while telephone.isdigit() is False:
                print("_" * 80)
                print("Por favor digite o Número do Telefone corretamente.")
                telephone = input("Digite o número de Telefone do Cliente:")
                telephone = telephone.replace("-", "")
                telephone = telephone.replace(".", "")

        elif telephone is "":
            telephone = None

        cellphone = input("Digite o Número do Celular do Cliente com o DD: ")
        cellphone = cellphone.replace("-", "")
        cellphone = cellphone.replace(".", "")
        while cellphone.isdigit() is False or cellphone is "":
            print("_" * 80)
            print(
                "Por favor digite o Número do Celular Do Cliente corretamente."
            )
            cellphone = input(
                "Digite o Número do Celular do Cliente com o DD: ")
            cellphone = cellphone.replace("-", "")
            cellphone = cellphone.replace(".", "")

        rg = input("Digite o Número do RG do Cliente: ")
        rg = rg.replace(".", "")
        rg = rg.replace("-", "")
        check_rg = self.check_rg(rg)
        while rg.isdigit() is False or len(rg) != 9 or check_rg is not None:
            print("_" * 80)
            print(
                "Por favor digite o Número do RG do Cliente corretamente ou\nEste RG já está sendo usado no Sistema."
            )
            rg = input("Digite o Número do RG do Cliente: ")
            rg = rg.replace(".", "")
            rg = rg.replace("-", "")
            check_rg = self.check_rg(rg)

        cpf = input("Digite o Número do CPF do Cliente: ")
        cpf = cpf.replace(".", "")
        cpf = cpf.replace("-", "")
        cpf_validate = self.return_id(cpf)
        analsying_cpf = validate.validate_number_cpf_employee(cpf)
        while cpf.isdigit() is False or len(
                cpf) != 11 or cpf_validate is not None or analsying_cpf == 0:
            print("_" * 80)
            print(
                "Por favor digite o Número do CPF do Cliente corretamente ou\n"
                "Este CPF já está sendo usado no Sistema.")
            cpf = input("Digite o Número do CPF do Cliente: ")
            cpf = cpf.replace(".", "")
            cpf = cpf.replace("-", "")
            cpf_validate = self.return_id(cpf)
            analsying_cpf = validate.validate_number_cpf_employee(cpf)

        customer_get_set = CustomersGetSet(name, int(age), street, number,
                                           complement, cep, telephone,
                                           cellphone, rg, cpf, user_id)
        datas.append(customer_get_set.name)
        datas.append(customer_get_set.age)
        datas.append(customer_get_set.street)
        datas.append(customer_get_set.number)
        datas.append(customer_get_set.complement)
        datas.append(customer_get_set.cep)
        datas.append(customer_get_set.telephone)
        datas.append(customer_get_set.cellphone)
        datas.append(customer_get_set.rg)
        datas.append(customer_get_set.cpf)
        datas.append(customer_get_set.user_id)

        self.insert(datas)

    def update_customer(self, user_id):
        print("_" * 80)
        choice = input(
            "\t \t \t Menu de Alteração de Dados de Cliente\n" + "_" * 80 +
            "\n \nEscolha o Índice referente ao campo que você quer alterar\n\n 1º Nome\n 2º Idade\n "
            "3º Rua\n 4º Número\n 5º Complemento\n 6º CEP\n 7º Telefone\n 8º Celular\n 9º RG\n 10º CPF\n"
            " Escolha a Opção desejada --> ")

        if choice in ("1", "2", "3", "4", "5", "6", "7", "8", "9", "10"):
            print("_" * 80)
            cpf = validate.validate_customer_cpf()

            if choice == "1":
                name = input("Digite o Novo Nome do Cliente: ")
                while name.isdigit() or name is "":
                    print("_" * 80)
                    print("Por favor digite o nome corretamente.")
                    name = input("Digite o Novo Nome do Cliente: ")

                self.update_name(cpf, name, user_id)

            elif choice == "2":
                age = input("Digite a Nova Idade do Cliente: ")
                while age.isdigit() is False or age is "" or len(age) > 3:
                    print("_" * 80)
                    print("Por favor digite a sua idade corretamente.")
                    age = input("Digite a Nova Idade do Cliente: ")

                self.update_age(cpf, age, user_id)

            elif choice == "3":
                street = input("Digite o Novo Nome da Rua do Cliente: ")
                if street is "":
                    street = None

                self.update_street(cpf, street, user_id)

            elif choice == "4":
                number = input("Digite o Novo Número: ")
                if number is not "":
                    while number.isdigit() is False:
                        print("_" * 80)
                        print("Por favor digite o Número corretamente.")
                        number = input("Digite o Número: ")

                elif number is "":
                    number = None

                self.update_number(cpf, number, user_id)

            elif choice == "5":
                complement = input(
                    "Digite o Novo Complemento do Endereço do Cliente: ")
                if complement is "":
                    complement = None

                self.update_complement(cpf, complement, user_id)

            elif choice == "6":
                cep = input("Digite o Novo CEP do Cliente: ")
                cep = cep.replace(".", "")
                cep = cep.replace("-", "")
                while cep.isdigit() is False or len(cep) != 8:
                    print("_" * 80)
                    print(
                        "Por favor digite o Novo CEP do Cliente de Maneira correta."
                    )
                    cep = input("Digite o Novo CEP do Cliente: ")
                    cep = cep.replace(".", "")
                    cep = cep.replace("-", "")

                self.update_cep(cpf, cep, user_id)

            elif choice == "7":
                telephone = input(
                    "Digite o Novo número de Telefone do Cliente:")
                telephone = telephone.replace(".", "")
                telephone = telephone.replace("-", "")
                if telephone is not "":
                    while telephone.isdigit() is False:
                        print("_" * 80)
                        print(
                            "Por favor digite o Novo Número do Telefone corretamente."
                        )
                        telephone = input(
                            "Digite o Novo número de Telefone do Cliente:")
                        telephone = telephone.replace(".", "")
                        telephone = telephone.replace("-", "")

                self.update_telephone(cpf, telephone, user_id)

            elif choice == "8":
                cellphone = input(
                    "Digite o Novo Número do Celular do Cliente com o DD: ")
                cellphone = cellphone.replace(".", "")
                cellphone = cellphone.replace("-", "")
                while cellphone.isdigit() is False or cellphone is "":
                    print("_" * 80)
                    print(
                        "Por favor digite o Novo Número do Celular Do Cliente corretamente."
                    )
                    cellphone = input(
                        "Digite o Novo Número do Celular do Cliente com o DD: "
                    )
                    cellphone = cellphone.replace(".", "")
                    cellphone = cellphone.replace("-", "")

                self.update_cellphone(cpf, cellphone, user_id)

            elif choice == "9":
                rg = input("Digite o Novo Número do RG do Cliente: ")
                rg = rg.replace(".", "")
                rg = rg.replace("-", "")
                check_rg = self.check_rg(rg)

                while rg.isdigit() is False or len(
                        rg) != 9 or check_rg is not None:
                    print("_" * 80)
                    print(
                        "Por favor digite o Novo Número do RG do Cliente corretamente ou\n"
                        "Este RG já está sendo usado.")
                    rg = input("Digite o Novo Número do RG do Cliente: ")
                    rg = rg.replace(".", "")
                    rg = rg.replace("-", "")
                    check_rg = self.check_rg(rg)

                self.update_rg(cpf, rg, user_id)

            elif choice == "10":
                print("_" * 80)
                print("Você Deseja Alterar o Número do CPF do Cliente.")
                cpf_changed = input("Digite o Novo Número do CPF do Cliente: ")
                cpf_changed = cpf_changed.replace(".", "")
                cpf_changed = cpf_changed.replace("-", "")
                cpf_validate = self.return_id(cpf_changed)
                analsying_cpf = validate.validate_number_cpf_employee(
                    cpf_changed)

                while cpf_changed.isdigit() is False or len(cpf_changed) != 11 or \
                        cpf_validate is not None or analsying_cpf == 0:
                    print("_" * 80)
                    print(
                        "Por favor digite o Novo Número do CPF do Cliente corretamente ou\n "
                        "Este CPF já está cadastrado no Sistema.")
                    cpf_changed = input(
                        "Digite o Novo Número do CPF do Cliente: ")
                    cpf_changed = cpf_changed.replace(".", "")
                    cpf_changed = cpf_changed.replace("-", "")
                    cpf_validate = self.return_id(cpf_changed)
                    analsying_cpf = validate.validate_number_cpf_employee(
                        cpf_changed)

                self.update_cpf(cpf, cpf_changed, user_id)

        else:
            print("_" * 80)
            print("Opção inválida.")

    def delete_customer(self):
        print("_" * 80)
        cpf = validate.validate_customer_cpf()
        confirm = input(
            "Deseja realmente excluir este Registro: (S -Sim / N - Não):")
        confirm = confirm.upper()
        if confirm == 'S':
            self.delete(cpf)

        else:
            print("_" * 80)
            print("O registro não foi deletado.")
            print("Saindo do Sistema até próxima.")

    def select_all_customers(self):
        print("_" * 80)
        self.select_all()

    def search_customer_name(self):
        print("_" * 80)
        name = input("Digite o Nome do Cliente que deseja procurar: ")
        while name is "" or name.isalpha() is False:
            print("_" * 80)
            print("Por favor digite o Nome do Cliente. ")
            name = input("Digite o Nome do Cliente que deseja procurar: ")

        self.search_customer(name)
示例#2
0
    def secundary_menu(job_role, user_id):
        try:
            validate = Validate()
            print("_" * 80)

            if job_role not in ("GERENTE DE LOJA", "ADMINISTRADOR DE SISTEMA"):
                choose = input(
                    "\n \t \t \t Menu Secundário - Operações Locadora\n" +
                    "_" * 80 + "\n 1 º Clientes\n "
                    "2 º DVD's e Jogos\n 3 º Empréstimo de Dvd's e Jogos\n 4º Sair\n"
                    " Escolha a sua opção aqui ---> ")
                while choose not in ("1", "2", "3", "4"):
                    validate.validate_text_while()
                    choose = input(
                        "\n \t \t \t Menu Secundário - Operações Locadora\n" +
                        "_" * 80 +
                        "\n 1 º Clientes\n 2 º DVD's e Jogos\n 3 º Empréstimo de Dvd's e Jogos\n 4º Sair\n "
                        "Escolha a sua opção aqui ---> ")

                if choose == "1":
                    customer_menu = CustomerMenu()
                    customer_menu.customer_menu(user_id)

                elif choose == "2":
                    dvd_game_menu = DvdGameMenu()
                    dvd_game_menu.dvd_game_menu(user_id)

                elif choose == "3":
                    rent_dvd_game_menu = RentDvdGameMenu()
                    rent_dvd_game_menu.rent_dvd_game_menu(user_id)

                elif choose == "4":
                    print("_" * 80)
                    print("Saindo do Sistema...")
                    exit()

            else:
                choose = input(
                    "\n \t \t \t Menu Secundário - Operações Locadora\n" +
                    "_" * 80 + "\n 1 º Clientes\n "
                    "2 º DVD's e Jogos\n 3 º Empréstimo de Dvd's e Jogos\n 4º Funcionários\n 5º Sair\n"
                    " Escolha a sua opção aqui ---> ")
                while choose not in ("1", "2", "3", "4"):
                    validate.validate_text_while()
                    choose = input(
                        "\n \t \t \t Menu Secundário - Operações Locadora\n" +
                        "_" * 80 +
                        "\n 1 º Clientes\n 2 º DVD's e Jogos\n 3 º Empréstimo de Dvd's e Jogos\n"
                        " 4º Funcionários\n 5º Sair\n "
                        "Escolha a sua opção aqui ---> ")

                if choose == "1":
                    customer_menu = CustomerMenu()
                    customer_menu.customer_menu(user_id)

                elif choose == "2":
                    dvd_game_menu = DvdGameMenu()
                    dvd_game_menu.dvd_game_menu(user_id)

                elif choose == "3":
                    rent_dvd_game_menu = RentDvdGameMenu()
                    rent_dvd_game_menu.rent_dvd_game_menu(user_id)

                elif choose == "4":
                    employee = EmployeeMenu()
                    employee.employee_menu(user_id)

                elif choose == "5":
                    print("_" * 80)
                    print("Saindo do Sistema...")
                    exit()

        except ():
            print("_" * 80)
            print(
                "Erro em geral ao tentar executar os processos no Menu Secundário."
            )
class EmployeeMenu(Employee):

    global validate, date_get
    validate = Validate()
    date_get = DateHourNow()

    def employee_menu(self, user_id):
        print("_"*80)
        choose = input("\t \t \t Menu de Funcionários\n\n " + "_"*80 + "\n "
                       "1º Consultar Todos os Funcionários Cadastrados\n 2º Pesquisar por um Funcionário\n "
                       "3º Cadastrar um Novo Funcionário\n 4º Alterar Dados de um Funcionário\n "
                       "5º Excluir um Funcionário\n 6º Sair do Sistema\n Escolha a sua opção --> ")
        while choose not in("1", "2", "3", "4", "5", "6"):
            validate.validate_text_while()
            choose = input("\t \t \t Menu de Funcionários\n\n " + "_" * 80 + "\n "
                           "1º Consultar Todos os Funcionários Cadastrados\n 2º Pesquisar por um Funcionário\n "
                           "3º Cadastrar um Novo Funcionário\n 4º Alterar Dados de um Funcionário\n "
                           "5º Excluir um Funcionário\n 6º Sair do Sistema\n Escolha a sua opção --> ")

        if choose == "1":
            self.select_all_employee()

        elif choose == "2":
            self.search_for_employee()

        elif choose == "3":
            self.insert_employee(user_id)

        elif choose == "4":
            self.update_datas_employee(user_id)

        elif choose == "5":
            self.delete_employee()

        elif choose == "6":
            print("_"*80)
            print("Saindo do Sistema...")
            exit()

    def insert_employee(self, user_id):
        datas_employee = []
        gross_salary_format = 0
        print("_"*80)
        name_employee = input("Digite o Nome do Novo Funcionário: ")
        while name_employee is "" or name_employee.isdigit():
            print("_"*80)
            print("Por favor Preencha o Nome do Funcionário.")
            name_employee = input("Digite o Nome do Novo Funcionário: ")

        birthday = input("Digite a Data de Nascimento: ")
        birthday_validate = validate.validation_date_insert(birthday)
        while birthday_validate is None:
            print("_"*80)
            print("Por Favor Digite uma Data de Nascimento válida.")
            birthday = input("Digite a Data de Nascimento: ")
            birthday_validate = validate.validation_date_insert(birthday)

        age = input("Digite a Idade do Funcionário: ")
        while age.isdigit() is False:
            print("_"*80)
            print("Por Favor Digite a Idade do Funcionário Corretamente.")
            age = input("Digite a Idade do Funcionário: ")

        sex = input("Digite o Sexo do Funcionário: ")
        sex = sex.title()

        if sex is "":
            sex = "M"
            sex_validate = sex

        else:
            while sex not in("Masculino", "Feminino"):
                print("_"*80)
                print("Por Favor Digite o Sexo do Funcionário Corretamente.")
                sex = input("Digite o Sexo do Funcionário: ")
                sex = sex.title()

            if sex == "Feminino":
                sex_validate = "F"

            else:
                sex_validate = "M"

        rg = input("Digite o Número do RG do Funcionário: ")
        rg = rg.replace(".", "")
        rg = rg.replace("-", "")
        check_rg = self.check_rg(rg)
        while rg.isdigit() is False or len(rg) != 9 or check_rg is not None:
            print("_" * 80)
            print("Por favor digite o Número do RG do Funcionário corretamente ou\n"
                  "Este RG já está sendo usado no Sistema.")
            rg = input("Digite o Número do RG do Cliente: ")
            rg = rg.replace(".", "")
            rg = rg.replace("-", "")
            check_rg = self.check_rg(rg)

        cpf = input("Digite o Número do CPF do Funcionário: ")
        cpf = cpf.replace(".", "")
        cpf = cpf.replace("-", "")
        cpf_validate = self.return_id(cpf)
        analsying_cpf = validate.validate_number_cpf_employee(cpf)
        while cpf.isdigit() is False or len(cpf) != 11 or cpf_validate is not None or analsying_cpf == 0:
            print("_" * 80)
            print("Por favor digite o Número do CPF do Funcionário corretamente ou\n"
                  "Este CPF já está sendo usado no Sistema.")
            cpf = input("Digite o Número do CPF do Cliente: ")
            cpf = cpf.replace(".", "")
            cpf = cpf.replace("-", "")
            cpf_validate = self.return_id(cpf)
            analsying_cpf = validate.validate_number_cpf_employee(cpf)

        telephone = input("Digite o Número do Telefone do Funcionário: ")
        telephone = telephone.replace(".", "")
        telephone = telephone.replace("-", "")
        telephone = telephone.replace("/", "")
        if telephone is "":
            telephone = None

        else:
            while telephone.isdigit() is False:
                print("_"*80)
                print("Por Favor Digite o Número do Telefone corretamente.")
                telephone = input("Digite o Número do Telefone do Funcionário: ")
                telephone = telephone.replace(".", "")
                telephone = telephone.replace("-", "")
                telephone = telephone.replace("/", "")

        cellphone = input("Digite o Número do Celular do Funcionário: ")
        cellphone = cellphone.replace(".", "")
        cellphone = cellphone.replace("-", "")
        cellphone = cellphone.replace("/", "")
        if cellphone is "":
            cellphone = None

        else:
            while cellphone.isdigit() is False or cellphone.count("9") == 0:
                print("_"*80)
                print("Por Favor Digite o Número do Celular corretamente.")
                cellphone = input("Digite o Número do Celular do Funcionário: ")
                cellphone = cellphone.replace(".", "")
                cellphone = cellphone.replace("-", "")
                cellphone = cellphone.replace("/", "")

        street = input("Digite o Nome da Rua do Funcionário: ")
        street = street.title()
        while street is "":
            print("_"*80)
            print("Por Favor Digite o Nome da Rua.")
            street = input("Digite o Nome da Rua do Funcionário: ")
            street = street.title()

        number = input("Digite o Número da Casa do Funcionário: ")
        while number.isdigit() is False:
            print("_"*80)
            print("Por Favor Digite o Número da Casa do Funcionário.")
            number = input("Digite o Número da Casa do Funcionário: ")

        complement = input("Digite o Complemento do Endereço do Funcionário: ")
        if complement is "":
            complement = None

        cep = input("Digite o CEP do Funcionário: ")
        cep = cep.replace(".", "").replace("-", "").replace("/", "").replace("\\", "")
        while cep.isdigit() is False or cep is "" or len(cep) != 8:
            print("_"*80)
            print("Por favor digite o CEP do Funcionário corretamente.")
            cep = input("Digite o CEP do Funcionário: ")
            cep = cep.replace(".", "").replace("-", "").replace("/", "").replace("\\", "")

        qty_days = input("Digite a Quantidade de Dias que o Funcionário Irá Trabalhar: ")
        if qty_days is "":
            qty_days = "6"
        else:
            while qty_days.isdigit() is False or qty_days == "0":
                print("_"*80)
                print("Por Favor Digite Um Valor Válido Para Quantidade de Dias trabalhados.")
                qty_days = input("Digite a Quantidade de Dias que o Funcionário Irá Trabalhar: ")

        entry_time = input("Digite a Horário de Entrada do Funcionário: ")
        entry_time_format = validate.validate_schedule(entry_time)
        if entry_time_format is None:
            entry_time_format = str("09:00:00")

        departure_hour = input("Digite o Horário de Saída do Funcionário: ")
        departure_hour_format = validate.validate_schedule(departure_hour)
        if departure_hour_format is None:
            departure_hour_format = str("18:00:00")

        gross_salary = input("Digite o valor do Salário Bruto do Funcionário: ")
        gross_salary = gross_salary.replace(",", ".")

        if gross_salary is "":
            gross_salary = "500"
            gross_salary_format = gross_salary

        else:
            try:
                gross_salary_format = float(gross_salary)

            except ValueError:
                print("_"*80)
                print("Por Favor Digite Somente Números.")

        job_role = input("Digite o Cargo Do Funcionário: ")
        job_role = job_role.title()
        if job_role is "":
            job_role = "Atendente"

        vt = input("O Funcionário Irá Usar Vale Transporte (S - Sim / N - Não): ")
        vt = vt.upper()
        if vt is "":
            vt = "Y"

        else:
            if vt == "S":
                vt = "Y"

            else:
                while vt not in("Y", "N"):
                    print("_"*80)
                    print("Por Favor Digite Apenas as Opções (S - Sim ou N - Não): ")
                    vt = input("O Funcionário Irá Usar Vale Transporte (S - Sim / N - Não): ")
                    vt = vt.upper()

        employee_get_set = EmployeeGetSet(name_employee, birthday_validate, int(age), sex_validate, rg, cpf,
                                          telephone, cellphone, street, number, complement, cep, int(qty_days),
                                          entry_time_format, departure_hour_format, gross_salary_format, job_role, vt
                                          , user_id)

        datas_employee.append(employee_get_set.name)
        datas_employee.append(employee_get_set.birthday)
        datas_employee.append(employee_get_set.age)
        datas_employee.append(employee_get_set.sex)
        datas_employee.append(employee_get_set.rg)
        datas_employee.append(employee_get_set.cpf)
        datas_employee.append(employee_get_set.telephone)
        datas_employee.append(employee_get_set.cellphone)
        datas_employee.append(employee_get_set.street)
        datas_employee.append(employee_get_set.number)
        datas_employee.append(employee_get_set.complement)
        datas_employee.append(employee_get_set.cep)
        datas_employee.append(employee_get_set.quantity_days)
        datas_employee.append(employee_get_set.entry_hour)
        datas_employee.append(employee_get_set.departure_hour)
        datas_employee.append(employee_get_set.salary)
        datas_employee.append(employee_get_set.job_role)
        datas_employee.append(employee_get_set.vt)
        datas_employee.append(employee_get_set.user_id)

        self.insert(datas_employee)

    def update_datas_employee(self, user_id):
        print("_" * 80)
        choice = input("\t \t \t Menu de Alterações de Dados de Funcionário\n\n " + "_"*80 + "\n "
                       "1º Alterar o Nome\n 2º Alterar a Data de Nascimento\n 3º Alterar a Idade\n 4º Alterar o Sexo\n"
                       " 5º Alterar o RG\n 6º Alterar o CPF\n 7º Alterar o Telefone\n "
                       "8º Alterar o Celular\n 9º Alterar a Rua\n "
                       "10º Alterar o Número do Endereço\n 11º Alterar o Complemento do Endereço\n 12º Alterar o CEP\n"
                       " 13º Alterar a Quantidade de Dias a Trabalhar por Semana\n 14º Alterar o Horário de Entrada\n"
                       " 15º Alterar o Horário de Saída\n 16º Alterar o Salário Bruto\n "
                       "17º Alterar o Cargo do Funcionário\n"
                       " 18º Alterar Se o Funcionário Utiliza Vale Transporte(VT)\n 19º Sair do Sistema\n"
                       " Escolha a sua opção --> ")

        if choice in("1", "2", "3", "4", "5", "6", "7", "8", "9",
                     "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"):

            gross_salary_format = 0
            print("_" * 80)
            cpf_current_employee = validate.validate_employee_cpf()

            if choice == "1":
                name_employee = input("Digite o Nome do Novo Funcionário: ")
                while name_employee is "" or name_employee.isdigit():
                    print("_" * 80)
                    print("Por favor Preencha o Nome do Funcionário.")
                    name_employee = input("Digite o Nome do Novo Funcionário: ")
                self.update_name(cpf_current_employee, name_employee, user_id)

            elif choice == "2":
                birthday = input("Digite a Data de Nascimento: ")
                birthday_validate = validate.validation_date_insert(birthday)
                while birthday_validate is None:
                    print("_" * 80)
                    print("Por Favor Digite uma Data de Nascimento válida.")
                    birthday = input("Digite a Data de Nascimento: ")
                    birthday_validate = validate.validation_date_insert(birthday)
                self.update_birthday(cpf_current_employee, birthday_validate, user_id)

            elif choice == "3":
                age = input("Digite a Idade do Funcionário: ")
                while age.isdigit() is False:
                    print("_" * 80)
                    print("Por Favor Digite a Idade do Funcionário Corretamente.")
                    age = input("Digite a Idade do Funcionário: ")
                self.update_age(cpf_current_employee, age, user_id)

            elif choice == "4":
                sex = input("Digite o Sexo do Funcionário: ")
                sex = sex.title()
                while sex not in ("Masculino", "Feminino"):
                    print("_" * 80)
                    print("Por Favor Digite o Sexo do Funcionário Corretamente.")
                    sex = input("Digite o Sexo do Funcionário: ")
                    sex = sex.title()

                if sex == "Feminino":
                    sex_validate = "F"

                else:
                    sex_validate = "M"
                self.update_sex(cpf_current_employee, sex_validate, user_id)

            if choice == "5":
                rg = input("Digite o Número do RG do Funcionário: ")
                rg = rg.replace(".", "")
                rg = rg.replace("-", "")
                check_rg = self.check_rg(rg)
                while rg.isdigit() is False or len(rg) != 9 or check_rg is not None:
                    print("_" * 80)
                    print("Por favor digite o Número do RG do Funcionário corretamente ou\n"
                          "Este RG já está sendo usado no Sistema.")
                    rg = input("Digite o Número do RG do Cliente: ")
                    rg = rg.replace(".", "")
                    rg = rg.replace("-", "")
                    check_rg = self.check_rg(rg)

                self.update_rg(cpf_current_employee, rg, user_id)

            elif choice == "6":
                print("_"*80)
                cpf_new = input("Digite o Novo Número do CPF do Funcionário: ")
                cpf_new = cpf_new.replace(".", "")
                cpf_new = cpf_new.replace("-", "")
                cpf_validate = self.return_id(cpf_new)
                analsying_cpf = validate.validate_number_cpf_employee(cpf_new)
                while cpf_new.isdigit() is False or len(cpf_new) != 11 or \
                        cpf_validate is not None or analsying_cpf == 0:
                    print("_" * 80)
                    print("Por favor digite o Número do CPF do Funcionário corretamente ou\n"
                          "Este CPF já está sendo usado no Sistema.")
                    cpf_new = input("Digite o Novo Número do CPF do Cliente: ")
                    cpf_new = cpf_new.replace(".", "")
                    cpf_new = cpf_new.replace("-", "")
                    cpf_validate = self.return_id(cpf_new)
                    analsying_cpf = validate.validate_number_cpf_employee(cpf_new)

                self.update_cpf(cpf_current_employee, cpf_new, user_id)

            elif choice == "7":
                telephone = input("Digite o Número do Telefone do Funcionário: ")
                telephone = telephone.replace(".", "")
                telephone = telephone.replace("-", "")
                telephone = telephone.replace("/", "")
                while telephone.isdigit() is False:
                    print("_" * 80)
                    print("Por Favor Digite o Número do Telefone corretamente.")
                    telephone = input("Digite o Número do Telefone do Funcionário: ")
                    telephone = telephone.replace(".", "")
                    telephone = telephone.replace("-", "")
                    telephone = telephone.replace("/", "")
                self.update_telephone(cpf_current_employee, telephone, user_id)

            elif choice == "8":
                cellphone = input("Digite o Número do Celular do Funcionário: ")
                cellphone = cellphone.replace(".", "")
                cellphone = cellphone.replace("-", "")
                cellphone = cellphone.replace("/", "")
                while cellphone.isdigit() is False or cellphone[0].count("9") == 0:
                    print("_" * 80)
                    print("Por Favor Digite o Número do Celular corretamente.")
                    cellphone = input("Digite o Número do Celular do Funcionário: ")
                    cellphone = cellphone.replace(".", "")
                    cellphone = cellphone.replace("-", "")
                    cellphone = cellphone.replace("/", "")
                self.update_cellphone(cpf_current_employee, cellphone, user_id)

            elif choice == "9":
                street = input("Digite o Nome da Rua do Funcionário: ")
                street = street.title()
                while street is "":
                    print("_" * 80)
                    print("Por Favor Digite o Nome da Rua.")
                    street = input("Digite o Nome da Rua do Funcionário: ")
                    street = street.title()
                self.update_street(cpf_current_employee, street, user_id)

            elif choice == "10":
                number = input("Digite o Número da Casa do Funcionário: ")
                while number.isdigit() is False or number == "0":
                    print("_" * 80)
                    print("Por Favor Digite o Número da Casa do Funcionário.")
                    number = input("Digite o Número da Casa do Funcionário: ")
                self.update_number_street(cpf_current_employee, number, user_id)

            elif choice == "11":
                complement = input("Digite o Complemento do Endereço do Funcionário: ")
                while complement is "":
                    print("_"*80)
                    print("Por Favor Digite um Complemento para O Endereço.")
                    complement = input("Digite o Complemento do Endereço do Funcionário: ")
                self.update_complement(cpf_current_employee, complement, user_id)

            elif choice == "12":
                cep = input("Digite o CEP do Funcionário: ")
                cep = cep.replace(".", "").replace("-", "").replace("/", "").replace("\\", "")
                while cep.isdigit() is False or cep is "" or len(cep) != 8:
                    print("_" * 80)
                    print("Por favor digite o CEP do Funcionário corretamente.")
                    cep = input("Digite o CEP do Funcionário: ")
                    cep = cep.replace(".", "").replace("-", "").replace("/", "").replace("\\", "")
                self.update_cep(cpf_current_employee, cep, user_id)

            elif choice == "13":
                qty_days = input("Digite a Quantidade de Dias que o Funcionário Irá Trabalhar: ")
                while qty_days.isdigit() is False or qty_days == "0":
                    print("_" * 80)
                    print("Por Favor Digite Um Valor Válido Para Quantidade de Dias trabalhados.")
                    qty_days = input("Digite a Quantidade de Dias que o Funcionário Irá Trabalhar: ")
                self.update_qty_days(cpf_current_employee, qty_days, user_id)

            elif choice == "14":
                entry_time = input("Digite a Horário de Entrada do Funcionário: ")
                entry_time_format = validate.validate_schedule(entry_time)
                while entry_time_format is None:
                    print("_"*80)
                    print("Por Favor Digite Um Horário de Entrada válido.")
                    entry_time = input("Digite a Data de Entrada do Funcionário: ")
                    entry_time_format = validate.validate_schedule(entry_time)
                self.update_entry_hour(cpf_current_employee, entry_time_format, user_id)

            elif choice == "15":
                departure_hour = input("Digite o Horário de Saída do Funcionário: ")
                departure_hour_format = validate.validate_schedule(departure_hour)
                while departure_hour_format is None:
                    print("_"*80)
                    print("Por Favor Digite um Horário de Saída válido.")
                    departure_hour = input("Digite o Horário de Saída do Funcionário: ")
                    departure_hour_format = validate.validate_schedule(departure_hour)
                self.update_departure_hour(cpf_current_employee, departure_hour_format, user_id)

            elif choice == "16":
                gross_salary = input("Digite o valor do Salário Bruto do Funcionário: ")
                gross_salary = gross_salary.replace(",", ".")

                while gross_salary is "":
                    print("_"*80)
                    print("Por Favor Digite o Valor Do Salário Bruto Corretamente.")
                    gross_salary = input("Digite o valor do Salário Bruto do Funcionário: ")
                    gross_salary = gross_salary.replace(",", ".")

                try:
                    gross_salary_format = float(gross_salary)
                    self.update_salary(cpf_current_employee, gross_salary_format, user_id)
                except ValueError:
                    print("_" * 80)
                    print("Por Favor Digite Somente Números.")

            elif choice == "17":
                job_role = input("Digite o Cargo Do Funcionário: ")
                job_role = job_role.title()
                while job_role is "":
                    print("_"*80)
                    print("Por Favor Digite O Cargo Do Funcionário Corretamente.")
                    job_role = input("Digite o Cargo Do Funcionário: ")
                    job_role = job_role.title()
                self.update_job_role(cpf_current_employee, job_role, user_id)

            elif choice == "18":
                vt = input("O Funcionário Irá Usar Vale Transporte (S - Sim / N - Não): ")
                vt = vt.upper()
                while vt not in ("S", "N"):
                    print("_" * 80)
                    print("Por Favor Digite Apenas as Opções (S - Sim ou N - Não): ")
                    vt = input("O Funcionário Irá Usar Vale Transporte (S - Sim / N - Não): ")
                    vt = vt.upper()
                if vt == "S":
                    vt = "Y"
                self.update_vt(cpf_current_employee, vt, user_id)

            elif choice == "19":
                print("_"*80)
                print("Saindo do Sistema...")
                exit()

        else:
            print("_"*80)
            print("Opção inválida.")

    def delete_employee(self):
        print("_"*80)
        cpf_validate = validate.validate_employee_cpf()
        confirm = input("Deseja Realmente Excluir este Registro ? (S - Sim / N - Não): ")
        confirm = confirm.upper()
        if confirm == "S":
            self.delete(cpf_validate)

        else:
            print("_"*80)
            print("O Registro não foi deletado.")
            print("Saindo do Sistema.")

    def select_all_employee(self):
        print("_" * 80)
        self.select_all()

    def search_for_employee(self):
        print("_" * 80)
        options = input("\t \t \t Escolha Por qual campo buscar o Funcionário \n 1º Buscar por Nome\n "
                        "2º Buscar pelo o Código do Funcionário\n Escolha a sua opção --> ")

        while options not in("1", "2"):
            validate.validate_text_while()
            options = input("\t \t \t Escolha Por qual campo buscar o Funcionário \n 1º Buscar por Nome\n "
                            "2º Buscar pelo o Código do Funcionário\n Escolha a sua opção --> ")

        print("_"*80)
        if options is "1":
            name_employee = input("Digite o nome do Funcionário: ")
            while name_employee is "":
                print("_"*80)
                print("Por favor digite o Nome do Funcionário.")
                name_employee = input("Digite o nome do Funcionário: ")
            self.search_employee(name_employee)

        elif options is "2":
            id_employee = input("Digite o Código do Funcionário: ")
            while id_employee.isdigit() is False:
                print("_" * 80)
                print("Por favor digite o Código do Funcionário.")
                id_employee = input("Digite o Código do Funcionário: ")
            self.search_id_func(id_employee)
class RentDvdGameMenu(RentDvdGame):
    global validate, report_txt
    report_txt = Report()
    validate = Validate()

    def rent_dvd_game_menu(self, user_id):
        print("_"*80)
        choice = input("\n \t \t \t Menu de Empréstimo de DVD's e Jogos\n" + "_"*80 +
                       "\n Escolha uma das Opções abaixo\n\n 1º Empréstimo de DVD's e Filmes\n "
                       "2º Alterar Empréstimo de DVD's ou Jogos\n 3º Excluir um Registro\n "
                       "4º Verificar Todos os Registros\n 5º Pesquisar por um registro.\n "
                       "6º Relatório de Empréstimos\n 7º Sair\n Escolha a sua opção aqui --> ")
        while choice not in("1", "2", "3", "4", "5", "6", "7"):
            validate.validate_text_while()
            choice = input("\n \t \t \t Menu de Empréstimo de DVD's e Jogos\n" + "_" * 80 +
                           "\n Escolha uma das Opções abaixo\n\n 1º Empréstimo de DVD's e Filmes\n "
                           "2º Alterar Empréstimo de DVD's ou Jogos\n 3º Excluir um Registro\n "
                           "4º Verificar Todos os Registros\n 5º Pesquisar por um registro.\n "
                           "6º Relatório de Empréstimos\n 7º Sair\n Escolha a sua opção aqui --> ")

        if choice == "1":
            self.register_rent_dvd_game(user_id)

        elif choice == "2":
            self.update_rent_dvd_game(user_id)

        elif choice == "3":
            self.delete_rent_dvd_game()

        elif choice == "4":
            self.select_all_rent_dvd_game()

        elif choice == "5":
            self.search_for_rent_dvd_game()

        elif choice == "6":
            self.report_txt_history_rent()

        elif choice == "7":
            print("_"*80)
            print("Encerrando o Programa")
            exit()

        else:
            print("_"*80)
            print("Opção inválida.")

    def register_rent_dvd_game(self, user_id):
        try:
            daily_value_format = 0
            print("_"*80)
            cpf_employee = validate.validate_employee_cpf()
            cpf_customer = validate.validate_customer_cpf()
            name_dvd_game = validate.validate_name_dvd_game()

            qty_days_rent = input("Digite a quantidade de dias para empréstimo: ")
            while qty_days_rent.isnumeric() is False:
                print("_"*80)
                print("Por favor digite um valor válido para quantidade de dias.")
                qty_days_rent = input("Digite a quantidade de dias para empréstimo: ")

            if qty_days_rent.isnumeric():
                try:
                    while int(qty_days_rent) <= 0:
                        print("_" * 80)
                        print("Por favor digite um valor maior que zero!")
                        qty_days_rent = int(input("Digite a quantidade de dias para empréstimo: "))

                except ValueError:
                    print("_"*80)
                    print("Por favor digite somente valores numéricos.")
                    exit()

            daily_value = input("Digite o valor da diária: ")
            daily_value = daily_value.replace(",", ".")
            while daily_value is "":
                print("_" * 80)
                print("Por favor digite um valor válido.")
                daily_value = input("Digite o valor da diária: ")
                daily_value.replace(",", ".")

            try:
                daily_value_format = float(daily_value)
                while daily_value_format <= 0:
                    print("_" * 80)
                    print("Por favor digite um valor diário corretamente.")
                    daily_value = input("Digite o valor da diária: ")
                    daily_value.replace(",", ".")
                    daily_value_format = float(daily_value)

            except ValueError:
                print("_" * 80)
                print("Por favor digite somente valores numéricos.")
                exit()

            datas_rent_dvd_game = []
            rent_dvd_game_set_get = RentDvdGameGetSet(int(qty_days_rent), float(daily_value_format), cpf_employee,
                                                      cpf_customer, name_dvd_game, user_id)

            datas_rent_dvd_game.append(rent_dvd_game_set_get.quantity_days_rent)
            datas_rent_dvd_game.append(rent_dvd_game_set_get.daily_value)
            datas_rent_dvd_game.append(rent_dvd_game_set_get.cpf_employee)
            datas_rent_dvd_game.append(rent_dvd_game_set_get.cpf_customer)
            datas_rent_dvd_game.append(rent_dvd_game_set_get.name_dvd_game)
            datas_rent_dvd_game.append(rent_dvd_game_set_get.user_id)
            self.insert(datas_rent_dvd_game)

        except():
            print("_"*80)
            print("Erro em geral ao tentar registrar o Empréstimo deste Dvd ou Jogo.")

    def update_rent_dvd_game(self, user_id):
        print("_"*80)
        options = input("\t \t \t Menu de Alterações\n " + "_"*80 +
                        "\n Escolha uma das opções abaixo\n\n 1º Alterar Cliente"
                        "\n 2º Alterar Dvd ou Jogo\n 3º Alterar funcionário\n"
                        " 4º Alterar a Quantidade de dias alugado\n 5º Alterar Valor da diária\n "
                        "6º Sair\n Escolha a sua opção aqui -->  ")

        if options in("1", "2", "3", "4", "5"):
            validate_cpf_customer = validate.validate_customer_cpf()
            validate_name_dvd_game = validate.validate_name_dvd_game()

            id_customer = self.return_id_cliente(validate_cpf_customer)
            id_dvd_game = self.return_id_dvd_jogo(validate_name_dvd_game)
            id_rent_dvd_game = self.return_id_empr_dvd_jogo(id_customer, id_dvd_game)

            if id_rent_dvd_game is not None:
                if options == "1":
                    print("_"*80)
                    print("CPF do Novo Cliente abaixo.")
                    new_cpf_customer = validate.validate_customer_cpf()
                    self.update_id_customer(validate_cpf_customer, validate_name_dvd_game, new_cpf_customer, user_id)

                elif options == "2":
                    print("_" * 80)
                    print("Nome do Novo DVD ou Jogo abaixo.")
                    new_name_dvd_game = validate.validate_name_dvd_game()
                    self.update_id_dvd_game(validate_cpf_customer, validate_name_dvd_game, new_name_dvd_game, user_id)

                elif options == "3":
                    old_cpf_employee = validate.validate_employee_cpf()
                    if old_cpf_employee is not None:
                        print("_" * 80)
                        print("CPF do Novo Funcionário abaixo.")
                        new_cpf_employee = validate.validate_employee_cpf()
                        self.update_id_employee(validate_cpf_customer, validate_name_dvd_game, new_cpf_employee,
                                                user_id)

                elif options == "4":
                    print("_" * 80)
                    print("Nova Quantidade de dias emprestados abaixo.")
                    qty_days_rent = input("Digite a quantidade de dias para empréstimo: ")
                    while qty_days_rent.isnumeric() is False:
                        print("_" * 80)
                        print("Por favor digite um valor válido para quantidade de dias.")
                        qty_days_rent = input("Digite a quantidade de dias para empréstimo: ")

                    if qty_days_rent.isnumeric():
                        try:
                            while int(qty_days_rent) <= 0:
                                print("_" * 80)
                                print("Por favor digite um valor maior que zero!")
                                qty_days_rent = int(input("Digite a quantidade de dias para empréstimo: "))

                            self.update_qty_days_emp(validate_cpf_customer, validate_name_dvd_game, qty_days_rent,
                                                     user_id)

                        except ValueError:
                            print("_" * 80)
                            print("Por favor digite somente valores numéricos.")
                            exit()

                elif options == "5":
                    print("_" * 80)
                    print("Novo Valor diário do Empréstimo abaixo.")
                    daily_value = input("Digite o valor da diária: ")
                    daily_value = daily_value.replace(",", ".")
                    while daily_value is "":
                        print("_" * 80)
                        print("Por favor digite um valor válido.")
                        daily_value = input("Digite o valor da diária: ")
                        daily_value.replace(",", ".")

                    try:
                        daily_value_format = float(daily_value)
                        while daily_value_format <= 0:
                            print("_" * 80)
                            print("Por favor digite um valor diário corretamente.")
                            daily_value = input("Digite o valor da diária: ")
                            daily_value.replace(",", ".")
                            daily_value_format = float(daily_value)
                        self.update_daily_value(validate_cpf_customer, validate_name_dvd_game, daily_value_format,
                                                user_id)

                    except ValueError:
                        print("_" * 80)
                        print("Por favor digite somente valores numéricos.")
                        exit()

        elif options == "6":
            print("_"*80)
            print("Encerrando o programa...")
            exit()

        else:
            print("_"*80)
            print("Opção inválida")

    def delete_rent_dvd_game(self):
        print("_"*80)
        customer_cpf = validate.validate_customer_cpf()
        name_dvd_game = validate.validate_name_dvd_game()

        confirm_delete = input("Deseja realmente Excluir este registro ? (S - Sim ou  N - Não): ")
        confirm_delete = confirm_delete.upper()

        if confirm_delete == "S":
            self.delete(customer_cpf, name_dvd_game)

    def select_all_rent_dvd_game(self):
        print("_"*80)
        self.select_all()

    def search_for_rent_dvd_game(self):
        print("_"*80)
        customer_name = input("Digite o nome do cliente: ")
        while customer_name is "":
            print("_"*80)
            print("Por favor digite o nome do cliente.")
            customer_name = input("Digite o nome do cliente: ")

        name_dvd_game = input("Digite o nome do Dvd ou Jogo: ")
        self.search_rent_dvd_game(customer_name, name_dvd_game)

    @staticmethod
    def report_txt_history_rent():
        start_date_format = ""
        print("_"*80)
        start_date = input("Digite a Data Inicial: ")
        if start_date is "":
            now = DateHourNow()
            start_date = now.get_just_date()

        start_date_format = validate.validation_date_select(start_date)

        while start_date_format is None:
            print("_" * 80)
            print("Por favor digite a Data Inicial corretamente.")
            start_date = input("Digite a Data Inicial: ")
            start_date_format = validate.validation_date_select(start_date)

        end_date = input("Digite a Data Final: ")
        if end_date is "":
            end_date = start_date_format
        end_date_format = validate.validation_date_select(end_date)

        while end_date_format is None:
            print("_" * 80)
            print("Por favor digite a Data Final corretamente.")
            end_date = input("Digite a Data Final: ")
            end_date_format = validate.validation_date_select(end_date)

        report_txt.report_txt(start_date_format, end_date_format)
示例#5
0
class MainMenu:

    global login
    login = Login()

    global validate
    validate = Validate()

    def main_menu(self):

        print("_" * 80)
        change = input(
            "\n \t \t \t Menu de Login Locadora \n" + "_" * 80 +
            "\n 1º Login\n 2º Cadastrar\n 3º Esqueci a Minha Senha\n 4º Alterar a Pergunta do Login\n "
            "5º Alterar a Reposta da Pergunta do Login\n 6º Alterar a Senha do Login\n "
            "7º Exit\n Escolha a sua opção --> ")

        while change not in ("1", "2", "3", "4", "5", "6", "7"):
            validate.validate_text_while()
            change = input(
                "\n \t \t \t Menu de Login Locadora \n" + "_" * 80 +
                "\n 1º Login\n 2º Cadastrar\n 3º Esqueci a Minha Senha\n 4º Alterar a Pergunta do Login\n "
                "5º Alterar a Reposta da Pergunta do Login\n 6º Alterar a Senha do Login\n "
                "7º Exit\n Escolha a sua opção --> ")

        if change == "1":
            self.logar()

        elif change == "2":
            self.register()

        elif change == "3":
            self.recover_password()

        elif change == "4":
            self.update_question()

        elif change == "5":
            self.update_answer()

        elif change == "6":
            self.update_password()

        elif change == "7":
            print("_" * 80)
            print("Saindo do Sistem de Locadora.")
            exit()

    @staticmethod
    def logar():
        print("_" * 80)
        cpf = input("Digite o seu CPF: ")
        cpf = cpf.replace(".", "")
        cpf = cpf.replace("-", "")
        while cpf is "" or cpf.isdigit() is False or len(cpf) != 11:
            print("_" * 80)
            print("Por favor digite o seu CPF corretamente.")
            cpf = input("Digite o seu CPF: ")
            cpf = cpf.replace(".", "")
            cpf = cpf.replace("-", "")

        password = input("Digite a sua senha: ")
        while password is "":
            print("_" * 80)
            print("Por favor digite a sua senha.")
            password = input("Digite a sua senha: ")

        logado = login.logar(cpf, password)
        if logado == "Logado com Sucesso":
            user_id = login.return_id_func(cpf)
            job_role = login.return_job_rule(cpf)
            secundary_menu = SecundaryMenu()
            secundary_menu.secundary_menu(job_role, user_id)

    @staticmethod
    def register():
        print("_" * 80)
        print("\t \t \t Cadastro de Logins de Funcionário. \n")
        cpf_validate = validate.validate_employee_cpf()

        password = input("Digite uma senha: ")
        while password is "":
            print("_" * 80)
            print("Por favor digite a sua senha.")
            password = input("Digite uma senha: ")

        confirm_password = input("Digite a sua senha novamente: ")
        while confirm_password is "":
            print("_" * 80)
            print("Por favor confirme a sua senha.")
            confirm_password = input("Digite a sua senha novamente: ")

        question = input("Digite uma pergunta para recuperar a senha: ")
        while question is "":
            print("_" * 80)
            print("Por favor digite a pergunta.")
            question = input("Digite uma pergunta para recuperar a senha: ")

        answer = input("Digite uma resposta para a pergunta acima: ")
        while answer is "":
            print("_" * 80)
            print("Por favor digite a resposta da pergunta acima.")
            answer = input("Digite uma resposta para a pergunta acima: ")

        if cpf_validate is not None and password == confirm_password:
            register = LoginGetSet(cpf_validate, password, question, answer)
            login.insert(register.cpf, register.password, register.question,
                         register.answer)

        elif password != confirm_password:
            print("_" * 80)
            print("O cadastro não foi feito, pois as senhas não coincidem.")

        elif cpf_validate is None:
            print("_" * 80)
            print("Este CPF não está cadastrado no sistema.")

        else:
            print("_" * 80)
            print("Não foi possível criar o login.")

    @staticmethod
    def recover_password():
        print("_" * 80)
        print("\t \t \t Esqueci a Minha Senha. \n")
        cpf_validate = validate.validate_employee_cpf()

        if cpf_validate is not None:
            login.recover_password(cpf_validate)
        else:
            print("_" * 80)
            print("Este CPF não existe cadastrado no sistema.")
            print("_" * 80)

    @staticmethod
    def update_question():
        print("_" * 80)
        print("\t \t \t Alterar da Pergunta do Login \n")
        cpf_validate = validate.validate_employee_cpf()
        password_current = input("Digite a Sua Senha: ")
        logar = login.exist_login(cpf_validate, password_current)

        if logar is not None:

            question = input("Digite a Nova pergunta: ")
            while question is "":
                print("_" * 80)
                print("Por favor digite a nova Pergunta.")
                question = input("Digite a Nova pergunta: ")

            confirm = input(
                "Deseja realmente alterar a Pergunta(S - Sim ou N - Não): ")
            confirm = confirm.upper()
            if confirm == "S":
                login.update_question(cpf_validate, question)
            else:
                print("_" * 80)
                print("A Alteração da Pergunta não foi realizada.")

        else:
            print("_" * 80)
            print("O Login está Incorreto a Alteração não foi realizada...")

    @staticmethod
    def update_answer():
        print("_" * 80)
        print("\t \t \t Alterar da Reposta do Login \n")
        cpf_validate = validate.validate_employee_cpf()
        password_current = input("Digite a Sua Senha: ")
        logar = login.exist_login(cpf_validate, password_current)

        if logar is not None:
            answer = input("Digite a Nova Resposta da Pergunta do Login: "******"":
                print("_" * 80)
                print("Por favor digite a nova Resposta.")
                answer = input("Digite a Nova Resposta da Pergunta do Login: "******"Deseja realmente alterar a Resposta(S - Sim ou N - Não): ")
            confirm = confirm.upper()
            if confirm == "S":
                login.update_answer(cpf_validate, answer)
            else:
                print("_" * 80)
                print("A Alteração da Resposta não foi realizada.")

        else:
            print("_" * 80)
            print("O Login está incorreto a Alteração não foi realizada...")

    @staticmethod
    def update_password():
        print("_" * 80)
        print("\t \t \t Alterar da Senha do Login \n")
        cpf_validate = validate.validate_employee_cpf()
        password_current = input("Digite a Sua Senha Atual: ")
        login_validate = login.exist_login(cpf_validate, password_current)

        if login_validate is not None:
            password = input("Digite a Nova Senha do Login: "******"Digite a Nova Senha do Login Novamente: ")
            while password is "":
                print("_" * 80)
                print("Por favor digite a nova Senha.")
                password = input("Digite a Nova Senha do Login: "******"":
                print("_" * 80)
                print("Por favor digite a nova Senha Novamente.")
                confirm_password = input(
                    "Digite a Nova Senha do Login Novamente: ")

            if password == confirm_password:
                confirm = input(
                    "Deseja realmente alterar a Senha(S - Sim ou N - Não): ")
                confirm = confirm.upper()
                if confirm == "S":
                    login.update_password(cpf_validate, password)
                else:
                    print("_" * 80)
                    print("A Alteração da Senha não foi realizada.")

            else:
                print("_" * 80)
                print(
                    "As senhas não são as mesmas, a alteração não foi realizada."
                )

        else:
            print("_" * 80)
            print("Login incorreto a Alteração não foi realizada...")
class DvdGameMenu(DvdGame):

    global validate
    validate = Validate()

    def dvd_game_menu(self, user_id):
        print("_" * 80)
        choice_options = input(
            "\n \t \t \t Menu de Dvd 's e Jogos\n\n " + "_" * 80 + "\n " +
            "1º Consultar Dvd ou Jogos\n 2º Pesquisar por Dvd ou Jogo\n 3º Inserir Novo Dvd ou Jogo"
            "\n 4º Alterar Dvd ou Jogo\n 5º Excluir Jogo ou Dvd\n 6º Carga em CSV\n "
            "7º Sair\n Escolha a sua Opcação --> ")
        while choice_options not in ("1", "2", "3", "4", "5", "6", "7"):
            validate.validate_text_while()
            choice_options = input(
                "\n \t \t \t Menu de Dvd 's e Jogos\n\n " + "_" * 80 + "\n" +
                "\n 1º Consultar Dvd ou Jogos\n 2º Pesquisar por Dvd ou Jogo\n "
                "3º Inserir Novo Dvd ou Jogo \n 4º Alterar Dvd ou Jogo\n "
                "5º Excluir Jogo ou Dvd\n 6º Carga em CSV\n 7º Sair\n Escolha a sua Opcação --> "
            )
        if choice_options == "1":
            self.select_all_dvd_game()

        elif choice_options == "2":
            self.search_for_dvd_game()

        elif choice_options == "3":
            self.register_dvd_game(user_id)

        elif choice_options == "4":
            self.update_dvd_game(user_id)

        elif choice_options == "5":
            self.delete_dvd_game()

        elif choice_options == "6":
            print("_" * 80)
            self.import_lines_csv(user_id)

        elif choice_options == "7":
            print("_" * 80)
            print("Saindo do Sistema.")
            exit()

    def register_dvd_game(self, user_id):
        price_format = 0

        print("_" * 80)
        name = input("Digite o Nome do Novo Dvd ou Jogo: ")
        while name is "":
            print("_" * 80)
            print("Por favor digite corretamente o Nome do Dvd ou do Jogo.")
            name = input("Digite o Nome do Novo Dvd ou Jogo: ")

        genare = input("Digite o Genêro do Dvd ou do Jogo: ")
        while genare is "" or genare.isdigit():
            print("_" * 80)
            print("Por favor digite corretamente o Genêro do Dvd ou do Jogo. ")
            genare = input("Digite o Genêro: ")

        classification_age = input("Digite a Classificação de Idade: ")
        while classification_age is "" or classification_age.isdigit(
        ) is False or int(classification_age) < 0:
            print("_" * 80)
            print("Por favor digite corretamente a Classificação de Idade.")
            classification_age = input("Digite a Classificação de Idade:")

        type_dvd_game = input("Digite o Tipo (Dvd ou Jogo): ")
        type_dvd_game = type_dvd_game.title()
        while type_dvd_game not in ("Dvd", "Jogo"):
            print("_" * 80)
            print(
                "Por favor digite corretamente o Tipo da Mídia que você está cadastrando."
            )
            type_dvd_game = input("Digite o Tipo (Dvd ou Jogo): ")
            type_dvd_game = type_dvd_game.title()

        try:
            price = input("Digite o Preço da Mídia: ")
            price = price.replace(",", ".")
            price_format = float(price)

            while price_format <= 0:
                print("_" * 80)
                print("Por favor digite o Valor do Preço corretamente.")
                price = input("Digite o Preço da Mídia: ")
                price = price.replace(",", ".")
                price_format = float(price)

        except ValueError:
            print("_" * 80)
            print("Por favor digite apenas valores numéricos.")
            exit()

        date_fabrication = input(
            "Digite a Data de Fabricação do Dvd ou Jogo: ")
        date_format = validate.validation_date_insert(date_fabrication)

        while date_format is None:
            print("_" * 80)
            print("Por favor digite a Data de Fabricação corretamente.")
            date_fabrication = input(
                "Digite a Data de Fabricação do Dvd ou Jogo: ")
            date_format = validate.validation_date_insert(date_fabrication)

        qty = input("Digite a Quantidade de Dvd ou Jogos: ")
        while qty is "" or qty.isnumeric() is False or int(qty) <= 0:
            print("_" * 80)
            print(
                "Por favor digite corretamente a Quantidade de Dvd ou Jogo: ")
            qty = input("Digite a Quantidade de Dvd ou Jogos: ")

        datas_dvd_game = []
        dvd_game_set_get = DvdGamesGetSet(name, genare,
                                          int(classification_age),
                                          type_dvd_game, price_format,
                                          date_format, int(qty), user_id)

        datas_dvd_game.append(dvd_game_set_get.name_game)
        datas_dvd_game.append(dvd_game_set_get.genare)
        datas_dvd_game.append(dvd_game_set_get.classific_age)
        datas_dvd_game.append(dvd_game_set_get.type_dvd_game)
        datas_dvd_game.append(dvd_game_set_get.price)
        datas_dvd_game.append(dvd_game_set_get.date_fabrication)
        datas_dvd_game.append(dvd_game_set_get.quantity)
        datas_dvd_game.append(dvd_game_set_get.user_id)

        self.insert(datas_dvd_game)

    def update_dvd_game(self, user_id):
        print("_" * 80)
        options_updates = input(
            "\t \t \t Menu de Alteração de Dados de DVD's e Jogos \n" +
            "_" * 80 + "\n Escolha o Índice do Campo que Você Quer Alterar\n\n"
            " 1º Nome\n 2º Gênero\n 3º Classificação de Idade\n 4º Tipo (Dvd ou Jogo)\n"
            " 5º Preço\n 6º Data de Fabricação\n 7º Quantidade\n Escolha a sua opção --> "
        )

        if options_updates in ("1", "2", "3", "4", "5", "6", "7"):
            print("_" * 80)
            name = validate.validate_name_dvd_game()

            if options_updates == "1":
                new_name = input("Digite o Nome do Novo Dvd ou Jogo : ")
                while new_name is "":
                    print("_" * 80)
                    print(
                        "Por favor digite corretamente o Nome do Dvd ou do Jogo."
                    )
                    new_name = input("Digite o Nome do Novo Dvd ou Jogo : ")
                self.update_name(name, new_name, user_id)

            elif options_updates == "2":
                genare = input("Digite o Genêro do Dvd ou do Jogo: ")
                while genare is "" or genare.isdigit():
                    print("_" * 80)
                    print(
                        "Por favor digite corretamente o Genêro do Dvd ou do Jogo. "
                    )
                    genare = input("Digite o Genêro: ")
                self.update_genare(name, genare, user_id)

            elif options_updates == "3":
                classification_age = input("Digite a Classificação de Idade: ")
                while classification_age is "" or classification_age.isdigit(
                ) is False or int(classification_age) < 0:
                    print("_" * 80)
                    print(
                        "Por favor digite corretamente a Classificação de Idade."
                    )
                    classification_age = input(
                        "Digite a Classificação de Idade:")
                self.update_classification_age(name, int(classification_age),
                                               user_id)

            elif options_updates == "4":
                type_dvd_game = input("Digite o Tipo (Dvd ou Jogo): ")
                type_dvd_game = type_dvd_game.title()
                while type_dvd_game not in ("Dvd", "Jogo"):
                    print("_" * 80)
                    print(
                        "Por favor digite corretamente o Tipo da Mídia que você está cadastrando."
                    )
                    type_dvd_game = input("Digite o Tipo (Dvd ou Jogo): ")
                    type_dvd_game = type_dvd_game.title()
                self.update_type_dvd_game(name, type_dvd_game, user_id)

            elif options_updates == "5":
                try:
                    price = input("Digite o Preço da Mídia: ")
                    price = price.replace(",", ".")
                    while price.isalpha() or float(price) <= 0:
                        print("_" * 80)
                        print(
                            "Por favor digite o Valor do Preço corretamente.")
                        price = input("Digite o Preço da Mídia: ")
                        price = price.replace(",", ".")
                    self.update_price(name, float(price), user_id)

                except ValueError:
                    print("_" * 80)
                    print("Por favor digite um valor válido.")

            elif options_updates == "6":
                date_fabrication = input(
                    "Digite a Data de Fabricação do Dvd ou Jogo: ")
                date_fabrication_format = validate.validation_date_insert(
                    date_fabrication)

                while date_fabrication_format is None:
                    print("_" * 80)
                    print(
                        "Por favor digite a Data de Fabricação corretamente.")
                    date_fabrication = input(
                        "Digite a Data de Fabricação do Dvd ou Jogo: ")
                    date_fabrication_format = validate.validation_date_insert(
                        date_fabrication)

                self.update_fabrication_date(name, date_fabrication_format,
                                             user_id)

            elif options_updates == "7":
                qty = input("Digite a Quantidade de Dvd ou Jogos: ")
                while qty is "" or qty.isnumeric() is False or int(qty) <= 0:
                    print("_" * 80)
                    print(
                        "Por favor digite corretamente a Quantidade de Dvd ou Jogo: "
                    )
                    qty = input("Digite a Quantidade de Dvd ou Jogos: ")

                self.update_quantity(name, int(qty), user_id)

        else:
            print("_" * 80)
            print("Opção Inválida.")

    def delete_dvd_game(self):
        print("_" * 80)
        name_dvd_game = validate.validate_name_dvd_game()
        confirm_delete = input(
            "Você realmente deseja deletar este Registro (S - Sim/ N - Não): ")
        confirm_delete = confirm_delete.upper()
        if confirm_delete == "S":
            self.delete(name_dvd_game)

        else:
            print("_" * 80)
            print("O registro não foi excluído.")

    def select_all_dvd_game(self):
        print("_" * 80)
        self.select_all()

    def search_for_dvd_game(self):
        print("_" * 80)
        name_dvd_game = input("Digite o Nome do Dvd ou Jogo: ")
        while name_dvd_game is "":
            print("_" * 80)
            print("Por favor Digite o Nome do Dvd ou Jogo corretamente.")
            name_dvd_game = input("Digite o Nome do Dvd ou Jogo: ")

        self.search_dvd_game(name_dvd_game)

    @staticmethod
    def import_lines_csv(user_id):
        insert_dvd_game_csv = DataLoad()
        insert_dvd_game_csv.data_load_csv(user_id)
    def data_load_csv(user_id):
        try:
            datas = []
            cont_linhas = 0
            date_now = DateHourNow()
            date_hour_now = date_now.get_date_hour_now()
            validate_date = Validate()

            list_files = os.listdir(
                'C:\\Users\\joaovpinto\\PycharmProject\\Sistema_Locadora\\Sistema_Locadora'
                '\\Operations_Files\\Directory_Uploads\\CSV')
            name_file = input("Nome do Arquivo sem a extensão: ")
            while name_file is "":
                print("_" * 80)
                print("Por favor digite o nome do arquivo.")
                name_file = input("Nome do Arquivo sem a extensão: ")

            if name_file.count(".csv") == 0:
                name_file = name_file + ".csv"

            if name_file in list_files:
                with open(
                        "C:\\Users\\joaovpinto\\PycharmProject\\Sistema_Locadora\\Sistema_Locadora\\Operations_Files"
                        "\\Directory_Uploads\\CSV\\" + name_file,
                        "r") as ficheiro:
                    reader = csv.reader(ficheiro)
                    next(reader)
                    print("_" * 80)
                    print("\t \t \t Programa de Carga de DVD's e Jogos.")
                    print("Nome do Arquivo: ", name_file)
                    print("Diretório do Arquivo: CSV")
                    print("Data e Horário de Execução do Programa: ",
                          date_hour_now)

                    for line in reader:
                        text = str(line).replace("'", "").replace(
                            "[", "").replace("']", "").replace("[ ", "")

                        name_dvd_game = text[:text.find(";")]
                        text = text[text.find(";") + 1:]

                        genare = text[:text.find(";")]
                        text = text[text.find(";") + 1:]

                        classification_age = text[:text.find(";")]
                        text = text[text.find(";") + 1:]

                        type_media = text[:text.find(";")]
                        text = text[text.find(";") + 1:]

                        price = text[:text.find(";")]
                        text = text[text.find(";") + 1:]

                        qty = text[:text.find(";")]
                        text = text[text.find(";") + 1:]

                        datas.insert(0, name_dvd_game)
                        datas.insert(1, genare)
                        datas.insert(2, classification_age)
                        datas.insert(3, type_media)
                        datas.insert(4, price)
                        datas.insert(5, qty)
                        datas.insert(6, int(user_id))

                        print("_" * 80)
                        print("Nome do Dvd ou Jogo: ", name_dvd_game)
                        print("Genêro: ", genare)
                        print("Classificação de Idade: ", classification_age)
                        print("Tipo: ", type_media)
                        print("Preço: ", price)
                        print("Quantidade: ", qty)

                        insert_dvd_game.insert_multiple(datas)
                        cont_linhas += 1

                    print("_" * 80)
                    print("Quantidade de registros cadastrados com sucesso: ",
                          cont_linhas)
                    insert_dvd_game.close_connection()
                    ficheiro.close()

            else:
                print("_" * 80)
                print(
                    f"O Arquivo {name_file} não existe salvo dentro do diretório CSV."
                )
                print("Por favor verifique o diretório!")
                insert_dvd_game.close_connection()

        except csv.Error as e:
            print("_" * 80)
            sys.exit("Ficheiro: {0}\n Linha:{1}\n Erro: e".format(
                ficheiro, reader.line_num, e))
            ficheiro.close()
            insert_dvd_game.close_connection()

        except ():
            print("_" * 80)
            print("Erro ao tentar ler o arquivo: ")
            ficheiro.close()
            insert_dvd_game.close_connection()