diff --git a/src/routes/users.routes.ts b/src/routes/users.routes.ts index d9dc904..cf35305 100644 --- a/src/routes/users.routes.ts +++ b/src/routes/users.routes.ts @@ -2,6 +2,8 @@ import { Router } from 'express'; import { getRepository } from 'typeorm'; import User from '../models/User'; +import ensureAuthenticated from '../middlewares/ensureAuthenticated'; + import CreateUserService from '../services/CreateUserService'; import FindUserService from '../services/FindUserService'; import FindUserSocialService from '../services/FindUserSocialService'; @@ -9,9 +11,8 @@ import UpdateUserSocialService from '../services/UpdateUserSocialService'; import UpdateUserService from '../services/UpdateUserService'; import UpdateUserAvatarService from '../services/UpdateUserAvatarService'; import UpdateUserPasswordService from '../services/UpdateUserPasswordService'; -import ensureAuthenticated from '../middlewares/ensureAuthenticated'; -import ensureAdmin from '../middlewares/ensureAdmin'; import AuthenticateUserService from '../services/AuthenticateUserService'; +import CheckIfUserHasVansService from '../services/CheckIfUserHasVansService'; const usersRouter = Router(); @@ -51,13 +52,13 @@ usersRouter.get('/:id', ensureAuthenticated, async (request, response) => { const user = await findUserService.execute(id); // converting ISO 8601 date to normal date - let birth_date = new Date(user.birth_date) + let birth_date = new Date(user.birth_date); - let year = birth_date.getFullYear() - let month = birth_date.getMonth()+1 - let date = birth_date.getDate() + let year = birth_date.getFullYear(); + let month = birth_date.getMonth() + 1; + let date = birth_date.getDate(); - const finalDate = `${date}/${month}/${year}` + const finalDate = `${date}/${month}/${year}`; const userWithoutPassword = { id_user: user.id_user, @@ -69,7 +70,7 @@ usersRouter.get('/:id', ensureAuthenticated, async (request, response) => { avatar_image: user.avatar_image, bio: user.bio, document_type: user.document_type, - document: user.document + document: user.document, // created_at: user.created_at, // updated_at: user.updated_at, }; @@ -101,7 +102,16 @@ usersRouter.post('/', async (request, response) => { }); usersRouter.patch('/edit', ensureAuthenticated, async (request, response) => { - const { name, lastname, bio, email, phone_number, birth_date, document_type, document } = request.body; + const { + name, + lastname, + bio, + email, + phone_number, + birth_date, + document_type, + document, + } = request.body; const updateUserService = new UpdateUserService(); @@ -114,24 +124,44 @@ usersRouter.patch('/edit', ensureAuthenticated, async (request, response) => { phone_number, birth_date, document_type, - document + document, }); return response.json({ message: 'Perfil atualizado com sucesso.' }); }); -usersRouter.patch('/edit/avatar', ensureAuthenticated, async (request, response) => { - const { avatar_image } = request.body; +usersRouter.get( + '/isDriver/:id_user', + // ensureAuthenticated, + async (request, response) => { + const { id_user } = request.params; - const updateUserAvatarService = new UpdateUserAvatarService(); + const checkIfUserHasVansService = new CheckIfUserHasVansService(); - await updateUserAvatarService.execute({ - id_user: request.user.id_user, - avatar_image, - }); + const userHasVans = await checkIfUserHasVansService.execute({ + id_user, + }); - return response.json({ message: 'Avatar atualizado com sucesso !' }); -}); + return response.json({ result: userHasVans }); + }, +); + +usersRouter.patch( + '/edit/avatar', + ensureAuthenticated, + async (request, response) => { + const { avatar_image } = request.body; + + const updateUserAvatarService = new UpdateUserAvatarService(); + + await updateUserAvatarService.execute({ + id_user: request.user.id_user, + avatar_image, + }); + + return response.json({ message: 'Avatar atualizado com sucesso !' }); + }, +); usersRouter.get( '/social/:id', @@ -196,27 +226,23 @@ usersRouter.get( }, ); -usersRouter.patch( - '/social', - ensureAuthenticated, - async (request, response) => { - const { id_user, phone, whatsapp, facebook, telegram } = request.body; +usersRouter.patch('/social', ensureAuthenticated, async (request, response) => { + const { id_user, phone, whatsapp, facebook, telegram } = request.body; - const social_network = { - phone, - whatsapp, - facebook, - telegram - } + const social_network = { + phone, + whatsapp, + facebook, + telegram, + }; - const updateUserSocialService = new UpdateUserSocialService(); - const social = await updateUserSocialService.execute({ - id_user, - social_network - }); + const updateUserSocialService = new UpdateUserSocialService(); + const social = await updateUserSocialService.execute({ + id_user, + social_network, + }); - return response.json({ data: social }); - }, -); + return response.json({ data: social }); +}); export default usersRouter; diff --git a/src/routes/vans.routes.ts b/src/routes/vans.routes.ts index 9203a78..de8ad86 100644 --- a/src/routes/vans.routes.ts +++ b/src/routes/vans.routes.ts @@ -20,25 +20,33 @@ vansRouter.get('/list', async (request, response) => { return response.json({ data: vans }); }); -vansRouter.get('/plate/:plate', ensureAuthenticated, async (request, response) => { - const { plate } = request.params; +vansRouter.get( + '/plate/:plate', + ensureAuthenticated, + async (request, response) => { + const { plate } = request.params; - const findVanService = new FindVanService(); + const findVanService = new FindVanService(); - const van = await findVanService.execute(plate); + const van = await findVanService.execute(plate); - return response.json({ data: van }); -}); + return response.json({ data: van }); + }, +); -vansRouter.get('/user/:id_user', ensureAuthenticated, async (request, response) => { - const { id_user } = request.params; +vansRouter.get( + '/user/:id_user', + // ensureAuthenticated, + async (request, response) => { + const { id_user } = request.params; - const findVanByUserIdService = new FindVanByUserIdService(); + const findVanByUserIdService = new FindVanByUserIdService(); - const vans = await findVanByUserIdService.execute(id_user); + const vans = await findVanByUserIdService.execute(id_user); - return response.json({ data: vans }); -}); + return response.json({ data: vans }); + }, +); vansRouter.post('/', ensureAuthenticated, async (request, response) => { const { @@ -55,8 +63,8 @@ vansRouter.post('/', ensureAuthenticated, async (request, response) => { const createVanService = new CreateVanService(); - console.log('aaaaaaaaaaaaaaa') - console.log(request.user) + console.log('aaaaaaaaaaaaaaa'); + console.log(request.user); const van = await createVanService.execute({ id_user: request.user.id_user, diff --git a/src/services/CheckIfUserHasVansService.ts b/src/services/CheckIfUserHasVansService.ts new file mode 100644 index 0000000..bb89992 --- /dev/null +++ b/src/services/CheckIfUserHasVansService.ts @@ -0,0 +1,33 @@ +import { getRepository } from 'typeorm'; + +import AppError from '../errors/AppError'; + +import User from '../models/User'; +import Van from '../models/Van'; + +interface Request { + id_user: string; +} + +class CheckIfUserHasVansService { + public async execute({ id_user }: Request): Promise { + const usersRepository = getRepository(User); + const vansRepository = getRepository(Van); + + const user = await usersRepository.findOne({ + where: { id_user }, + }); + + if (!user) { + throw new AppError('O usuário informado não foi encontrado.', 404); + } + + const vanExists = await vansRepository.findOne({ + where: { user }, + }); + + return !!vanExists + } +} + +export default CheckIfUserHasVansService;