diff --git a/src/controller/Prestamo.ts b/src/controller/Prestamo.ts index e18a10d..8a415d4 100644 --- a/src/controller/Prestamo.ts +++ b/src/controller/Prestamo.ts @@ -1,12 +1,13 @@ import { Request, Response } from 'express' -import { getRepository, QueryBuilder } from 'typeorm' +import { getRepository } from 'typeorm' import { Equipo } from '@src/entity/Equipo' import { Prestamo } from '@src/entity/Prestamo' import { Usuario } from '@src/entity/Usuario' import { Operador } from '@src/entity/Operador' import * as moment from 'moment' +import { Mesa } from '@src/entity/Mesa' export class PrestamoController { - static async prestamo (request: Request, res: Response) { + static async crear (request: Request, res: Response) { const usuarioRepository = await getRepository(Usuario) const equipoRepository = await getRepository(Equipo) const prestamoRepository = await getRepository(Prestamo) @@ -72,7 +73,7 @@ export class PrestamoController { }) } - static async confirmarPrestamo (req: Request, res: Response) { + static async confirmar (req: Request, res: Response) { const prestamoRepository = getRepository(Prestamo) const operadorRepository = getRepository(Operador) @@ -111,27 +112,40 @@ export class PrestamoController { const equipoRepository = getRepository(Equipo) const prestamoRepository = getRepository(Prestamo) const operadorRepository = getRepository(Operador) + const mesaRepository = getRepository(Mesa) - const prestamo = await prestamoRepository.findOne(req.body.prestamoId, { - relations: ['equipo'] + const { prestamoId, operadorId } = req.body + + const prestamo = await prestamoRepository.findOne(prestamoId, { + relations: ['equipo', 'usuario', 'mesa'] }) if (!prestamo) { res.status(400).json({ err: 'Prestamo no encontrado' }) } - const operador = await operadorRepository.findOne(req.body.operadorId) + const operador = await operadorRepository.findOne(operadorId) if (!operador) { res.status(400).json({ err: 'Operador no encontrado' }) } + + if (!prestamo.usuario.interno) { + prestamo.mesa.activo = false + } prestamo.activo = false prestamo.equipo.activo = false prestamo.operadorRegreso = operador - - await equipoRepository.save(prestamo.equipo) - await prestamoRepository.save(prestamo) - res.status(200).json(prestamo) + try { + if (!prestamo.usuario.interno) { + await mesaRepository.save(prestamo.mesa) + } + await equipoRepository.save(prestamo.equipo) + await prestamoRepository.save(prestamo) + res.status(200).send('Prestamo regresado Exitosamente') + } catch (err) { + res.status(400).json({ err: err.message }) + } } - static async estatusPrestamo (req: Request, res: Response) { + static async estatus (req: Request, res: Response) { const repository = getRepository(Prestamo) const { usuarioId } = req.query console.log(usuarioId) @@ -139,26 +153,21 @@ export class PrestamoController { const prestamo = await repository .createQueryBuilder('prestamo') .leftJoinAndSelect('prestamo.usuario', 'usuario') + .leftJoinAndSelect('prestamo.mesa', 'mesa') .where('usuario.id = :usuarioId', { usuarioId }) .andWhere('prestamo.activo = :activo', { activo: true }) .getOne() - // const prestamo = await repository.find({ - // relations: ['usuario'], - // where: { - // usuarioId, - // activo: true - // } - // }) if (!prestamo) { - res.status(400).json({ err: 'El usuario no tiene prestamos activos' }) + res.status(200).json({ err: 'El usuario no tiene prestamos activos' }) return } + console.log(prestamo) res.status(200).json(prestamo) } - static async cancelarPrestamo (req: Request, res: Response) { + static async cancelar (req: Request, res: Response) { const repository = getRepository(Prestamo) const { prestamoId } = req.body diff --git a/src/controller/Reservacion.ts b/src/controller/Reservacion.ts index fb26c25..d4a3ad9 100644 --- a/src/controller/Reservacion.ts +++ b/src/controller/Reservacion.ts @@ -5,6 +5,8 @@ import * as moment from 'moment' import { Horario } from '@src/entity/Horario' import { Usuario } from '@src/entity/Usuario' import { Equipo } from '@src/entity/Equipo' +import { Operador } from '@src/entity/Operador' +import { Mesa } from '@src/entity/Mesa' export class ResevacionController { static async espaciosDisponibles (req: Request, res: Response) { @@ -45,6 +47,7 @@ export class ResevacionController { if (!horario) { res.status(400).json({ err: 'El horario no existe' }) + return } const prestamoActivo = await prestamoRepository @@ -56,6 +59,7 @@ export class ResevacionController { if (prestamoActivo) { res.status(400).json({ err: 'El usuario tiene un prestamo activo' }) + return } const equipo = await equipoRepository .createQueryBuilder('equipo') @@ -67,6 +71,10 @@ export class ResevacionController { .orderBy('equipo.updatedAt', 'ASC') .getOne() + if (!equipo) { + res.status(400).json({ err: 'Ya no hay equipos' }) + return + } const prestamo = new Prestamo() const horamax = horario.hora.split('-')[1].split(':')[0] const m = moment() @@ -91,4 +99,88 @@ export class ResevacionController { prestamo }) } + + static async confirmar (req: Request, res: Response) { + const prestamoRepository = getRepository(Prestamo) + const operadorRepository = getRepository(Operador) + const mesaRepository = getRepository(Mesa) + + const mesa = await mesaRepository + .createQueryBuilder('mesa') + .where('mesa.activo = :activo', { activo: false }) + .orderBy('mesa.updatedAt', 'ASC') + .getOne() + + const { prestamoId, operadorId } = req.body + + if (!mesa) { + res.status(400).json({ + err: 'Ya no hay mesas disponbles' + }) + return + } + const prestamo = await prestamoRepository.findOne(prestamoId, { + relations: ['equipo'] + }) + if (!prestamo) { + res.status(400).json({ + err: 'El prestamo no existe' + }) + return + } + const operador = await operadorRepository.findOne(operadorId) + + if (!operador) { + res.status(400).json({ + err: 'El operador no existe' + }) + return + } + + mesa.activo = true + + prestamo.operadorEntrega = operador + prestamo.reservado = false + prestamo.activo = true + prestamo.mesa = mesa + + try { + await mesaRepository.save(mesa) + await prestamoRepository.save(prestamo) + res.status(200).json(prestamo) + } catch (err) { + res.status(400).json({ err: err.message }) + } + } + + static async regreso (req: Request, res: Response) { + const equipoRepository = getRepository(Equipo) + const prestamoRepository = getRepository(Prestamo) + const operadorRepository = getRepository(Operador) + const mesaRepository = getRepository(Mesa) + + const prestamo = await prestamoRepository.findOne(req.body.prestamoId, { + relations: ['equipo', 'mesa'] + }) + if (!prestamo) { + res.status(400).json({ err: 'Prestamo no encontrado' }) + } + const operador = await operadorRepository.findOne(req.body.operadorId) + if (!operador) { + res.status(400).json({ err: 'Operador no encontrado' }) + } + prestamo.activo = false + prestamo.equipo.activo = false + prestamo.operadorRegreso = operador + prestamo.mesa.activo = false + + try { + await equipoRepository.save(prestamo.equipo) + await mesaRepository.save(prestamo.mesa) + await prestamoRepository.save(prestamo) + res.status(200).json(prestamo) + } catch (err) { + res.status(400).json({ err: err.message }) + } + } } diff --git a/src/controller/Usuario.ts b/src/controller/Usuario.ts index 70c4bd0..6dab347 100644 --- a/src/controller/Usuario.ts +++ b/src/controller/Usuario.ts @@ -117,8 +117,8 @@ export class UsuarioController { const usuarioInterno = { nombre: 'Arturo', - apellidoPaterno: 'holdda', - apellidoMaterno: 'holdda', + apellidoPaterno: 'Guerrero', + apellidoMaterno: 'Lopez', institucion: 'Fes acatlan', carrera: 'Matematicas aplicadas', interno: true diff --git a/src/routes/prestamo.ts b/src/routes/prestamo.ts index 5e5e48f..0ec291a 100644 --- a/src/routes/prestamo.ts +++ b/src/routes/prestamo.ts @@ -2,10 +2,10 @@ import { Router } from 'express' import { PrestamoController } from '@src/controller/Prestamo' const router = Router() -router.post('/', PrestamoController.prestamo) +router.post('/', PrestamoController.crear) router.put('/regreso', PrestamoController.regreso) -router.put('/confirmar', PrestamoController.confirmarPrestamo) -router.get('/estatus', PrestamoController.estatusPrestamo) -router.put('/cancelar', PrestamoController.cancelarPrestamo) +router.put('/confirmar', PrestamoController.confirmar) +router.get('/estatus', PrestamoController.estatus) +router.put('/cancelar', PrestamoController.cancelar) export default router diff --git a/src/routes/reservacion.ts b/src/routes/reservacion.ts index 3391205..a2f8412 100644 --- a/src/routes/reservacion.ts +++ b/src/routes/reservacion.ts @@ -5,5 +5,6 @@ const router = Router() router.post('/', ResevacionController.reservar) router.get('/espacios', ResevacionController.espaciosDisponibles) +router.put('/confirmar', ResevacionController.confirmar) export default router