Giter VIP home page Giter VIP logo

seteapi's People

Contributors

johnheberty avatar nataliasou avatar pedsanches avatar umarley avatar

Stargazers

 avatar

Watchers

 avatar  avatar

seteapi's Issues

Ausência de campos na operação GET da entidade veículos

O endpoint da API que recupera os veículos (/veiculos/cod_cidade) retorna os seguintes campos:

  • codigo_cidade
  • id_veiculo
  • placa
  • modelo

Entretanto, a tabela de listagem do SETE requer os seguintes campos adicionais:

  • tipo
  • cap_maxima
  • cap_atual
  • estado (operação / manutenção)
  • origem

Como ilustrado abaixo.
image

Como devemos proceder? Vamos incluir os campos ou modificar a tabela?

API requisita campos opcionais para cadastrar uma entidade aluno

A API está requisitando campos opcionais (no caso o campo nome_responsavel). Favor verificar se está pedindo outros campos.

{
    "nome": "AAAA",
    "data_nascimento": "10/10/1980",
    "sexo": 2,
    "cor": 1,
    "def_caminhar": "N",
    "def_ouvir": "N",
    "def_enxergar": "N",
    "def_mental": "N",
    "mec_tp_localizacao": 2,
    "turno": 2,
    "nivel": 1,
    "da_porteira": "N",
    "da_mataburro": "N",
    "da_colchete": "N",
    "da_atoleiro": "N",
    "da_ponterustica": "N",
    "loc_latitude": "-16.819554",
    "loc_longitude": "-49.246532",
    "grau_responsavel": 1
}

Campos nos dados do Motorista

Os campos vinculo e salario devem ser optativos, para manter compatibilidade no banco de dados (uma vez que não eram obrigatórios antes).

Erro ao remover uma ROTA (verificar endpoint)

A operação DELETE está retornando uma mensagem de erro:

https://sete.transportesufg.eng.br/rotas/{codigo_cidade}/{id_rota}

DELETE
https://sete.transportesufg.eng.br/rotas/5201405/1

{
    "result": false,
    "messages": "Falha ao excluir o registro. Contacte o administrador do sistema para maiores informações. <br />SQLSTATE[42601]: Syntax error: 7 ERROR:  syntax error at end of input\nLINE 1: ...sete_rotas\" WHERE codigo_cidade =  '5201405' AND id_escola =\n                                                                       ^"
}

Criar métodos DELETE e POST ​/escolas​/{codigo_municipio}​/{id_escola}​/alunos

O endpoint de DETELE deverá excluir todos os alunos associados com os id enviados da tabela escolatemalunos.

[
  { "id_aluno": 12 }, 
  { "id_aluno": 14 }
]

Já o endpoint de POST deverá associar todos os alunos enviados a escola do endpoint.
O parâmetro será um vetor de objetos, em que cada objeto possui o id_aluno.

[
{ "id_aluno": 21 }, 
  { "id_aluno": 15 }
]

Retorno do ID ao criar um elemento

Contextualização

Estou desenvolvendo a integração com a API no módulo de Alunos. Atualmente no SETE DESKTOP, ao cadastrar um aluno já existe a opção de o vincular a escolas e rotas como mostra na imagem abaixo.

Fica claro então, que no modelo que foi feito para o SETE API eu preciso cadastrar o Aluno primeiramente e depois o vincular com as escolas e as rotas. E realmente não há nenhum problema quanto a isso.

Problema

Ao criar um aluno, percebi que recebo um json no seguinte formato:

{
    "result": true,
    "messages": {
        "id": 11573
    }
}

Eu vejo essa resposta como algo problemático, pois na minha concepção o campo messages serve apenas para informar erros para o usuário. Inclusive o tratamento de erros está sendo feito contando com esse campo messages como o principal.

Proposta

Com isso, gostaria de propor uma discussão sobre essa prática. É realmente necessário que seja assim? Qual seria uma outra forma de retornar essa informação?

Operação DELETE escola de aluno não funciona

Ao tentar realizar a operação de DELETE da escola de um aluno me deparo com a seguinte mensagem:

Requisição Enviada.

DELETE https://sete.transportesufg.eng.br/alunos/5201405/3141/escola

{
    "result": false,
    "messages": "Falha ao excluir o registro. Contacte o administrador do sistema para maiores informações. <br />SQLSTATE[42601]: Syntax error: 7 ERROR:  syntax error at end of input\nLINE 1: ...digo_cidade =  '5201405' AND id_aluno = 3141 AND id_escola =\n                                                                       ^"
}

Resultado esperado, remover o aluno de sua escola caso tenha.

Adicionar campo vinculo a entidade Motorista

Adicionar o campo vinculo a entidade Motorista

Nome da Variável Tipo Exemplo Unidade
vinculo INT 1 - servidor efetivo, 2 - servidor comissionado, 3 - terceirizado , 4 - outro N/A

Criação do endpoint de custo GET `/custo/{cod_municipio}/{id_rota}`

Template da resposta:

{
    "result": "true caso calculou o custo/false caso contário",
    "data": {
        "custo": "valor real (ex: 10413.11)",
        "params": [
            {
                "codigo_parametro": "NUM_MOTORISTAS",
                "modulo": "Rotas",
                "result": true,
                "valor": 1
            },
            {
                "codigo_parametro": "NUM_VEICULOS",
                "modulo": "Rotas",
                "result": false,
                "valor": "Parâmetro não informado"
            },
            {
                "codigo_parametro": "SALARIO_MEDIO_MOTORISTA",
                "modulo": "Motoristas",
                "result": true,
                "valor": 1401.99
            }
        ]
    }
}

Caso não seja possível calcular a rota, algum parâmetro está faltando, a resposta deverá retornar result: false.
Caso contrário, deverá retornar true

Segue os parâmetros a serem considerados:

Nome da Variável Módulo Origem
NUM_MOTORISTAS Rotas Tabela sete_rota_dirigida_por_motorista.
NUM_VEICULOS Rotas Tabela sete_rota_possui_veiculo.
SALARIO_MEDIO_MOTORISTA Motoristas Para cada motorista em sete_motoristas (vindo de sete_rota_dirigida_por_motorista) pegar o campo salario e calcular a média.
Resultado é a média.
PERC_ENCARGO_SOCIAIS Parâmetros Tabela sete_parametros.
PERC_CFT_CUSTO_MANUTENCAO_RODO Parâmetros Tabela sete_parametros (só necessário se a ROTA for rodoviária (tipo == 1)).
PERC_CFT_CUSTO_MANUTENCAO_AQUA Parâmetros Tabela sete_parametros (só necessário se a ROTA for aquaviária (tipo == 2)).
NUM_MONITORES Monitores Tabela sete_rota_atendida_por_monitor.
SALARIO_MEDIO_MONITORES Monitores Para cada motorista em sete_monitores (vindo de sete_rota_atendida_por_monitor) pegar o campo salario e calcular a média.
Resultado é a média.
aplicável se a ROTA possuir monitores.
IPVA_FROTA Frota Para cada veículo em sete_veiculos (vindo de sete_rota_possui_veiculo) pegar o campo ipva.
Só necessário se a ROTA for rodoviária (tipo == 1).
Resultado é o somatório.
DPVAT_FROTA Frota Para cada veículo em sete_veiculos (vindo de sete_rota_possui_veiculo) pegar o campo dpvat.
Só necessário se a ROTA for rodoviária (tipo == 1).
Resultado é o somatório.
SRC_FROTA Frota Para cada veículo em sete_veiculos (vindo de sete_rota_possui_veiculo) pegar o campo seguro_anual.
Resultado é o somatório.
VIDA_UTIL_RODO Parâmetros Tabela sete_parametros (só necessário se a ROTA for rodoviária (tipo == 1)).
VIDA_UTIL_AQUA Parâmetros Tabela sete_parametros (só necessário se a ROTA for aquaviária (tipo == 2)).
PERC_RESIDUAL_RODO Parâmetros Tabela sete_parametros (só necessário se a ROTA for rodoviária (tipo == 1)).
PERC_RESIDUAL_AQUA Parâmetros Tabela sete_parametros (só necessário se a ROTA for aquaviária (tipo == 2)).
PRECO_MEDIO_VEICULOS Frota Para cada veículo em sete_veiculos (vindo de sete_rota_possui_veiculo) pegar o campo preco.
Resultado é a média.
PERC_TRC Parâmetros Tabela sete_parametros.
KM_MENSAL_ROTA Rotas Tabela sete_rotas, campo km.
Resultado é a somatória por 20 dias (x20).
CFT_CONSUMO_COMBUSTIVEL Frota Para cada veículo em sete_veiculos (vindo de sete_rota_possui_veiculo) pegar o campo consumo (km/l).
Resultado é a média.
PRECO_MEDIO_COMBUSTIVEIS Parâmetros Tabela sete_parametros.
CFT_CONSUMO_OLEO_LUBRIFICANTE Parâmetros Tabela sete_parametros.
PRECO_MEDIO_COMBUSTIVEIS Parâmetros Tabela sete_parametros.
PRECO_MEDIO_PNEUS Parâmetros Tabela sete_parametros.
NÃO ESTÁ ATUALMENTE NA TABELA PARÂMETROS.
Só necessário se a ROTA for rodoviária (tipo == 1)
NUMERO_PNEUS Frota Para cada veículo em sete_veiculos (vindo de sete_rota_possui_veiculo) pegar o campo numero_de_pneus.
Resultado é a soma.
Só necessário se a ROTA for rodoviária (tipo == 1)
PRECO_MEDIO_COMBUSTIVEIS Parâmetros Tabela sete_parametros.
PRECO_MEDIO_RECAPAGEM Parâmetros Tabela sete_parametros. NÃO ESTÁ ATUALMENTE NA TABELA PARÂMETROS
NUM_RECAPAGEM Parâmetros Tabela sete_parametros.
VIDA_UTIL_PNEU Frota Para cada veículo em sete_veiculos (vindo de sete_rota_possui_veiculo) pegar o campo vida_util_do_pneu.
Resultado é a soma.
CFT_CONSUMO_PECAS Parâmetros Tabela sete_parametros.
PRECO_MEDIO_VEICULOS Frota Para cada veículo em sete_veiculos (vindo de sete_rota_possui_veiculo) pegar o campo preco.
Resultado é a média.
PERC_SEGURO_AQUA Parâmetros Tabela sete_parametros.
Só necessário se a ROTA for aquaviária (tipo == 2)
POTENCIA_MOTOR Frota Para cada veículo em sete_veiculos (vindo de sete_rota_possui_veiculo) pegar o campo potencia_do_motor.
Só necessário se a ROTA for aquaviária (tipo == 2)
TEMPO_ROTA Rotas Tabela sete_rotas, campo tempo.
Só necessário se a ROTA for aquaviária (tipo == 2)
DENSIDADE_COMBUSTIVEL Parâmetros Tabela sete_parametros.
Só necessário se a ROTA for aquaviária (tipo == 2)
CONSUMO_LUBRIFICANTE Parâmetros Tabela sete_parametros.
Só necessário se a ROTA for aquaviária (tipo == 2)
DENSIDADE_LUBRIFICANTE Parâmetros Tabela sete_parametros.
Só necessário se a ROTA for aquaviária (tipo == 2)
PRECO_MEDIO_LUBRIFICANTE Parâmetros Tabela sete_parametros.
Só necessário se a ROTA for aquaviária (tipo == 2)
PERC_MANUTENCAO_EMBARCACAO Parâmetros Tabela sete_parametros.
Só necessário se a ROTA for aquaviária (tipo == 2)
NUM_ALUNOS Rotas Tabela sete_rota_atende_aluno.

Ajustes no endpoint Escola

Adicionar obrigatoriedade para:
mec_co_municipio

Adicionar o campo e deixá-lo como obrigatório:
mec_tp_localizacao_diferenciada

  • 1 - Área de Assentamento
  • 2 - Terra Indígena
  • 3 - Área remanescente de Quilombo
  • 7 - Não se aplica

Novo bug na importação do censo

Erro ao importar o seguinte código no endpoint censo.

Parece que por algum motivo ele está tentando fazer o update no registro, quando deveria se fazer o insert.

UPDATE "sete"."sete_alunos" SET "nome" = 'VANDERLEIA REIS KAHL', "data_nascimento" = '09/10/1969', "nome_responsavel" =
'SALMA CAMATINI REIS', "sexo" = '2', "cor" = '3', "mec_tp_localizacao" = '2', "turno" = '4', "nivel" = '2',
"def_caminhar" = 'N', "def_ouvir" = 'N', "def_enxergar" = 'N', "def_mental" = 'N', "mec_id_inep" = '185483372300',
"loc_cep" = '88230000', "cpf" = '00010572945', "codigo_cidade" = '5201405', "dt_alteracao" = '2021-12-07 18:45:54',
"alterado_por" = '[email protected]' WHERE "codigo_cidade" = '4203709' AND "id_aluno" = '884'<br />SQLSTATE[23503]: Foreign key violation: 7 ERROR:  insert or update on table "sete_escola_tem_alunos" violates foreign key constraint "sete_escola_tem_alunos_ibfk_2"
DETAIL:  Key (id_escola, codigo_cidade)=(42081564, 5201405) is not present in table "sete_escolas".

Dado de entrada:

{
    "alunos": [
        {
            "id_escola": 42081564,
            "nome": "VANDERLEIA REIS KAHL",
            "data_nascimento": "09/10/1969",
            "nome_responsavel": "SALMA CAMATINI REIS",
            "sexo": 2,
            "cor": 3,
            "mec_tp_localizacao": 2,
            "turno": 4,
            "nivel": 2,
            "def_caminhar": "N",
            "def_ouvir": "N",
            "def_enxergar": "N",
            "def_mental": "N",
            "mec_id_inep": "185483372300",
            "loc_cep": "88230000",
            "cpf": "00010572945"
        },
        {
            "id_escola": 42081564,
            "nome": "ZAQUEL GUERIA DA VEIGA",
            "data_nascimento": "24/09/1998",
            "nome_responsavel": "MARIA DE LOURDES CORDEIRO DA VEIGA",
            "sexo": 1,
            "cor": 0,
            "mec_tp_localizacao": 2,
            "turno": 4,
            "nivel": 2,
            "def_caminhar": "N",
            "def_ouvir": "N",
            "def_enxergar": "N",
            "def_mental": "N",
            "mec_id_inep": "185483244302",
            "loc_cep": "88230000"
        },
        {
            "id_escola": 42081564,
            "nome": "MARIA VALDETE DA SILVA",
            "data_nascimento": "27/10/1966",
            "nome_responsavel": "SONIA MARIA DA SILVA",
            "sexo": 2,
            "cor": 2,
            "mec_tp_localizacao": 1,
            "turno": 4,
            "nivel": 2,
            "def_caminhar": "N",
            "def_ouvir": "N",
            "def_enxergar": "N",
            "def_mental": "N",
            "mec_id_inep": "178516405981",
            "loc_cep": "88230000",
            "cpf": "05034762935"
        },
        {
            "id_escola": 42081564,
            "nome": "SOLANGE RAMOS DE SOUZA",
            "data_nascimento": "15/08/1981",
            "nome_responsavel": "TEREZINHA BANDEIRA",
            "sexo": 2,
            "cor": 0,
            "mec_tp_localizacao": 2,
            "turno": 4,
            "nivel": 2,
            "def_caminhar": "N",
            "def_ouvir": "N",
            "def_enxergar": "N",
            "def_mental": "N",
            "mec_id_inep": "185483493361",
            "loc_cep": "88230000"
        },
        {
            "id_escola": 42081564,
            "nome": "EDJANE MARIA GUEDES",
            "data_nascimento": "18/08/1967",
            "nome_responsavel": "MARIA DE LOURDES GUEDES",
            "sexo": 2,
            "cor": 2,
            "mec_tp_localizacao": 2,
            "turno": 4,
            "nivel": 2,
            "def_caminhar": "N",
            "def_ouvir": "N",
            "def_enxergar": "N",
            "def_mental": "N",
            "mec_id_inep": "122273034090",
            "loc_cep": "88230000",
            "cpf": "05289438475"
        },
        {
            "id_escola": 42081564,
            "nome": "FLORIANO TAVARES DO NASCIMENTO",
            "data_nascimento": "21/06/1987",
            "nome_responsavel": "JOVELINA PATRICIO TAVARES",
            "sexo": 1,
            "cor": 3,
            "mec_tp_localizacao": 2,
            "turno": 4,
            "nivel": 2,
            "def_caminhar": "N",
            "def_ouvir": "N",
            "def_enxergar": "N",
            "def_mental": "N",
            "mec_id_inep": "185483290509",
            "loc_cep": "88230000"
        },
        {
            "id_escola": 42081564,
            "nome": "EDSON LUIZ HERMES",
            "data_nascimento": "08/08/1971",
            "nome_responsavel": "OSMARINA HERMES",
            "sexo": 1,
            "cor": 1,
            "mec_tp_localizacao": 2,
            "turno": 4,
            "nivel": 2,
            "def_caminhar": "N",
            "def_ouvir": "N",
            "def_enxergar": "N",
            "def_mental": "N",
            "mec_id_inep": "185483505637",
            "loc_cep": "88230000",
            "cpf": "82815569949"
        },
        {
            "id_escola": 42081564,
            "nome": "MARIA SALVELINA FUCK",
            "data_nascimento": "06/06/1958",
            "nome_responsavel": "AGUEDA MARCOLINA FUCK",
            "sexo": 2,
            "cor": 1,
            "mec_tp_localizacao": 2,
            "turno": 4,
            "nivel": 2,
            "def_caminhar": "N",
            "def_ouvir": "N",
            "def_enxergar": "N",
            "def_mental": "N",
            "mec_id_inep": "178514414711",
            "loc_cep": "88230000",
            "cpf": "57788049972"
        }
    ],
    "escolas": [
        {
            "contato_responsavel": "SOLANGE MAFEZZOLI",
            "contato_telefone": "(48) 32644000",
            "mec_in_regular": "N",
            "mec_in_eja": "S",
            "mec_in_profissionalizante": "N",
            "mec_in_especial_exclusiva": "N",
            "horario_matutino": "N",
            "horario_vespertino": "N",
            "horario_noturno": "S",
            "ensino_pre_escola": "N",
            "ensino_fundamental": "S",
            "ensino_medio": "N",
            "ensino_superior": "N",
            "id_escola": 42081564,
            "mec_co_entidade": 42081564,
            "nome": "UNEJA - UNIDADE EDUCACIONAL DE JOVENS E ADULTOS",
            "mec_no_entidade": "UNEJA - UNIDADE EDUCACIONAL DE JOVENS E ADULTOS",
            "loc_cep": "88230000",
            "mec_co_municipio": "5201405",
            "loc_endereco": "AV CANTORIO FLORENTINO DA SILVA - NUM 1663 - FUNDO SECRETARIA SME - BAIRRO: CENTRO",
            "mec_tp_localizacao": 1,
            "mec_tp_localizacao_diferenciada": 7,
            "mec_tp_dependencia": 3,
            "contato_email": "[email protected]",
            "mec_co_uf": 42
        }
    ]
}

Criar endpoint para censo

A idéia é usarmos o operador de upsert para processar o lote de dados enviado abaixo.
O lote deve seguir o seguinte formato. Observe que teremos um array de alunos (com os dados no formato esperado), escolas (no formado esperado) e um array de escolatemalunos que relaciona as duas entidades. Como os alunos não tem ID por padrão, será criado um ID para cada aluno para realizar a vinculação.

{
	"alunos": [
	{
		"id_censo": "aleatorio",
		"nome": "ENZO FELIPE FANDARUFF",
		"data_nascimento": "15/11/2013",
		"nome_responsavel": "PALOMA APARECIDA SARMENTO INNOCENZO",
		"sexo": 1,
		"cor": 1,
		"turno": 1,
		"nivel": 1,
		"def_caminhar": "S",
		"def_ouvir": "S",
		"def_enxergar": "S",
		"def_mental": "S",
		"mec_tp_localizacao": 1,
		
		"cpf": "Não OBRIGATÓRIO",
		"loc_cep": "NÃO OBRIGATÓRIO",
		
		"origem": 1, 
		}
	],
	"escolas": [
		{
		  "*nome": "string",
		  "*mec_co_entidade": 0,
		  "*mec_co_uf": 0,
		  "*mec_co_municipio": 0,
		  "*mec_no_entidade": "string",
		  "*mec_tp_dependencia": 1,
		  "*mec_tp_localizacao": 1,
		  "*mec_in_regular": "S",
		  "*mec_in_eja": "S",
		  "*mec_in_profissionalizante": "S",
		  "*mec_in_especial_exclusiva": "S",
		  "*contato_responsavel": "string",
		  "*horario_matutino": "S",
		  "*horario_vespertino": "S",
		  "*horario_noturno": "S",
		  "*ensino_superior": "S",
		  "*ensino_medio": "S",
		  "*ensino_fundamental": "S",
		  "*ensino_pre_escola": "S",		  
		  "loc_latitude": "string",
		  "loc_longitude": "string",
		  "loc_endereco": "string",
		  "loc_cep": "string",
		  "contato_telefone": "string",
		  "contato_email": "string",
		}
	],
	"escolatemalunos": [
            {
		"mec_co_entidade": "",
		"id_aluno": "Hash",
            }
	]
}

Adicionar endpoint Rota na entidade Aluno

De forma semelhante ao relacionamento com a escola, devemos ter um endpoint para recuperar a rota de um determinado aluno.

/alunos/{codigo_cidade}/{id_aluno}/rota

Ausência de campos na operação GET da entidade alunos

O endpoint da API que recupera os alunos (/alunos/cod_cidade) retorna os seguintes campos:

  • codigo_cidade
  • id_aluno
  • nome
  • cpf

Entretanto, a tabela de listagem do SETE requer os seguintes campos adicionais:

  • localizacao
  • gps (tem ou não?)
  • qual a escola
  • nível
  • turno
  • rota

Como ilustrado abaixo.
image

Como devemos proceder? Vamos incluir os campos ou modificar a tabela?

POST: /alunos/{{codigo_cidade}}/{{id_aluno}}/escola

Explicação

Ao tentar vincular uma escola a um aluno, recebo um erro. Para reprodução, listarei os parâmetros que estou usando:

Request:

{
    "Url": "/alunos/5201405/11576/escola",
    "Body": {
      "id_escola": 11020490
    }
}

Response:

{
    "result": false,
    "messages": {
        "nome": "O nome do aluno deve ser informado!",
        "data_nascimento": "O campo data de nascimento deve ser informado!",
        "nome_responsavel": "O nome do responsável pelo aluno deve ser informado!",
        "grau_responsavel": "Informe o grau de parentesco do responsável pelo aluno!"
    }
}

Erro ao atualizar shape de uma rota de um dado município (via PUT)

Umarley,

A API está retornando o seguinte erro ao tentar atualizar o shape de uma rota de um município via PUT.
Erro:

SQLSTATE[42703]: Undefined column: 7 ERROR: column "id_escola" does not exist
LINE 1: ..."5201405"}' WHERE "codigo_cidade" = '5201405' AND "id_escola...
^

Requisição:
PUT https://sete.transportesufg.eng.br/rotas/5201405/9/shape

Corpo:

{
    "type": "FeatureCollection",
    "id_rota": 9,
    "features": [
        {
            "type": "Feature",
            "geometry": {
                "type": "LineString",
                "coordinates": [
                    [
                        -5474389.921006995,
                        -1902627.2729023115
                    ],
                    [
                        -5474423.983128329,
                        -1902638.02936168
                    ],
                    [
                        -5474487.087689956,
                        -1902761.0115471215
                    ],
                    [
                        -5474515.771581606,
                        -1902834.155470826
                    ],
                    [
                        -5474751.696590415,
                        -1902826.984497913
                    ],
                    [
                        -5474880.774102834,
                        -1902827.7015952046
                    ],
                    [
                        -5475060.765522927,
                        -1902822.681914166
                    ],
                    [
                        -5475122.435889972,
                        -1902832.004178952
                    ],
                    [
                        -5475640.180134228,
                        -1903062.192409432
                    ],
                    [
                        -5475736.988268542,
                        -1903099.4814685744
                    ],
                    [
                        -5476219.594745527,
                        -1902998.370750514
                    ],
                    [
                        -5476289.153182776,
                        -1902984.7459019828
                    ],
                    [
                        -5476522.926899711,
                        -1902970.4039561586
                    ],
                    [
                        -5477070.789230198,
                        -1902948.8910374222
                    ],
                    [
                        -5477310.299725463,
                        -1902945.3055509645
                    ],
                    [
                        -5477643.032868586,
                        -1902952.476523877
                    ],
                    [
                        -5478156.474529093,
                        -1902803.3202873047
                    ],
                    [
                        -5478407.45858102,
                        -1902614.7236997152
                    ],
                    [
                        -5478487.056380345,
                        -1902393.1406367305
                    ],
                    [
                        -5478645.534881701,
                        -1902153.630141467
                    ]
                ]
            },
            "properties": null
        },
        {
            "type": "Feature",
            "geometry": {
                "type": "LineString",
                "coordinates": [
                    [
                        -5478645.534881701,
                        -1902153.630141467
                    ],
                    [
                        -5478723.247911857,
                        -1902039.0083851747
                    ],
                    [
                        -5478872.020347378,
                        -1902102.50881497
                    ],
                    [
                        -5478737.7622958105,
                        -1902026.3082992155
                    ],
                    [
                        -5478806.705619592,
                        -1901922.8933135488
                    ]
                ]
            },
            "properties": {
                "estilo": "Pavimentada"
            }
        }
    ]
}

Falha ao tentar atualizar veículo (PUT /veiculos/codigo_cidade/id_veiculo)

Parece que o endpoint de atualização de veículo não está ligado. Verificar se o mesmo está OK.

Segue um input para atualizar um veículo.

{
    "modo": 1,
    "marca": "8",
    "tipo": "9",
    "modelo": "1",
    "ano": "2000",
    "origem": 1,
    "placa": "AAA-1234",
    "renavam": "5555555555-5",
    "km_inicial": "",
    "km_atual": "",
    "capacidade": "100",
    "manutencao": "N",
    "potencia_do_motor": "100",
    "preco": 19999.99,
    "ipva": 2000,
    "dpvat": 3000.10,
    "seguro_anual": 1000.00,
    "consumo": 51.12
}

Erros no endpoint Motoristas ao tentar cadastrar um novo motorista

Quando envio um body vazio a API retorna a seguinte mensagem.

{
    "result": false,
    "messages": {
        "nome": "O nome do aluno deve ser informado!",
        "data_nascimento": "O campo data de nascimento deve ser informado!",
        "data_validade_cnh": "O campo data de validade da CNH deve ser informado!"
    }
}

Veja que os campos estão com o texto de alunos e não motoristas.

Além disso, a API está exigindo o campo data_validade_cnh que não é obrigatório.
Os campos obrigatórios são:
cpf, nome, data_nascimento, sexo, cnh, turno_manha, turno_tarde, turno_noite, tem_cnh_a, tem_cnh_b, tem_cnh_c, tem_cnh_d, tem_cnh_e

Além disso, falta incluir também o campo optativo ant_criminais cujo valor é uma String.

Erro ao criar novo aluno (operação POST)

Quando tento criar um novo aluno recebo a seguinte mensagem de erro:

{
    "result": false,
    "messages": "Falha ao inserir registro. Contacte o administrador do sistema! Statement could not be executed (42501 - 7 - ERROR:  permission denied for sequence seq_alunos)"
}

Dado que utilizei na requisição. (Um novo cpf pode ser obtido em https://www.4devs.com.br/gerador_de_cpf).

{
    "nome": "AAAAAA",
    "data_nascimento": "19/01/1988",
    "nome_responsavel": "ALINE MOREIRA DA SILVA",
    "sexo": 1,
    "cor": 1,
    "def_caminhar": "N",
    "def_ouvir": "N",
    "def_enxergar": "N",
    "def_mental": "N",
    "mec_tp_localizacao": 2,
    "turno": 1,
    "cpf": "15672002064",
    "nivel": 3,
    "da_porteira": "N",
    "da_mataburro": "N",
    "da_colchete": "N",
    "da_atoleiro": "N",
    "da_ponterustica": "N",
    "loc_latitude": "-16.692665615936",
    "loc_longitude": "-49.2195544397",
    "loc_cep": "68840-000",
    "telefone_responsavel": "(62) 98296-5480",
    "grau_responsavel": 1
}

Localidades - GET: /localidades/municipios/{codigo}

Explicação

O endpoint GET: /localidades/municipios/{codigo} não me retorna informações de identificação do município, em vez disso ele me retorna algumas informações de estado que não são tão necessárias. Segue um exemplo:

    {
      "nm_cidade": "Tarauacá",
      "codigo_uf": 12,
      "estado": "Acre"
    },
    {
      "nm_cidade": "Xapuri",
      "codigo_uf": 12,
      "estado": "Acre"
    }

O que é esperado

É esperado que o endpoint retorne algum identificador da própria cidade.

Retornar o id da rota ao criá-la via POST (`/rotas/{codigo_cidade}`)

Retornar o id da rota ao criá-la via uma requisição POST

{
    "tipo": 1,
    "nome": "ROTA-1",
    "hora_ida_inicio": "10:00",
    "hora_ida_termino": "11:00",
    "hora_volta_inicio": "12:30",
    "hora_volta_termino": "12:55",
    "km": 144.44,
    "tempo": 90,
    "da_porteira": "S",
    "da_mataburro": "S",
    "da_colchete": "N",
    "da_atoleiro": "N",
    "da_ponterustica": "N",
    "turno_matutino": "S",
    "turno_vespertino": "S",
    "turno_noturno": "N"
}

Falha ao excluir um monitor

Falha ao excluir o registro.
Não é possível excluir o registro sete_monitores, pois está violando um fkey da tabela sete_rota_atendida_por_monitor.

DELETE https://sete.transportesufg.eng.br/monitores/5201405/49944398004

{
    "result": false,
    "messages": "Falha ao excluir o registro. Contacte o administrador do sistema para maiores informações. <br />SQLSTATE[23503]: Foreign key violation: 7 ERROR:  update or delete on table \"sete_monitores\" violates foreign key constraint \"sete_rota_atendida_por_monitor_fk_monitor\" on table \"sete_rota_atendida_por_monitor\"\nDETAIL:  Key (codigo_cidade, cpf)=(5201405, 49944398004) is still referenced from table \"sete_rota_atendida_por_monitor\"."
}

Erro ao criar novo usuário via API

Prezado,

Estou recebendo um erro interno (500) ao tentar criar um usuário via API.
O erro se repete independente do tipo de usuário (leitor, adm, usuário)

Segue o link da requisição:

POST https://sete.transportesufg.eng.br/registro/5201405

Corpo:

{
  "nome": "Teste",
  "cpf": "32529688001",
  "telefone": "(62) 99999-9999",
  "email": "[email protected]",
  "password": "e10adc3949ba59abbe56e057f20f883e",
  "tipo_permissao": "leitor"
}

POST `/rotas/{cod_cidade}/{id_rota}/veiculos` indica que veículo não existe

Favor verificar possível problema com o endpoint, uma vez que está indicando que o veículo informado não existe.
Apesar disso, a operação GET /veiculos/{cod_cidade}/ retorna o id indicado.

image

{
    "id_veiculo": 96
}

Retorno:

{
    "data": {
        "result": false,
        "messages": "Veículo informada não existe!"
    },
    "total": 2,
    "result": false
}

Ausência de campos na operação GET da entidade escola

O endpoint da API que recupera as escolas (/escolas/cod_cidade) retorna os seguintes campos:

  • codigo_cidade
  • id_escola
  • nome

Entretanto, a tabela de listagem do SETE requer os seguintes campos adicionais:

  • localizacao
  • gps (tem ou não?)
  • nível
  • horario de funcionamento
  • qtde de alunos

Como ilustrado abaixo.
image

Como devemos proceder? Vamos incluir os campos ou modificar a tabela?

Criar estrutura da tabela de parâmetros

Nome da Variável Tipo Exemplo
codigo_cidade INT 5201415
codigo_parametro VARCHAR ENCARGOS_SOCIAIS
valor_parametro TEXT '20'
descricao_parametro TEXT Porcentagem de valores a serem pagos em impostos

GET: /fornecedores/{{codigo_cidade}}

Explicação

Quando faço a busca por fornecedores, o JSON vem nesse formato:

{
    "data": [
        {
            "codigo_cidade": 5201405,
            "id_fornecedor": 1,
            "cnpj": "04306341000140",
            "nome": "Irwin S.A.",
            "ramo_mecanica": "Sim",
            "ramo_combustivel": "Sim",
            "ramo_seguro": "Sim",
            "loc_latitude": "-16.732113",
            "loc_longitude": "-49.326080",
            "loc_endereco": "",
            "loc_cep": "74680-360",
            "telefone": "(62) 99999-9999",
            "dt_criacao": "2021-11-18 20:48:30",
            "dt_alteracao": null,
            "_links": {
                "_self": "https://sete.transportesufg.eng.br/fornecedores/5201405/1"
            }
        }
    ],
    "total": 1,
    "result": true
}

Para motivos de padronização com outros módulos, eu prefiro que os campos "booleanos" venham de fato com 'S' ou 'N' em vez de 'Sim' ou 'Não', pois eu tenho mais controle do que fazer com eles.

POST: /alunos/{{codigo_cidade}}/{{id_aluno}}/rota

Explicação

O mesmo erro que acontece aqui, está acontecendo na issue #30

Request:

{
    "Url": "/alunos/5201405/11576/rota",
    "Body": {
      "id_rota": 3
    }
}

Response:

{
    "result": false,
    "messages": {
        "nome": "O nome do aluno deve ser informado!",
        "data_nascimento": "O campo data de nascimento deve ser informado!",
        "nome_responsavel": "O nome do responsável pelo aluno deve ser informado!",
        "grau_responsavel": "Informe o grau de parentesco do responsável pelo aluno!"
    }
}

Remover a obrigatoriedade dos campos `loc_endereco` e `loc_cep` no endpoing garagens

Ao tentar adicionar ou atualizar uma garagem o endpoint está exigindo que os campos loc_endereco e loc_cep estejam presentes.
Endpoints afetados:

POST /garagens/{codigo_cidade}
PUT /garagens/{codigo_cidade}/{id_garagem}

{
    "nome": "GARAGEM",
    "loc_latitude": "-16.817582",
    "loc_longitude": "-49.253083",
    "loc_endereco": "",
    "loc_cep": "74645-210"
}

Erro retornado:

{
    "result": false,
    "messages": {
        "loc_endereco": "O endereco da garagem deve ser informado!"
    },
    "_links": {
        "self": {
            "href": "https://sete.transportesufg.eng.br/garagens/5201405/5"
        }
    }
}

Criação de campos nos cadastros para Módulo Custos

Na tabela motorista adicionar os seguintes campos:

Nome da Variável Tipo Exemplo Unidade
salario DECIMAL(15,4) 1257.03 R$
vinculo INT 1 - servidor efetivo, 2 - servidor comissionado, 3 - terceirizado , 4 - outro N/A

Na tabela veículo adicionar os seguintes campos:

Nome da Variável Tipo Exemplo Unidade
ipva DECIMAL(15,4) 1257.03 R$
dpvat DECIMAL(15,4) 592.01 R$
seguro_anual DECIMAL(15,4) 2500 R$
consumo DECIMAL(15,4) 10.5 KM/L ou L/hora
tipo_combustivel CHAR * 'G' = Gasolina * 'D' = Diesel * 'E' = Etanol * 'N' = Gás Natural * 'O' = Outro N/A
numero_de_pneus INT 4 N/A
vida_util_do_pneu DECIMAL(15,4) 12 KM
preco DECIMAL(15,4) 59999.20 R$
potencia_do_motor DECIMAL(15,4) 75 cavalos

Operação PUT em alunos não funciona

Prezados,

Ao tentar fazer a requisição abaixo, o servidor retorna que o CPF já existe e não permite atualizar o aluno.

Dados para reprodução:
URL:
PUT https://sete.transportesufg.eng.br/alunos/5201405/1
Corpo:
{ "loc_latitude": "-16.819225", "loc_longitude": "-49.240670", "loc_endereco": "", "loc_cep": "76929-000", "mec_tp_localizacao": 2, "da_porteira": "N", "da_mataburro": "N", "da_colchete": "S", "da_atoleiro": "S", "da_ponterustica": "N", "nome": "ADELSON JUNIOR AMORIM DIAS DO CARMO", "cpf": "07940453246", "data_nascimento": "09/02/2014", "nome_responsavel": "SARA AMORIM DIAS DO CARMO", "telefone_responavel": "", "grau_responsavel": "-1", "sexo": 1, "cor": 3, "def_caminhar": "N", "def_ouvir": "N", "def_enxergar": "N", "def_mental": "N", "turno": 2, "nivel": 4 }

Criação da entidade Monitor e seus endpoints PUT/POST/GET/DELETE e dos subendpoints GET/POST/DELETE de rotas

Utilizaremos os seguintes campos:

Nome da Variável Tipo Exemplo Unidade
nome VARCHAR Fulano da Silva R$
cpf VARCHAR 0923818313 N/A (sem char especial)
data_nascimento DATE 19/10/2020 N/A
sexo INT 1 - M 2 - F 3 - N/I N/A
telefone VARCHAR (62) 9348-4381 N/A
vinculo INT 1 - servidor efetivo, 2 - servidor comissionado, 3 - terceirizado , 4 - outro N/A
salario DECIMAL(15,4) 2000.00 R$
turno_manha CHAR 'S' ou 'N' N/A
turno_tarde CHAR 'S' ou 'N' N/A
turno_noite CHAR 'S' ou 'N' N/A

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.