diff --git a/src/controllers/tombos-controller.js b/src/controllers/tombos-controller.js index 6059717..52293f2 100644 --- a/src/controllers/tombos-controller.js +++ b/src/controllers/tombos-controller.js @@ -17,7 +17,7 @@ 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, - ColecaoAnexa, Especie, Herbario, Tombo, Alteracao, TomboIdentificador, ColetorComplementar, Sequelize: { Op }, + ColecaoAnexa, Especie, Herbario, Tombo, Alteracao, TomboIdentificador, ColetorComplementar, Sequelize: { Op, fn, col }, } = models; function parseDataTombo(valor) { @@ -1551,15 +1551,20 @@ export const getNumeroColetor = (request, response, next) => { Promise.resolve() .then(() => - Tombo.findAll({ + Tombo.findOne({ where: { coletor_id: idColetor, }, - attributes: ['hcf', 'numero_coleta'], + attributes: [ + [fn('MAX', col('numero_coleta')), 'max_numero_coleta'], + ], + raw: true, }), ) - .then(tombos => { - response.status(codigos.BUSCAR_UM_ITEM).json(tombos); + .then(resultado => { + const maxNumero = resultado?.max_numero_coleta; + const proximoNumero = maxNumero ? Number(maxNumero) + 1 : 1; + response.status(codigos.BUSCAR_UM_ITEM).json({ proximo_numero_coleta: proximoNumero }); }) .catch(next); }; diff --git a/src/routes/tombos.js b/src/routes/tombos.js index e1006ab..114938d 100644 --- a/src/routes/tombos.js +++ b/src/routes/tombos.js @@ -76,7 +76,7 @@ export default app => { * @swagger * /tombos/numeroColetor/{idColetor}: * get: - * summary: Obtém o número do coletor pelo ID + * summary: Obtém o próximo número de coleta do coletor * tags: [Tombos] * parameters: * - in: path @@ -87,19 +87,15 @@ export default app => { * description: ID do coletor * responses: * 200: - * description: Lista de HCF e números de coleta retornada com sucesso + * description: Próximo número de coleta retornado com sucesso * content: * application/json: * schema: - * type: array - * items: - * type: object - * properties: - * hcf: - * type: integer - * numero_coleta: - * type: integer - * nullable: true + * type: object + * properties: + * proximo_numero_coleta: + * type: integer + * description: Próximo número de coleta disponível (MAX + 1) * '404': * $ref: '#/components/responses/NotFound' * '500':