Oferta page
This commit is contained in:
@@ -17,7 +17,7 @@ import { validateToken } from './middleware/auth.js'
|
||||
|
||||
import { register, login } from './routes/auth.js'
|
||||
import { deleteUser } from './routes/user.js'
|
||||
import { createOffer, deleteOffer, getOffers } from './routes/offer.js'
|
||||
import { createOffer, deleteOffer, getOffers, getOffer } from './routes/offer.js'
|
||||
|
||||
/* Test route so nxckwc can test axios*/
|
||||
app.get('/users', async (req, res) => {
|
||||
@@ -33,8 +33,9 @@ app.post('/register', register)
|
||||
app.delete('/user/:userId', deleteUser)
|
||||
|
||||
app.post('/crear-oferta', validateToken, createOffer)
|
||||
app.get('/offers', getOffers)
|
||||
app.delete('/oferta/:projectId', validateToken, deleteOffer)
|
||||
app.get('/ofertas', getOffers)
|
||||
app.get('/oferta/:offerId', validateToken, getOffer)
|
||||
app.delete('/oferta/:offerId', validateToken, deleteOffer)
|
||||
|
||||
|
||||
app.listen(port, () => {
|
||||
|
||||
@@ -6,16 +6,27 @@ export const getOffers = async(req, res) => {
|
||||
res.json(offers)
|
||||
}
|
||||
|
||||
export const getOffer = async(req, res) => {
|
||||
const { offerId } = req.params
|
||||
const id = parseInt(offerId)
|
||||
const offer = await prisma.oferta.findFirst({ where: { id } })
|
||||
|
||||
res.json(offer);
|
||||
}
|
||||
|
||||
export const createOffer = async (req, res) => {
|
||||
const { titulo, empresa, ubicacion, salario, contrato, descripcion } = req.body;
|
||||
const authorId = req.user.id
|
||||
|
||||
const salarioRegex = /\d/
|
||||
|
||||
if (!titulo || !empresa || !ubicacion || !salario || !contrato || !descripcion) return res.status(400).json({ error: ""})
|
||||
|
||||
if (titulo.length < 3 || titulo.length > 64) { return res.status(400).json({ error: 'El titulo debe tener entre 3 y 64 caracteres' })}
|
||||
if (empresa.length < 2 || empresa.length > 32) { return res.status(400).json({ error: 'El nombre de la empresa debe tener entre 2 y 32 caracteres' })}
|
||||
if (ubicacion.length < 3 || ubicacion.length > 16) { return res.status(400).json({ error: 'La ubicacion debe tener entre 3 y 16 caracteres' })}
|
||||
if (salario.length < 3 || salario.length > 10) { return res.status(400).json({ error: 'El salario debe seguir este formato: 500€ o 20€/hora' })}
|
||||
if (!salarioRegex.test(salario)) return res.status(400).json({ error: "El salario debe contener un numero"})
|
||||
if (descripcion.length < 10 || descripcion.length > 256) { return res.status(400).json({ error: 'La descripcion debe tener entre 10 y 256 caracteres' })}
|
||||
|
||||
const contratosValidos = ["freelance", "completo", "medio"]
|
||||
|
||||
Reference in New Issue
Block a user