예제 #1
0
def remover(ponto_id: str = Query(None, title="Id ponto", description="Id unico de um ponto")) -> Dict[str, str]:
    try:
        ponto = Ponto.find(ponto_id)
        if not ponto:
            return gen_mensagem("Não exitem pontos para os parametros informados.")
        ponto = Ponto(**ponto[0])
        if ponto.remover():
            return gen_mensagem("Ponto removido com sucesso")
        return gen_mensagem("Problemas ao excluir ponto")
    except:
        # TODO EXCEPT
        return gen_mensagem("Erro ao excluir ponto")
예제 #2
0
def criar(colaborador_id: str, data: str, hora_entrada: str, hora_saida: str) -> Dict[str, str]:
    try:
        if Ponto.find(colaborador_id=colaborador_id, data=data):
            return gen_mensagem("Já existe ponto para os parametros informados.")

        ponto = Ponto(colaborador_id=colaborador_id, data=data)
        ponto.registros_ES.append({"entrada": hora_entrada, "saida": hora_saida})
        if ponto.save():
            return gen_mensagem("Ponto criado com sucesso.", [ponto.dict()])
    except:
        # TODO EXCEPT
        return gen_mensagem("Erro ao criar ponto..")
예제 #3
0
async def consultar_horas(colaborador_id: str, mes: str) -> Dict[str, str or Optional[List[Dict[str, str]]]]:
    try:
        pontos = Ponto.find(colaborador_id=colaborador_id, mes=mes)
        if not pontos:
            return {"mensagem": "Não existem pontos para o colaborador informado."}

        t_mes, output = Ponto.calcular_horas_mes(pontos)
        return gen_mensagem("Pontos computados", output)

    except:
        # TODO EXCEPT
        return gen_mensagem("Erro ao buscar informações de ponto.")
예제 #4
0
def test_remove(web):
    col1.save()
    col_test = Colaborador.find(cpf=col1.cpf)
    colaborador_id = col_test[0]['_id']
    col1.remover()

    ponto_salvo = Ponto(colaborador_id=colaborador_id)
    ponto_salvo.criar_registro_ES()

    ponto_rec = Ponto.find(colaborador_id=ponto_salvo.colaborador_id,
                           data=pendulum.now().format(date_format))
    assert ponto_rec, ponto_salvo
    ponto_salvo.remover()
    ponto_rec = Ponto.find(colaborador_id=ponto_salvo.colaborador_id,
                           data=pendulum.now().format(date_format))
    assert str(ponto_rec), str(None)
예제 #5
0
def consultar(
        ponto_id: str = Query(None, title="Id ponto", description="Id unico de um ponto"),
        data: str = Query(None, title="Data do ponto",
                          description="Data de registro do ponto ponto formato YYYYMMDD."),
        colaborador_id: str = Query(None, title="Identificador colaborador",
                                    description="Identificador unico do colaborador."),
        mes: str = Query(None, title="Mes do ano.",
                         description="Mes em formato numérico(Janeiro - 01,Fevereiro - 02...")
) -> Dict[str, str]:
    try:
        pontos = Ponto.find(ponto_id, colaborador_id, data, mes)
        if pontos:
            return gen_mensagem("Pontos encotrados", pontos)
        return gen_mensagem("Pontos não encontrados para os parametros informados.")
    except:
        # TODO EXCEPT
        return gen_mensagem("Erro ao excluir ponto")
예제 #6
0
from api.models.ColaboradorModel import Colaborador
from api.models.PontoModel import Ponto

col1 = Colaborador(nome="col_001", endereco="end_col_001", cpf='11111111111')
col2 = Colaborador(nome="col_002", endereco="end_col_002", cpf='22222222222')
col3 = Colaborador(nome="col_003", endereco="end_col_003", cpf='33333333333')

ponto1 = Ponto(colaborador_id="11111111111")
ponto2 = Ponto(colaborador_id="22222222222")
예제 #7
0
def test_instance_erro_values():
    with pytest.raises(Exception):
        assert Ponto(colaborador_id=None)
예제 #8
0
def test_instance_erro_empty():
    with pytest.raises(Exception):
        assert Ponto()
예제 #9
0
def test_compute_hours():
    ponto = Ponto(colaborador_id='12345678')
    ponto.data = '11/11/1111'
    ponto.registros_ES = [{
        'entrada': '08:00:00',
        'saida': '12:00:00'
    }, {
        'entrada': '13:00:00',
        'saida': '18:00:00'
    }]

    ponto2 = Ponto(colaborador_id='12345678')
    ponto2.data = '12/11/1111'
    ponto2.registros_ES = [{
        'entrada': '08:00:00',
        'saida': '12:00:00'
    }, {
        'entrada': '13:00:00',
        'saida': '18:00:00'
    }]

    pontos = [ponto.dict(), ponto2.dict()]
    res1, res2 = 64800, {
        'Total de tempo Trabalhado no mês':
        '18:00:00',
        'Total de horas por dia': [{
            'Data': '11/11/1111',
            'Horas Trabalhadas no dia': '9:00:00'
        }, {
            'Data': '12/11/1111',
            'Horas Trabalhadas no dia': '9:00:00'
        }]
    }
    val1, val2 = Ponto.calcular_horas_mes(pontos)

    assert res1, val1
    assert res2, val2
예제 #10
0
def registrar_ponto(
        colaborador_id: str = Query(..., title="ID colaborador",
                                    description="Identificador único do identificador.")) -> Dict[str, str]:
    mes = str(pendulum.now().month)
    try:
        colaborador = Colaborador.find(colaborador_id=colaborador_id)
        if not colaborador:
            return gen_mensagem("Não existe colaborador para os parametros informados.")

        ultimo_ponto = Ponto.find(colaborador_id=colaborador_id, mes=mes)
        ultimo_ponto = ultimo_ponto.pop() if ultimo_ponto else {'colaborador_id': colaborador_id}

        ponto = Ponto(**ultimo_ponto)

        if ponto.e_entrada() and ponto.registrar_entrada_in():
            return gen_mensagem("Ponto registrado com sucesso.", [ponto.dict()])
        elif ponto.e_virada() and ponto.registrar_virada_in():
            return gen_mensagem("Ponto registrado com sucesso.", [ponto.dict()])
        elif ponto.registrar_saida_in():
            return gen_mensagem("Ponto registrado com sucesso.", [ponto.dict()])
        return gen_mensagem("Problema ao registrar o ponto.")

    except:
        # TODO EXCEPT
        return gen_mensagem("Erro ao registrar ponto")