diff --git a/src/Controllers/supplierFormController.js b/src/Controllers/supplierFormController.js index 11a6154..96ddef6 100644 --- a/src/Controllers/supplierFormController.js +++ b/src/Controllers/supplierFormController.js @@ -2,68 +2,70 @@ const SupplierForm = require("../Models/supplierFormSchema"); const util = require("../Util/utils"); const createSupplierForm = async (req, res) => { - try { - message = util.validator(req.body.supplierData); + try { + message = util.validator(req.body.supplierData); - if (message) { - return res.status(404).send({ erro: message }); - } + if (message) { + return res.status(404).send({ erro: message }); + } - const supplier = new SupplierForm(req.body.supplierData); + const supplier = new SupplierForm(req.body.supplierData); - await supplier.save(); - return res.status(201).send(supplier); - } catch (error) { - return res.status(400).send(error); - } + await supplier.save(); + return res.status(201).send(supplier); + } catch (error) { + return res.status(400).send(error); + } }; const getSupplierForm = async (req, res) => { - try { - const supplier = await SupplierForm.find({}); - return res.status(200).send(supplier); - } catch (error) { - return res.status(400).send(error); - } + try { + const supplier = await SupplierForm.find({}); + return res.status(200).send(supplier); + } catch (error) { + return res.status(400).send(error); + } }; const getSupplierFormById = async (req, res) => { - try { - const supplier = await SupplierForm.findById(req.params.id); - return res.status(200).send(supplier); - } catch (error) { - return res.status(400).send(error); - } + try { + const supplier = await SupplierForm.findById(req.params.id); + return res.status(200).send(supplier); + } catch (error) { + return res.status(400).send(error); + } }; const deleteSupplierFormById = async (req, res) => { - try { - const deletedSupplier = await SupplierForm.findByIdAndDelete(req.params.id); - return res.status(200).send(deletedSupplier); - } catch (error) { - return res.status(400).send(error); - } + try { + const deletedSupplier = await SupplierForm.findByIdAndDelete( + req.params.id + ); + return res.status(200).send(deletedSupplier); + } catch (error) { + return res.status(400).send(error); + } }; const updateSupplierFormById = async (req, res) => { - try { - const updatedSupplier = await SupplierForm.findById(req.params.id); - if (!updatedSupplier) { - return res.status(404).send(); + try { + const updatedSupplier = await SupplierForm.findById(req.params.id); + if (!updatedSupplier) { + return res.status(404).send(); + } + Object.assign(updatedSupplier, req.body.supplierData); + updatedSupplier.updatedAt = new Date(); + await updatedSupplier.save(); + return res.status(200).send(updatedSupplier); + } catch (error) { + return res.status(400).send(error); } - Object.assign(updatedSupplier, req.body.supplierData); - updatedSupplier.updatedAt = new Date(); - await updatedSupplier.save(); - return res.status(200).send(updatedSupplier); - } catch (error) { - return res.status(400).send(error); - } }; module.exports = { - createSupplierForm, - getSupplierForm, - getSupplierFormById, - deleteSupplierFormById, - updateSupplierFormById, + createSupplierForm, + getSupplierForm, + getSupplierFormById, + deleteSupplierFormById, + updateSupplierFormById, }; diff --git a/src/Models/supplierFormSchema.js b/src/Models/supplierFormSchema.js index ae81129..72a1ac0 100644 --- a/src/Models/supplierFormSchema.js +++ b/src/Models/supplierFormSchema.js @@ -1,96 +1,124 @@ -const mongoose = require('mongoose'); +const mongoose = require("mongoose"); const supplierFormSchema = new mongoose.Schema({ - nome: { type: String, required: true, - unique: true + unique: true, }, tipoPessoa: { type: String, - enum: ['Jurídica', 'Física', ''] + enum: ["Jurídica", "Física", ""], }, cpfCnpj: { type: String, unique: true, immutable: true, - sparse: true + sparse: true, }, statusFornecedor: { type: String, - enum: ['Ativo', 'Inativo', ''] + enum: ["Ativo", "Inativo", ""], }, naturezaTransacao: { type: String, - enum: ['Receita', 'Despesa', ''] + enum: ["Receita", "Despesa", ""], }, email: { type: String, unique: true, - sparse:true + sparse: true, }, nomeContato: { - type: String + type: String, }, celular: { type: String, unique: true, - sparse:true + sparse: true, }, telefone: { type: String, unique: true, - sparse:true + sparse: true, }, cep: { type: String, unique: true, - sparse:true + sparse: true, }, cidade: { - type: String + type: String, }, uf_endereco: { type: String, - enum: ['AC', 'AL', 'AP', 'AM', 'BA', 'CE', 'DF', 'ES', 'GO', 'MA', 'MT', 'MS', 'MG', 'PA', 'PB', 'PR', 'PE', 'PI', 'RJ', 'RN', 'RS', 'RO', 'RR', 'SC', 'SP', 'SE', 'TO', ''] + enum: [ + "AC", + "AL", + "AP", + "AM", + "BA", + "CE", + "DF", + "ES", + "GO", + "MA", + "MT", + "MS", + "MG", + "PA", + "PB", + "PR", + "PE", + "PI", + "RJ", + "RN", + "RS", + "RO", + "RR", + "SC", + "SP", + "SE", + "TO", + "", + ], }, logradouro: { - type: String + type: String, }, complemento: { - type: String + type: String, }, nomeBanco: { - type: String + type: String, }, agencia: { - type: String + type: String, }, numeroBanco: { type: String, unique: true, - sparse: true + sparse: true, }, dv: { type: String, unique: true, - sparse: true + sparse: true, }, chavePix: { type: String, unique: true, - sparse: true + sparse: true, }, createdAt: { type: Date, - default: Date.now + default: Date.now, }, updatedAt: { type: Date, - default: Date.now + default: Date.now, }, -}) +}); -const supplierForm = mongoose.model('Supplier', supplierFormSchema); +const supplierForm = mongoose.model("Supplier", supplierFormSchema); module.exports = supplierForm; diff --git a/src/Util/utils.js b/src/Util/utils.js index 77a425a..8ce730a 100644 --- a/src/Util/utils.js +++ b/src/Util/utils.js @@ -1,130 +1,157 @@ const validator = (dados) => { - - if (typeof dados.nome !== "string" || dados.nome === "") { - return "Nome ou Razão social inválidos"; - } - - if (dados.tipoPessoa !== null) { - const tipoPessoaValidas = ["Jurídica", "Física"]; - if (!tipoPessoaValidas.includes(dados.tipoPessoa)) { - return "Tipo de pessoa inválida"; - } - } - - if (dados.cpfCnpj !== null) { - const cpfValido = /^(\d{3}\.\d{3}\.\d{3}-\d{2})$/; - const cnpjValido = /^(\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2})$/; - if ( - (!cpfValido.test(dados.cpfCnpj) && dados.tipoPessoa === "Física") || - (!cnpjValido.test(dados.cpfCnpj) && dados.tipoPessoa === "Jurídica") - ) { - return "CPF ou CNPJ inválido"; - } - } - - if (dados.statusFornecedor !== null) { - const statusFornecedorValido = ["Ativo", "Inativo"]; - if (!statusFornecedorValido.includes(dados.statusFornecedor)) { - return "Status de fornecedor inválido"; - } - } - - if (dados.naturezaTransacao !== null) { - const tipoTransacaoValida = ["Receita", "Despesa"]; - if (!tipoTransacaoValida.includes(dados.naturezaTransacao)) { - return "Tipo de transação inválida"; - } - } - - if (dados.email !== null) { - const emailValido = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; - if (!emailValido.test(dados.email)) { - return "E-mail inválido"; - } - } - - if (dados.nomeContato !== null) { - if (typeof dados.nomeContato !== "string") { - return "Nome de contato inválido"; - } - } - - if (dados.celular !== null) { - const celularValido = /^\(\d{2}\) \d{5}-\d{4}$/; - if (!celularValido.test(dados.celular)) { - return "Número de celular inválido"; - } - } - - if (dados.telefone !== null) { - const telefoneValido = /^\(\d{2}\) \d{4}-\d{4}$/; - if (!telefoneValido.test(dados.telefone)) { - return "Número de telefone inválido"; - } - } - - if (dados.cep !== null) { - const cepValido = /^\d{5}-\d{3}$/; - if (!cepValido.test(dados.cep)) { - return "Cep inválido"; - } - } - - if (dados.cidade !== null) { - if (typeof dados.cidade !== "string") { - return "Cidade inválida"; - } - } - - if (dados.uf_endereco !== null) { - const ufsValidos = ["AC", "AL", "AP", "AM", "BA", "CE", "DF", "ES", "GO", "MA", "MT", "MS", "MG", "PA", "PB", "PR", "PE", "PI", "RJ", "RN", "RS", "RO", "RR", "SC", "SP", "SE", "TO"]; - if (!ufsValidos.includes(dados.uf_endereco)) { - return "UF inválida"; - } - } - - if (dados.logradouro !== null) { - const logradouro = /^[a-zA-Z0-9\s,.()-]{5,100}$/; - if (!logradouro.test(dados.logradouro)) { - return "Logradouro inválido. Deve conter entre 5 e 100 caracteres."; - } - } - - if (dados.complemento !== null) { - if (typeof dados.complemento !== "string") { - return "Complemento inválido"; - } - } - - if (dados.agencia !== null) { - if (typeof dados.agencia !== "string") { - return "Agência inválida"; - } - } - - if (dados.numeroBanco !== null) { - const numeroValido = /^\d*$/; - if (!numeroValido.test(dados.numeroBanco)) { - return "Número inválido"; - } - } - - if (dados.dv !== null) { - const dvValido = /^\d*$/; - if (!dvValido.test(dados.dv)) { - return "DV inválido"; - } - } - - if (dados.chavePix !== null) { - if (typeof dados.chavePix !== "string") { - return "Chave Pix inválida"; - } - } - - return null; + if (typeof dados.nome !== "string" || dados.nome === "") { + return "Nome ou Razão social inválidos"; + } + + if (dados.tipoPessoa !== null) { + const tipoPessoaValidas = ["Jurídica", "Física"]; + if (!tipoPessoaValidas.includes(dados.tipoPessoa)) { + return "Tipo de pessoa inválida"; + } + } + + if (dados.cpfCnpj !== null) { + const cpfValido = /^(\d{3}\.\d{3}\.\d{3}-\d{2})$/; + const cnpjValido = /^(\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2})$/; + if ( + (!cpfValido.test(dados.cpfCnpj) && dados.tipoPessoa === "Física") || + (!cnpjValido.test(dados.cpfCnpj) && dados.tipoPessoa === "Jurídica") + ) { + return "CPF ou CNPJ inválido"; + } + } + + if (dados.statusFornecedor !== null) { + const statusFornecedorValido = ["Ativo", "Inativo"]; + if (!statusFornecedorValido.includes(dados.statusFornecedor)) { + return "Status de fornecedor inválido"; + } + } + + if (dados.naturezaTransacao !== null) { + const tipoTransacaoValida = ["Receita", "Despesa"]; + if (!tipoTransacaoValida.includes(dados.naturezaTransacao)) { + return "Tipo de transação inválida"; + } + } + + if (dados.email !== null) { + const emailValido = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; + if (!emailValido.test(dados.email)) { + return "E-mail inválido"; + } + } + + if (dados.nomeContato !== null) { + if (typeof dados.nomeContato !== "string") { + return "Nome de contato inválido"; + } + } + + if (dados.celular !== null) { + const celularValido = /^\(\d{2}\) \d{5}-\d{4}$/; + if (!celularValido.test(dados.celular)) { + return "Número de celular inválido"; + } + } + + if (dados.telefone !== null) { + const telefoneValido = /^\(\d{2}\) \d{4}-\d{4}$/; + if (!telefoneValido.test(dados.telefone)) { + return "Número de telefone inválido"; + } + } + + if (dados.cep !== null) { + const cepValido = /^\d{5}-\d{3}$/; + if (!cepValido.test(dados.cep)) { + return "Cep inválido"; + } + } + + if (dados.cidade !== null) { + if (typeof dados.cidade !== "string") { + return "Cidade inválida"; + } + } + + if (dados.uf_endereco !== null) { + const ufsValidos = [ + "AC", + "AL", + "AP", + "AM", + "BA", + "CE", + "DF", + "ES", + "GO", + "MA", + "MT", + "MS", + "MG", + "PA", + "PB", + "PR", + "PE", + "PI", + "RJ", + "RN", + "RS", + "RO", + "RR", + "SC", + "SP", + "SE", + "TO", + ]; + if (!ufsValidos.includes(dados.uf_endereco)) { + return "UF inválida"; + } + } + + if (dados.logradouro !== null) { + const logradouro = /^[a-zA-Z0-9\s,.()-]{5,100}$/; + if (!logradouro.test(dados.logradouro)) { + return "Logradouro inválido. Deve conter entre 5 e 100 caracteres."; + } + } + + if (dados.complemento !== null) { + if (typeof dados.complemento !== "string") { + return "Complemento inválido"; + } + } + + if (dados.agencia !== null) { + if (typeof dados.agencia !== "string") { + return "Agência inválida"; + } + } + + if (dados.numeroBanco !== null) { + const numeroValido = /^\d*$/; + if (!numeroValido.test(dados.numeroBanco)) { + return "Número inválido"; + } + } + + if (dados.dv !== null) { + const dvValido = /^\d*$/; + if (!dvValido.test(dados.dv)) { + return "DV inválido"; + } + } + + if (dados.chavePix !== null) { + if (typeof dados.chavePix !== "string") { + return "Chave Pix inválida"; + } + } + + return null; }; module.exports = { - validator, -}; \ No newline at end of file + validator, +}; diff --git a/src/index.js b/src/index.js index 796a7e8..edb5aa5 100644 --- a/src/index.js +++ b/src/index.js @@ -16,9 +16,9 @@ const { } = process.env; const corsOption = { - origin: "*", - methods: 'GET,HEAD,PUT,PATCH,POST,DELETE' -} + origin: "*", + methods: "GET,HEAD,PUT,PATCH,POST,DELETE", +}; // Aplicar o middleware CORS antes das rotas app.use(cors(corsOption)); diff --git a/src/routes.js b/src/routes.js index e165cdc..875aff0 100644 --- a/src/routes.js +++ b/src/routes.js @@ -1,19 +1,21 @@ const express = require("express"); const routes = express.Router(); -<<<<<<< HEAD -const supplierFormController = require('./Controllers/supplierFormController'); -======= const NewController = require("./Controllers/newController"); ->>>>>>> devel // Private // routes.get('/finance', tokenValidation, ???.getUsers); // routes.get('/finance/:id', tokenValidation, ???.getUserById); -routes.post('/SupplierForm/create', supplierFormController.createSupplierForm); -routes.get('/SupplierForm', supplierFormController.getSupplierForm); -routes.get('/SupplierForm/:id', supplierFormController.getSupplierFormById); -routes.delete('/SupplierForm/delete/:id', supplierFormController.deleteSupplierFormById); -routes.patch('/SupplierForm/update/:id', supplierFormController.updateSupplierFormById); +routes.post("/SupplierForm/create", supplierFormController.createSupplierForm); +routes.get("/SupplierForm", supplierFormController.getSupplierForm); +routes.get("/SupplierForm/:id", supplierFormController.getSupplierFormById); +routes.delete( + "/SupplierForm/delete/:id", + supplierFormController.deleteSupplierFormById +); +routes.patch( + "/SupplierForm/update/:id", + supplierFormController.updateSupplierFormById +); // Public routes.post("/finance/create", NewController.createNew);