Exemplo n.º 1
0
async def create_pessoa_projeto(
        db: Session,
        pessoa_projeto: schemas.PessoaProjetoCreate) -> schemas.PessoaProjeto:

    try:
        projeto = get_projeto(db, pessoa_projeto.projeto.id)
        if pessoa_projeto.pessoa:
            pessoa = get_pessoa(db, pessoa_projeto.pessoa.id)

            db_pessoa_projeto = models.PessoaProjeto(
                pessoa=pessoa,
                projeto=projeto,
                descricao=pessoa_projeto.descricao,
            )
        else:
            db_pessoa_projeto = models.PessoaProjeto(
                projeto=projeto,
                descricao=pessoa_projeto.descricao,
            )

    except HTTPException as e:
        raise e

    db.add(db_pessoa_projeto)
    db.commit()
    print(db_pessoa_projeto)
    db.refresh(db_pessoa_projeto)

    db_vaga = db_pessoa_projeto.__dict__
    print(db_vaga)
    return {"id": db_vaga["id"]}
Exemplo n.º 2
0
def createPDF(db: Session, vaga: PessoaProjeto):
    
    colab = get_pessoa_by_id(db, vaga.pessoa_id)

    projeto = get_projeto(db, vaga.projeto_id)
    idealizador = get_pessoa_by_id(db, projeto.pessoa_id)
    acordo = get_tipo_acordo_by_id(db, vaga.tipo_acordo_id)

    pdf = PDF()
    pdf.add_page()

    # Espaço de formatação
    pdf.cell(20, 20, txt='', ln=1)
    pdf.cell(175, 10, txt=projeto.nome, ln=1, align="C")
    pdf.set_font("Arial", size=16)
    pdf.cell(175, 10, txt=idealizador.nome, ln=1, align="C")

    # Corpo
    pdf.set_font("Arial", size=14)
    pdf.cell(200, 10, txt=colab.nome, ln=1, align="L")
    # Observar após refatoração
    if(vaga.papel_id == 1):
        pdf.cell(200, 10, txt="Aliado", ln=1, align="L")
    elif(vaga.papel_id == 2):
        pdf.cell(200, 10, txt="Colaborador", ln=1,  align="L")
    pdf.cell(200, 10, txt=vaga.titulo, ln=1, align="L")
    pdf.cell(200, 10, txt=acordo.descricao, ln=1, align="L")

    saida = "PDF/acordo" + str(vaga.id) + str(colab.id) + str(idealizador.id) + ".pdf"

    pdf.output(saida)

    return saida
Exemplo n.º 3
0
def notificacao_pendente_idealizador(db: Session):
    '''
        Cria notificacoes periodicamente para PessoaProjetos com situacao PENDENTE_IDEALIZADOR

        Entrada:

        Saída: lista de Esquemas das notificacoes criadas

        Exceções: Item Necessário Faltante
    '''

    pessoa_projetos = db.query(models.PessoaProjeto)\
        .filter(models.PessoaProjeto.situacao == "PENDENTE_IDEALIZADOR")\
        .all()

    # garante que somente uma notificacao será enviada para cada projeto
    projetos = []

    notificacao = []

    for pessoa_projeto in pessoa_projetos:
        if pessoa_projeto.projeto_id in projetos:
            continue

        projeto_id = pessoa_projeto.projeto_id
        projeto = get_projeto(db, projeto_id)

        projetos.append(pessoa_projeto.projeto_id)

        situacao = "Existem pessoas a serem avaliadas para o projeto <strong>"\
            + projeto.nome + "</strong>. Dê uma olhada!"

        if existe_notificacao(db, situacao, projeto.pessoa_id):
            continue

        try:
            db_notificacao = models.Notificacao(
                remetente_id=projeto.pessoa_id,
                destinatario_id=projeto.pessoa_id,
                projeto_id=projeto_id,
                pessoa_projeto_id=pessoa_projeto.id,
                situacao=situacao,
                foto=projeto.foto_capa,
                lido=False,
                link='/projeto/{}/vagas/{}'.format(projeto_id,
                                                   pessoa_projeto.id))
        except:
            raise HTTPException(status.HTTP_404_NOT_FOUND,
                                detail="Item necessário faltante")

        db.add(db_notificacao)
        db.commit()
        db.refresh(db_notificacao)

        notificacao.append(db_notificacao)

    return notificacao
Exemplo n.º 4
0
def notificacao_aceito_recusado(db: Session, colaborador_id: int,
                                pessoa_projeto: PessoaProjeto):
    '''
        Cria uma notificacao baseada na situação de PessoaProjeto

        Entrada: ID do remetente, esquema de PessoaProjeto

        Saída: Esquema da notificacao criada

        Exceções: PessoaProjeto não recusado/aceito
                  Item Necessário faltante
    '''

    if pessoa_projeto.situacao != "RECUSADO" and pessoa_projeto.situacao != "ACEITO":
        raise HTTPException(
            status.HTTP_404_NOT_FOUND,
            detail="PessoaProjeto não recusado/aceito",
        )

    projeto_id = pessoa_projeto.projeto_id
    projeto = get_projeto(db, projeto_id)
    colaborador = get_pessoa_by_id(db, colaborador_id)

    if pessoa_projeto.situacao == "RECUSADO":
        situacao = "<strong>" + colaborador.nome + \
            "</strong> recusou seu convite para o projeto <strong>" + \
            projeto.nome + "</strong>. Realize uma nova busca."

    elif pessoa_projeto.situacao == "ACEITO":
        situacao = "<strong>" + colaborador.nome + \
            "</strong> aceitou seu convite para o projeto <strong>" + \
            projeto.nome + "</strong>. Finalize o acordo e preencha essa vaga!"

    if existe_notificacao(db, situacao, projeto.pessoa_id):
        return

    try:
        db_notificacao = models.Notificacao(
            remetente_id=colaborador_id,
            destinatario_id=projeto.pessoa_id,
            projeto_id=projeto_id,
            pessoa_projeto_id=pessoa_projeto.id,
            situacao=situacao,
            foto=colaborador.foto_perfil,
            lido=False,
            link='/projeto/{}/vagas/{}'.format(projeto_id, pessoa_projeto.id))
    except:
        raise HTTPException(status.HTTP_404_NOT_FOUND,
                            detail="Item necessário faltante")

    db.add(db_notificacao)
    db.commit()
    db.refresh(db_notificacao)

    return db_notificacao
Exemplo n.º 5
0
async def projeto_details(
    request: Request,
    projeto_id: int,
    db=Depends(get_db),
    current_pessoa=Depends(get_current_active_pessoa),
):
    """
    Get any pessoa details
    """
    projeto = get_projeto(db, projeto_id)
    return projeto
Exemplo n.º 6
0
def finaliza_notificacao_vaga(db: Session, pessoa_projeto: PessoaProjeto):

    vaga = pessoa_projeto

    if (vaga.situacao != "FINALIZADO"):
        raise HTTPException(
            status.HTTP_404_NOT_FOUND,
            detail="Vaga não finalizada",
        )

    notificacao = []

    link = createPDF(db, vaga)

    colab = get_pessoa(db, vaga.pessoa_id)
    proj = get_projeto(db, vaga.projeto_id)
    idealizador = get_pessoa(db, proj.pessoa_id)

    # notificacao idealizador
    db_notificacao = models.Notificacao(
        remetente_id=colab.id,
        destinatario_id=idealizador.id,
        projeto_id=vaga.projeto_id,
        pessoa_projeto_id=vaga.id,
        situacao=link,
        lido=False,
    )

    db.add(db_notificacao)
    db.commit()
    db.refresh(db_notificacao)

    notificacao.append(db_notificacao)

    # notificacao colab
    db_notificacao = models.Notificacao(
        remetente_id=idealizador.id,
        destinatario_id=colab.id,
        projeto_id=vaga.projeto_id,
        pessoa_projeto_id=vaga.id,
        situacao=link,
        lido=False,
    )
    db.add(db_notificacao)
    db.commit()
    db.refresh(db_notificacao)

    notificacao.append(db_notificacao)

    return notificacao
Exemplo n.º 7
0
def notificacao_pendente_colaborador(db: Session, idealizador_id: int,
                                     pessoa_projeto: PessoaProjeto):
    '''
        Cria uma notificacao baseada na situacao PENDENTE_COLABORADOR da PessoaProjeto

        Entrada: Esquema de PessoaProjeto, ID do idealizador

        Saída: Esquemas da notificaca criada

        Exceções: PessoaProjeto não pendente_colaborador
                  Item Necessário faltante
    '''

    if (pessoa_projeto.situacao != "PENDENTE_COLABORADOR"):
        raise HTTPException(
            status.HTTP_404_NOT_FOUND,
            detail="PessoaProjeto não pendente_colaborador",
        )

    projeto_id = pessoa_projeto.projeto_id
    projeto = get_projeto(db, projeto_id)
    idealizador = get_pessoa_by_id(db, idealizador_id)

    situacao = "<strong>" + idealizador.nome + "</strong> te convidou para o projeto <strong>" + \
        projeto.nome + "</strong>. Confira!",

    if existe_notificacao(db, situacao, pessoa_projeto.pessoa_id):
        return

    try:
        db_notificacao = models.Notificacao(
            remetente_id=idealizador_id,
            destinatario_id=pessoa_projeto.pessoa_id,
            projeto_id=projeto_id,
            pessoa_projeto_id=pessoa_projeto.id,
            situacao=situacao,
            foto=projeto.foto_capa,
            lido=False,
            link='/projeto/{}/vagas/{}'.format(projeto_id, pessoa_projeto.id))
    except:
        raise HTTPException(status.HTTP_404_NOT_FOUND,
                            detail="Item necessário faltante")

    db.add(db_notificacao)
    db.commit()
    db.refresh(db_notificacao)

    return db_notificacao
Exemplo n.º 8
0
def create_notificacao_vaga(db: Session, remetente_id: int,
                            pessoa_projeto: PessoaProjeto):

    hoje = datetime.today()

    projeto_id = pessoa_projeto.projeto_id
    projeto = get_projeto(db, projeto_id)
    pessoa = get_pessoa(db, remetente_id)

    if pessoa_projeto.situacao == "PENDENTE_IDEALIZADOR":
        situacao = "Finalize o cadastro do projeto " + \
            projeto.nome + " e encontre o time ideal"
        destinatario_id = remetente_id

    elif pessoa_projeto.situacao == "RECUSADO":
        situacao = pessoa.nome + " recusou seu convite para o projeto " + \
            projeto.nome + ". Realize uma nova busca"
        destinatario_id = projeto.pessoa_id

    elif pessoa_projeto.situacao == "ACEITO":
        situacao = pessoa.nome + " aceitou seu convite para o projeto " + \
            projeto.nome + ". Finalize o acordo e preencha essa vaga!"
        destinatario_id = projeto.pessoa_id

    elif pessoa_projeto.situacao == "PENDENTE_COLABORADOR":
        if (hoje.day == pessoa_projeto.data_atualizacao.day):
            situacao = pessoa.nome + " te fez um convite para o projeto " + \
                projeto.nome + ". Confira!"
            destinatario_id = pessoa_projeto.pessoa_id

    db_notificacao = models.Notificacao(
        remetente_id=remetente_id,
        destinatario_id=destinatario_id,
        projeto_id=projeto_id,
        pessoa_projeto_id=pessoa_projeto.id,
        situacao=situacao,
        lido=False,
    )

    db.add(db_notificacao)
    db.commit()
    db.refresh(db_notificacao)
    return db_notificacao
Exemplo n.º 9
0
def notificacao_favorito(db: Session, remetente_id: int, projeto_id: int):

    projeto = get_projeto(db, projeto_id)
    remetente = get_pessoa_by_id(db, remetente_id)

    db_notificacao = models.Notificacao(
        remetente_id=remetente_id,
        destinatario_id=projeto.pessoa_id,
        projeto_id=projeto.id,
        pessoa_projeto_id=None,
        situacao="<strong>" + remetente.nome +
        "</strong> favoritou o projeto <strong>" + projeto.nome + "</strong>!",
        foto=projeto.foto_capa,
        lido=False,
        link='/projeto/{}'.format(projeto_id))

    if existe_notificacao(db, db_notificacao.situacao,
                          db_notificacao.destinatario_id):
        return

    db.add(db_notificacao)
    db.commit()
    db.refresh(db_notificacao)
Exemplo n.º 10
0
def notificacao_checagem_projeto(db: Session):

    projetos = db.query(models.Projeto)\
        .filter(models.Projeto.areas == None, models.Projeto.habilidades == None)\
        .join(models.Habilidades, models.Projeto.habilidades, full=True, isouter=True)\
        .join(models.Area, models.Projeto.areas, full=True, isouter=True)\
        .all()

    notificacao = []

    # projetos a serem ignorados na verificação das vagas
    projetos_ignorados = []

    for projeto in projetos:

        projetos_ignorados.append(projeto.id)

        db_notificacao = models.Notificacao(
            remetente_id=projeto.pessoa_id,
            destinatario_id=projeto.pessoa_id,
            projeto_id=projeto.id,
            pessoa_projeto_id=None,
            situacao="Finalize o cadastro do projeto <strong>" + projeto.nome +
            "</strong> e encontre o time ideal!",
            foto=projeto.foto_capa,
            lido=False,
            link='/projeto/{}'.format(projeto.id))

        if not existe_notificacao(db, db_notificacao.situacao,
                                  db_notificacao.destinatario_id):

            db.add(db_notificacao)
            db.commit()
            db.refresh(db_notificacao)

            notificacao.append(db_notificacao)

    vagas = db.query(models.PessoaProjeto)\
        .filter(models.PessoaProjeto.areas == None, models.PessoaProjeto.habilidades == None)\
        .filter(models.PessoaProjeto.projeto_id.notin_(projetos_ignorados))\
        .join(models.Habilidades, models.PessoaProjeto.habilidades, full=True, isouter=True)\
        .join(models.Area, models.PessoaProjeto.areas, full=True, isouter=True)\
        .all()

    for vaga in vagas:
        if vaga.projeto_id in projetos_ignorados:
            break

        projetos_ignorados.append(vaga.projeto_id)

        projeto = get_projeto(db, vaga.projeto_id)

        db_notificacao = models.Notificacao(
            remetente_id=projeto.pessoa_id,
            destinatario_id=projeto.pessoa_id,
            projeto_id=projeto.id,
            pessoa_projeto_id=None,
            situacao="Finalize o cadastro das vagas do projeto <strong>" +
            projeto.nome + "</strong> e encontre o time ideal!",
            foto=projeto.foto_capa,
            lido=False,
            link='/projeto/{}'.format(projeto.id))

        if not existe_notificacao(db, db_notificacao.situacao,
                                  db_notificacao.destinatario_id):

            db.add(db_notificacao)
            db.commit()
            db.refresh(db_notificacao)

            notificacao.append(db_notificacao)

    return notificacao
Exemplo n.º 11
0
def notificacao_checagem(db: Session):
    '''
        Cria notificacoes periodicamente para PessoaProjetos com situacao PENDENTE_COLABORADOR

        Entrada:

        Saída: lista de Esquemas das notificacoes criadas

        Exceções: 
    '''

    hoje = datetime.today()

    pessoa_projetos = db.query(models.PessoaProjeto)\
        .filter(models.PessoaProjeto.situacao == "PENDENTE_COLABORADOR")\
        .all()

    listaRetirados = []

    for pessoa_projeto in pessoa_projetos:
        projeto = get_projeto(db, pessoa_projeto.projeto_id)
        att_str = datetime.strftime(pessoa_projeto.data_atualizacao,
                                    "%Y-%m-%d")
        att = datetime.strptime(att_str, "%Y-%m-%d")

        diff = hoje - att

        if (diff.days < 6):
            remetente = get_pessoa_by_id(db, projeto.pessoa_id)
            situacao = "<strong>Se liga:</strong> você tem " + str(6-diff.days) + " dias para responder ao convite de <strong>" + \
                remetente.nome + "</strong> para o projeto <strong>" + projeto.nome + "</strong>.",
            destinatario_id = pessoa_projeto.pessoa_id

            if not existe_notificacao(db, situacao, destinatario_id):

                db_notificacao = models.Notificacao(
                    remetente_id=remetente.id,
                    destinatario_id=destinatario_id,
                    projeto_id=pessoa_projeto.projeto_id,
                    pessoa_projeto_id=pessoa_projeto.id,
                    situacao=situacao,
                    foto=projeto.foto_capa,
                    lido=False,
                    link='/projeto/{}/vagas/{}'.format(projeto.id,
                                                       pessoa_projeto.id))

                db.add(db_notificacao)
                db.commit()
                db.refresh(db_notificacao)

        elif (diff.days >= 6):
            remetente = get_pessoa_by_id(db, pessoa_projeto.pessoa_id)
            situacao = "O prazo de resposta de <strong>" + \
                remetente.nome + "</strong> para o projeto " + projeto.nome + \
                " expirou! Realize uma nova busca e complete seu time!"
            destinatario_id = projeto.pessoa_id

            if not existe_notificacao(db, situacao, destinatario_id):

                listaRetirados.append(pessoa_projeto.id)

                db_notificacao = models.Notificacao(
                    remetente_id=remetente.id,
                    destinatario_id=destinatario_id,
                    projeto_id=pessoa_projeto.projeto_id,
                    pessoa_projeto_id=pessoa_projeto.id,
                    situacao=situacao,
                    foto=projeto.foto_capa,
                    lido=False,
                    link='/projeto/{}/vagas/{}'.format(projeto.id,
                                                       pessoa_projeto.id))

                db.add(db_notificacao)
                db.commit()
                db.refresh(db_notificacao)

    return listaRetirados
Exemplo n.º 12
0
def notificacao_finalizado(db: Session, pessoa_projeto: PessoaProjeto):
    '''
        Cria uma notificacao baseada na situacao FINALIZADO da PessoaProjeto

        Entrada: Esquema de PessoaProjeto

        Saída: Dois Esquemas das notificacoes criadas

        Exceções: PessoaProjeto não finalizada
    '''

    if (pessoa_projeto.situacao != "FINALIZADO"):
        raise HTTPException(
            status.HTTP_404_NOT_FOUND,
            detail="PessoaProjeto não finalizada",
        )

    colaborador = get_pessoa_by_id(db, pessoa_projeto.pessoa_id)
    projeto = get_projeto(db, pessoa_projeto.projeto_id)
    idealizador = get_pessoa_by_id(db, projeto.pessoa_id)

    situacao = "Seu acordo com <strong>" + colaborador.nome + "</strong> para participação no projeto <strong>" + \
        projeto.nome + "</strong> foi finalizado! Clique aqui para baixar seu documento.",

    if existe_notificacao(db, situacao, idealizador.id):
        return

    anexo = createPDFacordo(db, pessoa_projeto)

    # notificacao idealizador
    db_notificacao = models.Notificacao(remetente_id=colaborador.id,
                                        destinatario_id=idealizador.id,
                                        projeto_id=pessoa_projeto.projeto_id,
                                        pessoa_projeto_id=pessoa_projeto.id,
                                        situacao=situacao,
                                        foto=projeto.foto_capa,
                                        anexo=anexo,
                                        lido=False,
                                        link='/projeto/{}/vagas/{}'.format(
                                            pessoa_projeto.projeto_id,
                                            pessoa_projeto.id))

    db.add(db_notificacao)
    db.commit()
    db.refresh(db_notificacao)

    # notificacao colab
    db_notificacao = models.Notificacao(
        remetente_id=idealizador.id,
        destinatario_id=colaborador.id,
        projeto_id=pessoa_projeto.projeto_id,
        pessoa_projeto_id=pessoa_projeto.id,
        situacao="Seu acordo com <strong>" + idealizador.nome +
        "</strong> para participação no projeto <strong>" + projeto.nome +
        "</strong> foi finalizado! Clique aqui para baixar seu documento.",
        foto=projeto.foto_capa,
        anexo=anexo,
        lido=False,
        link='/projeto/{}/vagas/{}'.format(projeto.id, pessoa_projeto.id))

    db.add(db_notificacao)
    db.commit()
    db.refresh(db_notificacao)

    delete_pessoas_ignoradas_by_vaga(db, pessoa_projeto.id)
Exemplo n.º 13
0
def notificacao_finalizado(db: Session, pessoa_projeto: PessoaProjeto):
    '''
        Cria uma notificacao baseada na situacao FINALIZADO da PessoaProjeto

        Entrada: Esquema de PessoaProjeto

        Saída: Dois Esquemas das notificacoes criadas

        Exceções: PessoaProjeto não finalizada
    '''

    if (pessoa_projeto.situacao != "FINALIZADO"):
        raise HTTPException(
            status.HTTP_404_NOT_FOUND,
            detail="PessoaProjeto não finalizada",
        )

    notificacao = []

    anexo = createPDF(db, pessoa_projeto)

    colaborador = get_pessoa_by_id(db, pessoa_projeto.pessoa_id)
    projeto = get_projeto(db, pessoa_projeto.projeto_id)
    idealizador = get_pessoa_by_id(db, projeto.pessoa_id)

    # notificacao idealizador
    db_notificacao = models.Notificacao(
        remetente_id=colaborador.id,
        destinatario_id=idealizador.id,
        projeto_id=pessoa_projeto.projeto_id,
        pessoa_projeto_id=pessoa_projeto.id,
        situacao=
        "<strong>Seu acordo foi finalizado!</strong> Clique aqui e veja seu PDF top!",
        foto=projeto.foto_capa,
        anexo=anexo,
        lido=False,
    )

    db.add(db_notificacao)
    db.commit()
    db.refresh(db_notificacao)

    notificacao.append(db_notificacao)

    # notificacao colab
    db_notificacao = models.Notificacao(
        remetente_id=idealizador.id,
        destinatario_id=colaborador.id,
        projeto_id=pessoa_projeto.projeto_id,
        pessoa_projeto_id=pessoa_projeto.id,
        situacao=
        "<strong>Seu acordo foi finalizado!</strong> aqui e veja seu PDF top!",
        foto=projeto.foto_capa,
        anexo=anexo,
        lido=False,
    )

    db.add(db_notificacao)
    db.commit()
    db.refresh(db_notificacao)

    notificacao.append(db_notificacao)

    delete_pessoas_ignoradas_by_vaga(db, pessoa_projeto.id)

    return notificacao
Exemplo n.º 14
0
def createPDFacordo(db: Session, vaga: PessoaProjeto):

    contratado = get_pessoa_by_id(db, vaga.pessoa_id)
    projeto = get_projeto(db, vaga.projeto_id)
    contratante = get_pessoa_by_id(db, projeto.pessoa_id)
    acordo = get_tipo_acordo_by_id(db, vaga.tipo_acordo_id)
    # Observar após refatoração
    if (vaga.papel_id == 1):
        papel = "aliado"
    elif (vaga.papel_id == 2):
        papel = "colaborador"
    elif (vaga.papel_id == 3):
        papel = "idealizador"

    pdf = FPDF()
    pdf.add_page(orientation='P')

    espacamento = 8

    pdf.set_margins(20, 20, 20)
    pdf.set_font("Arial", 'B', size=16)
    # Espaço de formatação
    pdf.cell(20, 20, txt='', ln=1)
    pdf.cell(175, 12, txt='ACORDO DE PRESTAÇÃO DE SERVIÇOS', ln=1, align="C")
    pdf.set_font("Arial", 'B', size=14)
    pdf.cell(175,
             12,
             txt='IDENTIFICAÇÃO DAS PARTES CONTRATANTES',
             ln=1,
             align="L")

    # Corpo
    pdf.set_font("Arial", 'B', size=12)
    pdf.cell(pdf.get_string_width('CONTRATANTE: '),
             espacamento,
             txt='CONTRATANTE: ',
             align="L")
    pdf.set_font("Arial", size=12)
    w = pdf.get_x()
    pdf.cell(w, espacamento, txt=contratante.nome, ln=1, align="L")
    pdf.set_font("Arial", 'B', size=12)
    pdf.cell(pdf.get_string_width('CONTRATADO: '),
             espacamento,
             txt='CONTRATADO: ',
             align="L")
    pdf.set_font("Arial", size=12)
    w = pdf.get_x()
    pdf.cell(w, espacamento, txt=contratado.nome, ln=1, align="L")
    pdf.cell(20, 5, txt='', ln=1)
    pdf.multi_cell(
        0,
        espacamento,
        txt=
        'As partes acima identificadas têm, entre si, justo e acertado o presente Acordo de Prestação de Serviços, que se regerá pelo objeto do acordo pelas condições de remuneração, forma e termo de pagamento descritas no presente.',
        align="J")

    pdf.set_font("Arial", 'B', size=14)

    pdf.cell(175, 15, txt='DO OBJETO DE ACORDO', ln=1, align="L")

    pdf.set_font("Arial", size=12)
    pdf.multi_cell(
        0,
        espacamento,
        txt='É objeto do presente acordo a prestação do serviço no projeto ' +
        projeto.nome + ' como ' + papel + ' na vaga de ' + vaga.titulo +
        ' por meio de um contrato como ' + acordo.descricao + '.',
        align="J")

    if (vaga.remunerado):
        pdf.multi_cell(
            0,
            espacamento,
            txt=
            'Esta prestação de serviços será remunerada com valores e pagamentos a serem negociados entre ambas as partes.',
            align="J")
    else:
        pdf.multi_cell(
            0,
            espacamento,
            txt=
            'Esta prestação de serviços não será remunerada conforme anunciado na plataforma Conectar.',
            align="J")

    pdf.cell(20, 10, txt='', ln=1)

    pdf.multi_cell(
        0,
        espacamento,
        txt=
        'A execução da prestação de serviço aqui acordada será de responsabilidade das partes envolvidas, eximindo da plataforma Conectar de qualquer obrigação com o contratante ou contratado.',
        align="J")

    hoje = datetime.now()
    data_str = 'Dois Vizinhos, ' + \
        str(hoje.day) + " de " + MESES[hoje.month] + " de " + str(hoje.year)

    pdf.cell(20, 7, txt='', ln=1)
    pdf.cell(200, espacamento, txt=data_str, ln=1, align="L")

    pdf.cell(20, 20, txt='', ln=1)

    pdf.cell(175,
             espacamento,
             txt='___________________            ___________________',
             ln=1,
             align="C")
    pdf.cell(175,
             espacamento,
             txt='Contratante                            Contratado',
             ln=1,
             align="C")

    saida = str(uuid.uuid4().hex) + ".pdf"

    pdf.output(PDF_PATH + saida)

    if not os.getenv("DEV_ENV"):
        upload_object(PDF_PATH + saida, 'conectar')
    os.remove(PDF_PATH + saida)

    return saida
Exemplo n.º 15
0
def check_notificacao_vaga(db: Session):

    hoje = datetime.today()

    vagas = db.query(models.PessoaProjeto)\
        .filter(models.PessoaProjeto.situacao == "PENDENTE_COLABORADOR")\
        .all()

    notificacao = []

    for vaga in vagas:
        projeto = get_projeto(db, vaga.projeto_id)
        att_str = datetime.strftime(vaga.data_atualizacao, "%Y-%m-%d")
        att = datetime.strptime(att_str, "%Y-%m-%d")

        diff = hoje - att

        if (diff.days < 6):
            remetente = get_pessoa(db, projeto.pessoa_id)
            situacao = "Você tem " + str(6-diff.days) + " dias para responder ao convite de " + \
                remetente.nome + " para o projeto " + projeto.nome,
            destinatario_id = vaga.pessoa_id

            filtro = db.query(models.Notificacao)\
                .filter(models.Notificacao.destinatario_id == destinatario_id)\
                .filter(models.Notificacao.situacao == situacao)\
                .first()

            if not filtro:
                db_notificacao = models.Notificacao(
                    remetente_id=remetente.id,
                    destinatario_id=destinatario_id,
                    projeto_id=vaga.projeto_id,
                    pessoa_projeto_id=vaga.id,
                    situacao=situacao,
                    lido=False,
                )

                db.add(db_notificacao)
                db.commit()
                db.refresh(db_notificacao)

                notificacao.append(db_notificacao)

        elif (diff.days == 6):
            remetente = get_pessoa(db, vaga.pessoa_id)
            situacao = "O prazo de resposta de " + \
                remetente.nome + " expirou! Faça uma nova busca."
            destinatario_id = projeto.pessoa_id

            filtro = db.query(models.Notificacao)\
                .filter(models.Notificacao.destinatario_id == destinatario_id)\
                .filter(models.Notificacao.situacao == situacao)\
                .first()

            if not filtro:
                db_notificacao = models.Notificacao(
                    remetente_id=remetente.id,
                    destinatario_id=destinatario_id,
                    projeto_id=vaga.projeto_id,
                    pessoa_projeto_id=vaga.id,
                    situacao=situacao,
                    lido=False,
                )

                db.add(db_notificacao)
                db.commit()
                db.refresh(db_notificacao)

                notificacao.append(db_notificacao)

    return notificacao