diff --git a/.gitignore b/.gitignore index 141a616f..e7e7d986 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ node_modules/ uploads/ mysql/data/ +postgresql/ reports/data/fs.journal reports/data/fs.version reports/data/profiles diff --git a/src/controllers/tombos-controller.js b/src/controllers/tombos-controller.js index 3be97093..30b93420 100644 --- a/src/controllers/tombos-controller.js +++ b/src/controllers/tombos-controller.js @@ -13,7 +13,6 @@ import models from '../models'; import codigos from '../resources/codigos-http'; import verifyRecaptcha from '../utils/verify-recaptcha'; import { aprovarPendencia } from './pendencias-controller'; - const { Solo, Relevo, Cidade, Estado, Vegetacao, FaseSucessional, Pais, Tipo, LocalColeta, Familia, sequelize, Genero, Subfamilia, Autor, Coletor, Variedade, Subespecie, TomboFoto, Identificador, @@ -35,6 +34,28 @@ function parseDataTombo(valor) { return null; } +const getProximoNumeroTombo = async () => { + const resultado = await Tombo.findOne({ + attributes: [ + [fn('MAX', col('hcf')), 'max_hcf'], + ], + raw: true, + }); + const maxNumero = resultado?.max_hcf; + return maxNumero ? Number(maxNumero) + 1 : 1; +}; + +export const getProximoNumeroTomboEndPoint = async (request, response, next) => { + try { + const proximoNumero = await getProximoNumeroTombo(); + response + .status(codigos.BUSCAR_UM_ITEM) + .json({ hcf: proximoNumero }); + } catch (error) { + next(error); + } +}; + export const cadastro = (request, response, next) => { const { principal, @@ -299,6 +320,7 @@ export const cadastro = (request, response, next) => { // /////////// CADASTRA TOMBO ///////////// .then(() => { let jsonTombo = { + hcf: principal.hcf, numero_coleta: principal.numero_coleta, cidade_id: localidade.cidade_id, coletor_id: coletor, diff --git a/src/routes/tombos.js b/src/routes/tombos.js index c8d4fb5b..b326f5a5 100644 --- a/src/routes/tombos.js +++ b/src/routes/tombos.js @@ -9,7 +9,7 @@ import { alteracao, getNumeroColetor, getUltimoNumeroTombo, getCodigoBarraTombo, editarCodigoBarra, getUltimoNumeroCodigoBarras, postCodigoBarraTombo, verificarCoordenada, getUltimoCodigoBarra, deletarCodigoBarras, listagemTombosPorIdentificador, - relatorioPorPeriodo, + relatorioPorPeriodo, getProximoNumeroTomboEndPoint, } from '../controllers/tombos-controller'; import exportarTombosController from '../controllers/tombos-exportacoes-controller'; import criaJsonMiddleware from '../middlewares/json-middleware'; @@ -21,6 +21,7 @@ import coletorCadastro from '../validators/coletor-cadastro'; import cadastrarTipoEsquema from '../validators/tipo-cadastro'; import cadastrarTomboEsquema from '../validators/tombo-cadastro'; import listagemTombo from '../validators/tombo-listagem'; + /** * @swagger * tags: @@ -355,6 +356,16 @@ export default app => { getUltimoNumeroTombo, ]); + app.route('/tombos/proximo_numero') + .get([ + tokensMiddleware([ + TIPOS_USUARIOS.CURADOR, + TIPOS_USUARIOS.OPERADOR, + TIPOS_USUARIOS.IDENTIFICADOR, + ]), + getProximoNumeroTomboEndPoint, + ]); + /** * @swagger * /tombos/ultimo_codigo_barra: diff --git a/src/validators/tombo-cadastro.js b/src/validators/tombo-cadastro.js index 9e63d220..4730b0d4 100644 --- a/src/validators/tombo-cadastro.js +++ b/src/validators/tombo-cadastro.js @@ -25,6 +25,10 @@ export default { }, isInt: true, }, + 'json.principal.hcf': { + in: 'body', + isInt: true, + }, 'json.principal.data_tombo': { in: 'body', custom: {