예제 #1
0
def RecibosCliente():
    def sortData(val):
        data = val[4][6:] + val[4][3:5] + val[4][0:2]
        return int(data)

    def sortNome(val):
        return val[8]

    def sortArea(val):
        return val[9]

    def sortValor(val):
        valor = val[3].replace("R$", "").replace(",", "")
        return int(valor)

    id_cliente = session['id']
    recibos = controler.select("*", "atendimentos", "id_cliente=" + id_cliente)
    recibosNew = []
    for recibo in recibos:
        recibo = list(recibo)
        recibo.append(
            controler.select("nome", "usuarios", "id=" + str(recibo[1]))[0][0])
        recibo.append(
            controler.select("profissao", "profissionais",
                             "id_profissional=" + str(recibo[1]))[0][0])
        recibosNew.append(recibo)
        recibo[4] = recibo[4].strftime("%d/%m/%Y")

    if request.method == "POST":  # Handles os ordenadores
        if "data" in request.form:
            recibosNew.sort(key=sortData)
        elif "nome" in request.form:
            recibosNew.sort(key=sortNome)
        elif "area" in request.form:
            recibosNew.sort(key=sortArea)
        elif "valor" in request.form:
            recibosNew.sort(key=sortValor)
    if request.method == "POST":
        dic = request.form.to_dict()
        app.logger.warning(dic)
        dicInvertido = dict(zip(dic.values(), dic.keys()))
        if "Baixar recibo" in dicInvertido:
            index = int(dicInvertido["Baixar recibo"])
            id_atendimento = str(recibosNew[index][0])
            rendered = controler.gerar_pdf(id_atendimento)

            pdf = pdfkit.from_string(rendered, False)

            response = make_response(pdf)
            response.headers['Content-Type'] = 'applocation/pdf'
            response.headers[
                'Content-Disposition'] = 'inline; filename = recibo' + id_atendimento + '.pdf'

            return response

    return render_template('RecibosCliente.html', recibos=recibosNew)
예제 #2
0
def meusClientes():
    def sortData(val):
        data = val[4][6:] + val[4][3:5] + val[4][0:2]
        return int(data)

    def sortNome(val):
        return val[8]

    def sortValor(val):
        valor = val[3].replace("R$", "").replace(",", "")
        return int(valor)

    id_profissional = session['id']
    atendimentos = controler.select("*", "atendimentos",
                                    "id_profissional=" + id_profissional)
    clientes = []  #criar lista dos clientes atendidos, só o id
    buffer = []

    for atendimento in atendimentos:
        if atendimento[2] not in buffer:
            clientes.append([atendimento[2]])
            buffer.append(atendimento[2])

    for cliente in clientes:
        cliente.append(
            controler.select("nome", "usuarios",
                             "id=" + str(cliente[0]))[0][0])
        data_ultima_consulta = (controler.ultima_consulta(
            id_profissional, cliente[0])).strftime("%d/%m/%Y")
        cliente.append(data_ultima_consulta)

    if request.method == "POST":  # Handles os ordenadores
        if "data" in request.form:
            clientes.sort(key=sortData)
        elif "nome" in request.form:
            clientes.sort(key=sortNome)
        app.logger.info(clientes[0])

    if request.method == "POST":
        dic = request.form.to_dict()
        app.logger.warning(dic)
        dicInvertido = dict(zip(dic.values(), dic.keys()))
        if "+" in dicInvertido:
            index = int(dicInvertido["+"])
            id_cliente = str(clientes[index][0])
            return redirect(url_for("DetalhesCliente", id_cliente=id_cliente))

    return render_template('MeusClientes.html',
                           recibos=clientes,
                           lenRecibos=len(clientes))
예제 #3
0
def DetalhesCliente(id_cliente):
    if "user" in session:
        id_profissional = session["id"]
        cliente = Cliente(id_cliente)

        def sortData(val):
            data = val[4][6:] + val[4][3:5] + val[4][0:2]
            return int(data)

        def sortValor(val):
            valor = val[3].replace("R$", "").replace(",", "")
            return int(valor)

        where = str.format("id_cliente= {} and id_profissional = {}",
                           id_cliente, id_profissional)
        recibos = controler.select("*", "atendimentos", where)
        recibosNew = []
        for recibo in recibos:
            recibo = list(recibo)
            recibosNew.append(recibo)
            recibo[4] = recibo[4].strftime("%d/%m/%Y")

        if request.method == "POST":  # Handles os ordenadores
            if "data" in request.form:
                recibosNew.sort(key=sortData)
            elif "valor" in request.form:
                recibosNew.sort(key=sortValor)

        return render_template("DetalhesCliente.html",
                               nome_cliente=cliente.nome,
                               telefone_cliente=cliente.telefone,
                               email_cliente=cliente.email,
                               recibos=recibosNew)
    return redirect(url_for('login'))
예제 #4
0
파일: login.py 프로젝트: bopopescu/A2
def DetalhesCliente(id_cliente):
    if "user" in session:
        id_profissional = session["id"]
        cliente = Cliente(id_cliente)

        def sortData(val):
            data = val[4][6:] + val[4][3:5] + val[4][0:2]
            return int(data)
        def sortValor(val): 
            valor = val[3].replace("R$","").replace(",","")
            return int(valor)
            
        where = str.format("id_cliente= {} and id_profissional = {}", id_cliente, id_profissional)
        recibos = controler.select("*", "atendimentos", where)
        recibosNew = []
        for recibo in recibos:
            recibo = list(recibo)
            recibosNew.append(recibo)
            recibo[4] = recibo[4].strftime("%d/%m/%Y")
        
        if request.method == "POST": # Handles os ordenadores
            if "data" in request.form:
                recibosNew.sort(key = sortData)
            elif "valor" in request.form:
                recibosNew.sort(key = sortValor)
        
        if request.method == "POST":
            dic = request.form.to_dict()
            app.logger.warning(dic)
            dicInvertido = dict(zip(dic.values(),dic.keys()))
            if "Baixar recibo" in dicInvertido:
                index = int(dicInvertido["Baixar recibo"])
                id_atendimento = str(recibosNew[index][0])
                rendered = gerar_pdf(id_atendimento)

                pdf = pdfkit.from_string(rendered, False)

                response =  make_response(pdf)
                response.headers['Content-Type'] =  'applocation/pdf'
                response.headers['Content-Disposition'] =   'inline; filename = recibo' + id_atendimento + '.pdf'

                return response

            if "enviarEmail" in dicInvertido:
                index = int(dicInvertido["enviarEmail"])
                id_atendimento = str(recibosNew[index][0])
                cliente = Cliente(controler.cliente_atendido(id_atendimento))

                msg = Message("Recibo", recipients=[cliente.email])
                #msg.body= "Segue em anexo o recibo referente à sua consulta."
                rendered = gerar_pdf(id_atendimento)
                msg.html = rendered
                mail.send(msg)

        return render_template("DetalhesCliente.html", nome_cliente = cliente.nome, telefone_cliente = controler.formata_telefone(cliente.telefone), email_cliente = cliente.email, recibos=recibosNew)
    return redirect(url_for('login'))
예제 #5
0
파일: login.py 프로젝트: bopopescu/A2
def gerar_pdf(id_atendimento):
    id_profissional = str(controler.select("id_profissional", "atendimentos", "id_atendimento="+id_atendimento)[0][0])
    id_cliente = str(controler.select("id_cliente", "atendimentos", "id_atendimento = " + id_atendimento)[0][0])

    profissional = Profissional(id_profissional) #
    app.logger.info(profissional)
    nomeProfissional = profissional.nome #
    cpfProfissional = controler.formata_cpf(profissional.cpf) #
    regProf = profissional.registro_profissional #
    email = profissional.email #
    app.logger.warning(profissional.telefone_comercial)
    telefone = controler.formata_telefone(profissional.telefone_comercial) #
    enderecoComercial = profissional.endereco #
    numero = profissional.numero #
    complemento = profissional.complemento #
    cidade = profissional.cidade #
    estado = profissional.estado #
    cep = controler.formata_cep(profissional.cep) #
    profissao = profissional.profissao

    enderecoCompleto = enderecoComercial + ", " + numero

    if complemento != "-":
        enderecoCompleto = enderecoCompleto + ", " + complemento
    
    enderecoCompleto = enderecoCompleto + ", " + cidade + ", " + estado + ", " + cep

    cliente = Cliente(id_cliente)
    nomeCliente = cliente.nome
    cpfCliente = controler.formata_cpf(cliente.cpf)


    cpfRes = controler.select("cpf_responsavel", "clientes" , "id_cliente = " + id_cliente)[0][0]
    cpfRes = '{}.{}.{}-{}'.format(cpfRes[0:3],cpfRes[3:6],cpfRes[6:9],cpfRes[9:])
    nomeRes = controler.select("nome_responsavel", "clientes" , "id_cliente = " + id_cliente)[0][0]
    precoConsulta = controler.select("valor", "atendimentos", "id_atendimento = " + id_atendimento)[0][0]
    dataDoAtendimento = (controler.select("data_consulta", "atendimentos" , "id_atendimento = " + id_atendimento)[0][0]).strftime("%d/%m/%Y")
    ano = str(datetime.now().year)
    mes = str(datetime.now().month)
    dia = str(datetime.now().day)
    if len(mes)==1:
        mes='0'+mes
        dia = str(datetime.day)
    if len(dia)==1:
        dia='0'+dia
    dataGerado = dia+'/'+mes+'/'+ano

    if nomeRes == '-' or nomeRes == None:
        rendered = render_template('pdf_template18+.html', nomeProfissional = nomeProfissional, cpfProfissional=cpfProfissional, regProf = regProf, nomeCliente=nomeCliente, cpfCliente=cpfCliente, precoConsulta=precoConsulta, dataDoAtendimento=dataDoAtendimento, email=email, telefone=telefone,enderecoCompleto=enderecoCompleto, enderecoComercial=enderecoComercial, numero=numero, cidade=cidade, estado=estado, CEP=cep, dataGerado=dataGerado)
    else:
        rendered = render_template('pdf_template18-.html', nomeProfissional = nomeProfissional, cpfProfissional=cpfProfissional, regProf = regProf, profissao = profissao, nome = nomeCliente, cpfRes = cpfRes, nomeRes = nomeRes, precoConsulta = precoConsulta, email=email, enderecoCompleto = enderecoCompleto, telefone = telefone, cep = cep , dataDoAtendimento = dataDoAtendimento)

    return rendered
예제 #6
0
파일: login.py 프로젝트: bopopescu/A2
def redf(token):
    error = None
    if request.method == 'POST':
        if controler.valida_token(token):
            senhanova = request.form['senhanova']
            confirma_senhanova = request.form['confirma_senhanova']
            if senhanova == confirma_senhanova:
                hashed_nova = generate_password_hash(senhanova)
                cpf = controler.select('cpf', 'pedido_mudanca_senha', 'chave= "'+token+'"')[0][0]
                if controler.verifica_cpf(cpf, 'usuarios'):
                    ups = {'senha':hashed_nova}
                    controler.update(ups, "usuarios", "cpf="+cpf)
                return redirect(url_for('login'))
            else:
                error = "As senhas não conferem."
        else:
            error = "O token expirou."
    return render_template('redefinir_senha.html', error = error)   
예제 #7
0
def cadastro():
    error = None
    if request.method == "POST":  #cliente
        if request.form["radio"] == '0':
            nome = request.form["nome"]
            data_de_nascimento = request.form["nascimento"]
            cpf = request.form["cpf"]
            telefone = controler.limpa_telefone(request.form["telefone"])
            email = request.form["email"]
            senha = request.form["senha"]
            cep = request.form["cep"]
            endereco = request.form["endereco"]
            numero = request.form["numero"]
            if request.form["complemento"] == "":
                complemento = "-"
            else:
                complemento = request.form["complemento"]
            cidade = request.form["cidade"]
            estado = request.form["estado"]

            if nome == '' or data_de_nascimento == '' or cpf == '' or telefone == '' or email == '' or senha == '' or cep == '' or endereco == '' or numero == '' or cidade == '' or estado == '':
                error = 'Preencha todos os campos!'
            elif cpf == "CPF Inválido" or len(cpf) != 14:
                error = 'Verifique seu CPF!'
            elif endereco == "CEP não encontrado":
                error = 'Verifique seu CEP!'
            elif controler.verifica_email(email, 'usuarios'):
                error = 'Ops! Email já cadastrado.'
            elif len(data_de_nascimento) != 10 or controler.valida_data(
                    data_de_nascimento) or controler.verifica_idade(
                        data_de_nascimento) == "erro":
                error = 'Data de nascimento inválida!'
            else:
                cpf = controler.limpa_cpf(request.form["cpf"])
                if controler.verifica_cpf(
                        cpf, 'usuarios'
                ):  #verificar o tipo -> se for 0 -> apenas update
                    tipo = controler.cpf_tipo(cpf, "usuarios")
                    if tipo == 0:
                        pass
                    else:
                        error = "Este CPF já está cadastrado."

                else:
                    hashed_password = generate_password_hash(senha)
                    if controler.verifica_idade(
                            data_de_nascimento) == False:  #maior de idade
                        nome_responsavel = '-'
                        cpf_responsavel = '-'
                        tipo = 1
                        controler.cadastra_usuario(
                            cpf, nome, email, telefone,
                            controler.converte_data(data_de_nascimento),
                            hashed_password, tipo)
                        id_cliente = controler.select("id", "usuarios",
                                                      "cpf=" + str(cpf))[0][0]
                        controler.cadastra_cliente(id_cliente, cep, endereco,
                                                   numero, complemento, cidade,
                                                   estado, nome_responsavel,
                                                   cpf_responsavel)
                        return redirect(url_for('login'))

                    else:  #menor de idade
                        nome_responsavel = request.form["nomeRes"]
                        cpf_responsavel = request.form["cpfRes"]
                        if nome_responsavel == '' or cpf_responsavel == '':
                            error = 'Preencha todos os campos'
                        elif cpf_responsavel == "CPF Inválido" or len(
                                cpf_responsavel) != 14:
                            error = "Verifique o CPF do responsável"
                        else:
                            tipo = 1
                            controler.cadastra_usuario(
                                cpf, nome, email, telefone,
                                controler.converte_data(data_de_nascimento),
                                hashed_password, tipo)
                            id_cliente = controler.select(
                                "id", "usuarios", "cpf=" + str(cpf))[0][0]
                            controler.cadastra_cliente(id_cliente, cep,
                                                       endereco, numero,
                                                       complemento, cidade,
                                                       estado,
                                                       nome_responsavel,
                                                       cpf_responsavel)
                            return redirect(url_for('login'))

        if request.form["radio"] == '1':  #profissional
            nome = request.form["nomePro"]
            cpf = request.form["cpfPro"]
            profissao = request.form["profissaoPro"]
            registro_profissional = request.form["regProf"]
            telefone = controler.limpa_telefone(request.form["telefonePro"])
            data_de_nascimento = request.form["nascimentoPro"]
            email = request.form["emailPro"]
            senha = request.form["senhaPro"]
            cep = request.form["cepPro"]
            endereco = request.form["enderecoPro"]
            numero = request.form["numeroPro"]
            if request.form["complemento"] == "":
                complemento = "-"
            else:
                complemento = request.form["complemento"]
            cidade = request.form["cidadePro"]
            estado = request.form["estadoPro"]

            if nome == '' or cpf == '' or profissao == '' or telefone == '' or data_de_nascimento == '' or email == '' or senha == '' or cep == '' or endereco == '' or numero == '' or cidade == '' or estado == '':
                error = 'Preencha todos os campos!'
            elif cpf == "CPF Inválido" or len(cpf) != 14:
                error = 'Verifique seu CPF!'
            elif endereco == "CEP não encontrado":
                error = 'Verifique seu CEP!'
            elif controler.verifica_email(email, 'usuarios'):
                error = 'Ops! Email já cadastrado.'
            elif len(data_de_nascimento) != 10 or controler.valida_data(
                    data_de_nascimento) or controler.verifica_idade(
                        data_de_nascimento) == "erro":
                error = 'Data de nascimento inválida'
            elif len(request.form["telefonePro"]) != 14 and len(
                    request.form["telefonePro"]) != 13:
                error = 'Verifique seu telefone!'
            else:
                cpf = controler.limpa_cpf(request.form["cpfPro"])
                if controler.verifica_cpf(cpf, 'usuarios'):
                    if tipo == 0:  #update
                        pass
                    else:
                        error = 'Este CPF já está cadastrado!'
                else:
                    hashed_password = generate_password_hash(senha)
                    tipo = 2
                    controler.cadastra_usuario(
                        cpf, nome, email, telefone,
                        controler.converte_data(data_de_nascimento),
                        hashed_password, tipo)
                    id_profissional = controler.select("id", "usuarios",
                                                       "cpf=" + str(cpf))[0][0]
                    telefone_comercial = telefone
                    controler.cadastra_profissional(id_profissional, profissao,
                                                    registro_profissional,
                                                    telefone_comercial, cep,
                                                    endereco, numero,
                                                    complemento, cidade,
                                                    estado)
                    return redirect(url_for('login'))
    return render_template('create.html', error=error)
예제 #8
0
 def up_senha(self, senha):
     controler.update({'senha': senha}, 'clientes', 'id=' + self.id)
     self.senha = controler.select('senha', 'clientes',
                                   'id=' + self.id)[0][0]
예제 #9
0
 def up_nome(self, nome):
     controler.update({'nome': nome}, 'clientes', 'id=' + self.id)
     self.nome = controler.select('nome', 'clientes', 'id=' + self.id)[0][0]
예제 #10
0
파일: login.py 프로젝트: bopopescu/A2
def RecibosProfissional():
    def sortData(val):
        data = val[4][6:] + val[4][3:5] + val[4][0:2]
        return int(data)
    def sortNome(val): 
        return val[8]
    def sortValor(val): 
        valor = val[3].replace("R$","").replace(",","")
        return int(valor)
    id_profissional = session['id']
    recibos = controler.select("*", "atendimentos", "id_profissional="+id_profissional)
    recibosNew = []
    for recibo in recibos:
        recibo = list(recibo)
        recibo.append(controler.select("nome", "usuarios", "id=" + str(recibo[2]))[0][0])
        recibosNew.append(recibo)
        recibo[4] = recibo[4].strftime("%d/%m/%Y")

    if request.method == "POST": # Handles os ordenadores
        if "data" in request.form:
            app.logger.info("1")
            recibosNew.sort(key = sortData)
        elif "nome" in request.form:
            app.logger.info("2")
            recibosNew.sort(key = sortNome)
        elif "valor" in request.form:
            app.logger.info("3")
            recibosNew.sort(key = sortValor)
        elif "cadastrar" in request.form:
            return redirect(url_for('CadastrarAtendimentos'))
        app.logger.info(recibosNew[0])
    if request.method == "POST":
        dic = request.form.to_dict()
        app.logger.warning(dic)
        dicInvertido = dict(zip(dic.values(),dic.keys()))
        if "Baixar recibo" in dicInvertido :
            index = int(dicInvertido["Baixar recibo"])
            id_atendimento = str(recibosNew[index][0])
            rendered = gerar_pdf(id_atendimento)

            pdf = pdfkit.from_string(rendered, False)

            response =  make_response(pdf)
            response.headers['Content-Type'] =  'applocation/pdf'
            response.headers['Content-Disposition'] =   'inline; filename = recibo' + id_atendimento + '.pdf'

            return response

        if "enviarEmail" in dicInvertido:
            index = int(dicInvertido["enviarEmail"])
            id_atendimento = str(recibosNew[index][0])
            cliente = Cliente(controler.cliente_atendido(id_atendimento))

            msg = Message("Recibo", recipients=[cliente.email])
            #msg.body= "Segue em anexo o recibo referente à sua consulta."
            rendered = gerar_pdf(id_atendimento)
            msg.html = rendered
            mail.send(msg)
            '''

            pdf = pdfkit.from_string(rendered, False)

            response =  make_response(pdf)
            response.headers['Content-Type'] =  'applocation/pdf'
            response.headers['Content-Disposition'] =   'inline; filename = recibo' + id_atendimento + '.pdf'

            with app.open_resource(recibo_gerado) as recibo:
                msg.attach(recibo, "application/pdf", recibo.read())
            mail.send(msg) '''

    return render_template('RecibosProfissional.html', recibos=recibosNew, lenRecibos = len(recibosNew))