Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: criação, listagem e edição OK #36

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 45 additions & 6 deletions src/controllers/pendencias-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ const {
Genero,
Subespecie,
ColecaoAnexa,
TomboIdentificador,
} = models;

export const listagem = (request, response, next) => {
Expand Down Expand Up @@ -702,7 +703,15 @@ const comparaDoisTombosOperador = (tombo, tomboAlterado) => {
parametros.push(insereNoParametro('1', 'Coleções anexas tipo', tombo.colecoes_anexa.tipo, tomboAlterado.colecoes_anexas.tipo));
}
if (tombo.colecoes_anexa.observacoes !== tomboAlterado.colecoes_anexas.observacoes) {
parametros.push(insereNoParametro('2', 'Coleções anexas observacoes', tombo.colecoes_anexa.observacoes, tomboAlterado.colecoes_anexas.observacoes));
// eslint-disable-next-line
parametros.push(
insereNoParametro(
'2',
'Coleções anexas observacoes',
tombo.colecoes_anexa.observacoes,
tomboAlterado.colecoes_anexas.observacoes
)
);
}
} else {
if (tomboAlterado.colecoes_anexas.tipo) {
Expand Down Expand Up @@ -1087,8 +1096,40 @@ export const visualizarAlteracaoOperador = (json, alteracao, transaction) => {
});
};

export const aprovarComJson = (changes, hcf, response, next) => {
async function atualizarIdentificadoresDeTombo(tomboHcf, novosIdentificadores) {
return sequelize.transaction(async transaction => {
await TomboIdentificador.destroy({
where: {
tombo_hcf: tomboHcf,
},
transaction,
});

const novosIdentificadoresPromise = novosIdentificadores.map((identificadorId, index) =>
TomboIdentificador.create(
{
tombo_hcf: tomboHcf,
identificador_id: identificadorId,
ordem: index + 1,
},
{
transaction,
}
)
);

await Promise.all(novosIdentificadoresPromise);
});
}

export const aprovarComJson = async (changes, hcf, response, next) => {
const alteracao = changes;

if (alteracao.identificadores) {
// identificadoresObjeto.usuario_id = alteracao.identificadores;
await atualizarIdentificadoresDeTombo(hcf, alteracao.identificadores);
}

return Promise.resolve()
.then(() => {
if (alteracao.familia_id) {
Expand Down Expand Up @@ -1142,7 +1183,8 @@ export const aprovarComJson = (changes, hcf, response, next) => {
}
}

if (alteracao.cidade_id || alteracao.complemento || alteracao.solo_id || alteracao.descricao || alteracao.relevo_id || alteracao.vegetacao_id || alteracao.fase_sucessional_id) {
if (alteracao.cidade_id || alteracao.complemento || alteracao.solo_id || alteracao.descricao || alteracao.relevo_id
|| alteracao.vegetacao_id || alteracao.fase_sucessional_id) {
const tomboColetaAlteracao = {};

if (alteracao.cidade_id) {
Expand Down Expand Up @@ -1229,9 +1271,6 @@ export const aprovarComJson = (changes, hcf, response, next) => {

if (alteracao.identificadores || alteracao.data_identificacao) {
const identificadoresObjeto = {};
if (alteracao.identificadores) {
identificadoresObjeto.usuario_id = alteracao.identificadores;
}

if (alteracao.data_identificacao) {
if (alteracao.data_identificacao.dia) {
Expand Down
95 changes: 56 additions & 39 deletions src/controllers/tombos-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
const {
Solo, Relevo, Cidade, Estado, Vegetacao, FaseSucessional, Pais, Tipo, LocalColeta, Familia, sequelize,
Genero, Subfamilia, Autor, Coletor, Variedade, Subespecie, TomboFoto, Identificador,
ColecaoAnexa, Especie, Herbario, Tombo, Alteracao, TomboColetor, Sequelize: { Op },
ColecaoAnexa, Especie, Herbario, Tombo, Alteracao, TomboColetor, TomboIdentificador, Sequelize: { Op },
} = models;

export const cadastro = (request, response, next) => {
Expand Down Expand Up @@ -346,12 +346,29 @@
throw new BadRequestExeption(409);
}
if (tomboCriado !== null) {
if (identificacao && identificacao.identificador_id) {
if (identificacao && identificacao.identificadores && identificacao.identificadores.length > 0) {
const promises = [];
identificacao.identificadores.forEach(
(identificador_id, index) => {
const isPrincipal = index === 0;
const dadosIdentificadores = {
identificador_id,
tombo_hcf: tomboCriado.hcf,
ordem: index + 1,
principal: isPrincipal,
};
promises.push(
TomboIdentificador.create(dadosIdentificadores, {
transaction,
})
);
}
);
let status = 'ESPERANDO';
const jsonTaxonomia = {};
const dados = {
tombo_hcf: tomboCriado.hcf,
usuario_id: identificacao.identificador_id,
usuario_id: identificacao.identificadores[0],
status,
ativo: true,
identificacao: 1,
Expand Down Expand Up @@ -472,40 +489,40 @@
function alteracaoCuradorouOperador(request, response, next) {
const { body } = request;

const nomePopular = body.json.principal.nome_popular;
const entidadeId = body.json.principal.entidade_id;
const numeroColeta = body.json.principal.numero_coleta;
const dataColeta = body.json.principal.data_coleta;
const tipoId = body.json.principal.tipo_id;
const { cor } = body.json.principal;

const familiaId = body.json.taxonomia.familia_id;
const subfamiliaId = body.json.taxonomia.sub_familia_id;
const generoId = body.json.taxonomia.genero_id;
const especieId = body.json.taxonomia.especie_id;
const subespecieId = body.json.taxonomia.sub_especie_id;
const variedadeId = body.json.taxonomia.variedade_id;

const { latitude } = body.json.localidade;
const { longitude } = body.json.localidade;
const { altitude } = body.json.localidade;
const cidadeId = body.json.localidade.cidade_id;
const { complemento } = body.json.localidade;

const soloId = body.json.paisagem.solo_id;
const { descricao } = body.json.paisagem;
const relevoId = body.json.paisagem.relevo_id;
const vegetacaoId = body.json.paisagem.vegetacao_id;
const faseSucessionalId = body.json.paisagem.fase_sucessional_id;

const identificadorId = body.json.identificacao.identificador_id;
const dataIdentificacao = body.json.identificacao.data_identificacao;

const { coletores } = body.json;
const colecoesAnexasTipo = body.json.colecoes_anexas.tipo;
const colecoesAnexasObservacoes = body.json.colecoes_anexas.observacoes;

const { observacoes } = body.json;
const nomePopular = body.principal.nome_popular;
const entidadeId = body.principal.entidade_id;
const numeroColeta = body.principal.numero_coleta;
const dataColeta = body.principal.data_coleta;
const tipoId = body.principal.tipo_id;
const { cor } = body.principal;

const familiaId = body.taxonomia.familia_id;
const subfamiliaId = body.taxonomia.sub_familia_id;
const generoId = body.taxonomia.genero_id;
const especieId = body.taxonomia.especie_id;
const subespecieId = body.taxonomia.sub_especie_id;
const variedadeId = body.taxonomia.variedade_id;

const { latitude } = body.localidade;
const { longitude } = body.localidade;
const { altitude } = body.localidade;
const cidadeId = body.localidade.cidade_id;
const { complemento } = body.localidade;

const soloId = body.paisagem.solo_id;
const { descricao } = body.paisagem;
const relevoId = body.paisagem.relevo_id;
const vegetacaoId = body.paisagem.vegetacao_id;
const faseSucessionalId = body.paisagem.fase_sucessional_id;

const { identificadores } = body.identificacao;
const dataIdentificacao = body.identificacao.data_identificacao;

const { coletores } = body;
const colecoesAnexasTipo = body.colecoes_anexas.tipo;
const colecoesAnexasObservacoes = body.colecoes_anexas.observacoes;

const { observacoes } = body;

const { tombo_id: tomboId } = request.params;
const update = {};
Expand Down Expand Up @@ -593,8 +610,8 @@
update.fase_sucessional_id = faseSucessionalId;
}

if (identificadorId) {
update.identificadores = identificadorId;
if (identificadores && identificadores.length > 0) {
update.identificadores = identificadores;
}

if (dataIdentificacao) {
Expand Down Expand Up @@ -1191,7 +1208,7 @@
soloInicial: tombo.solo !== null ? tombo.solo.nome : '',
relevoInicial: tombo.relevo !== null ? tombo.relevo.nome : '',
vegetacaoInicial: tombo.vegetaco !== null ? tombo.vegetaco.nome : '',
faseInicial: tombo.locais_coletum !== null && tombo.locais_coletum.fase_sucessional !== null ? tombo.locais_coletum.fase_sucessional.numero : '',

Check warning on line 1211 in src/controllers/tombos-controller.js

View workflow job for this annotation

GitHub Actions / lint

This line has a length of 161. Maximum allowed is 150
coletoresInicial: tombo.coletores.map(coletor => ({
key: `${coletor.id}`,
label: coletor.nome,
Expand Down Expand Up @@ -1228,7 +1245,7 @@
solo: tombo.solo !== null ? tombo.solo.nome : '',
relevo: tombo.relevo !== null ? tombo.relevo.nome : '',
vegetacao: tombo.vegetaco !== null ? tombo.vegetaco.nome : '',
fase_sucessional: tombo.locais_coletum !== null && tombo.locais_coletum.fase_sucessional !== null ? tombo.locais_coletum.fase_sucessional : '',

Check warning on line 1248 in src/controllers/tombos-controller.js

View workflow job for this annotation

GitHub Actions / lint

This line has a length of 163. Maximum allowed is 150
},
taxonomia: {
nome_cientifico: tombo.nome_cientifico !== null ? tombo.nome_cientifico : '',
Expand Down
Loading