listo la reservacion

This commit is contained in:
arturo
2020-09-08 15:39:32 -05:00
parent 0b4c3d56d3
commit abfdbfc51d
5 changed files with 128 additions and 26 deletions
+29 -20
View File
@@ -1,12 +1,13 @@
import { Request, Response } from 'express' import { Request, Response } from 'express'
import { getRepository, QueryBuilder } from 'typeorm' import { getRepository } from 'typeorm'
import { Equipo } from '@src/entity/Equipo' import { Equipo } from '@src/entity/Equipo'
import { Prestamo } from '@src/entity/Prestamo' import { Prestamo } from '@src/entity/Prestamo'
import { Usuario } from '@src/entity/Usuario' import { Usuario } from '@src/entity/Usuario'
import { Operador } from '@src/entity/Operador' import { Operador } from '@src/entity/Operador'
import * as moment from 'moment' import * as moment from 'moment'
import { Mesa } from '@src/entity/Mesa'
export class PrestamoController { export class PrestamoController {
static async prestamo (request: Request, res: Response) { static async crear (request: Request, res: Response) {
const usuarioRepository = await getRepository(Usuario) const usuarioRepository = await getRepository(Usuario)
const equipoRepository = await getRepository(Equipo) const equipoRepository = await getRepository(Equipo)
const prestamoRepository = await getRepository(Prestamo) 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 prestamoRepository = getRepository(Prestamo)
const operadorRepository = getRepository(Operador) const operadorRepository = getRepository(Operador)
@@ -111,27 +112,40 @@ export class PrestamoController {
const equipoRepository = getRepository(Equipo) const equipoRepository = getRepository(Equipo)
const prestamoRepository = getRepository(Prestamo) const prestamoRepository = getRepository(Prestamo)
const operadorRepository = getRepository(Operador) const operadorRepository = getRepository(Operador)
const mesaRepository = getRepository(Mesa)
const prestamo = await prestamoRepository.findOne(req.body.prestamoId, { const { prestamoId, operadorId } = req.body
relations: ['equipo']
const prestamo = await prestamoRepository.findOne(prestamoId, {
relations: ['equipo', 'usuario', 'mesa']
}) })
if (!prestamo) { if (!prestamo) {
res.status(400).json({ err: 'Prestamo no encontrado' }) res.status(400).json({ err: 'Prestamo no encontrado' })
} }
const operador = await operadorRepository.findOne(req.body.operadorId) const operador = await operadorRepository.findOne(operadorId)
if (!operador) { if (!operador) {
res.status(400).json({ err: 'Operador no encontrado' }) res.status(400).json({ err: 'Operador no encontrado' })
} }
if (!prestamo.usuario.interno) {
prestamo.mesa.activo = false
}
prestamo.activo = false prestamo.activo = false
prestamo.equipo.activo = false prestamo.equipo.activo = false
prestamo.operadorRegreso = operador prestamo.operadorRegreso = operador
try {
await equipoRepository.save(prestamo.equipo) if (!prestamo.usuario.interno) {
await prestamoRepository.save(prestamo) await mesaRepository.save(prestamo.mesa)
res.status(200).json(prestamo) }
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 repository = getRepository(Prestamo)
const { usuarioId } = req.query const { usuarioId } = req.query
console.log(usuarioId) console.log(usuarioId)
@@ -139,26 +153,21 @@ export class PrestamoController {
const prestamo = await repository const prestamo = await repository
.createQueryBuilder('prestamo') .createQueryBuilder('prestamo')
.leftJoinAndSelect('prestamo.usuario', 'usuario') .leftJoinAndSelect('prestamo.usuario', 'usuario')
.leftJoinAndSelect('prestamo.mesa', 'mesa')
.where('usuario.id = :usuarioId', { usuarioId }) .where('usuario.id = :usuarioId', { usuarioId })
.andWhere('prestamo.activo = :activo', { activo: true }) .andWhere('prestamo.activo = :activo', { activo: true })
.getOne() .getOne()
// const prestamo = await repository.find({
// relations: ['usuario'],
// where: {
// usuarioId,
// activo: true
// }
// })
if (!prestamo) { 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 return
} }
console.log(prestamo)
res.status(200).json(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 repository = getRepository(Prestamo)
const { prestamoId } = req.body const { prestamoId } = req.body
+92
View File
@@ -5,6 +5,8 @@ import * as moment from 'moment'
import { Horario } from '@src/entity/Horario' import { Horario } from '@src/entity/Horario'
import { Usuario } from '@src/entity/Usuario' import { Usuario } from '@src/entity/Usuario'
import { Equipo } from '@src/entity/Equipo' import { Equipo } from '@src/entity/Equipo'
import { Operador } from '@src/entity/Operador'
import { Mesa } from '@src/entity/Mesa'
export class ResevacionController { export class ResevacionController {
static async espaciosDisponibles (req: Request, res: Response) { static async espaciosDisponibles (req: Request, res: Response) {
@@ -45,6 +47,7 @@ export class ResevacionController {
if (!horario) { if (!horario) {
res.status(400).json({ err: 'El horario no existe' }) res.status(400).json({ err: 'El horario no existe' })
return
} }
const prestamoActivo = await prestamoRepository const prestamoActivo = await prestamoRepository
@@ -56,6 +59,7 @@ export class ResevacionController {
if (prestamoActivo) { if (prestamoActivo) {
res.status(400).json({ err: 'El usuario tiene un prestamo activo' }) res.status(400).json({ err: 'El usuario tiene un prestamo activo' })
return
} }
const equipo = await equipoRepository const equipo = await equipoRepository
.createQueryBuilder('equipo') .createQueryBuilder('equipo')
@@ -67,6 +71,10 @@ export class ResevacionController {
.orderBy('equipo.updatedAt', 'ASC') .orderBy('equipo.updatedAt', 'ASC')
.getOne() .getOne()
if (!equipo) {
res.status(400).json({ err: 'Ya no hay equipos' })
return
}
const prestamo = new Prestamo() const prestamo = new Prestamo()
const horamax = horario.hora.split('-')[1].split(':')[0] const horamax = horario.hora.split('-')[1].split(':')[0]
const m = moment() const m = moment()
@@ -91,4 +99,88 @@ export class ResevacionController {
prestamo 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 })
}
}
} }
+2 -2
View File
@@ -117,8 +117,8 @@ export class UsuarioController {
const usuarioInterno = { const usuarioInterno = {
nombre: 'Arturo', nombre: 'Arturo',
apellidoPaterno: 'holdda', apellidoPaterno: 'Guerrero',
apellidoMaterno: 'holdda', apellidoMaterno: 'Lopez',
institucion: 'Fes acatlan', institucion: 'Fes acatlan',
carrera: 'Matematicas aplicadas', carrera: 'Matematicas aplicadas',
interno: true interno: true
+4 -4
View File
@@ -2,10 +2,10 @@ import { Router } from 'express'
import { PrestamoController } from '@src/controller/Prestamo' import { PrestamoController } from '@src/controller/Prestamo'
const router = Router() const router = Router()
router.post('/', PrestamoController.prestamo) router.post('/', PrestamoController.crear)
router.put('/regreso', PrestamoController.regreso) router.put('/regreso', PrestamoController.regreso)
router.put('/confirmar', PrestamoController.confirmarPrestamo) router.put('/confirmar', PrestamoController.confirmar)
router.get('/estatus', PrestamoController.estatusPrestamo) router.get('/estatus', PrestamoController.estatus)
router.put('/cancelar', PrestamoController.cancelarPrestamo) router.put('/cancelar', PrestamoController.cancelar)
export default router export default router
+1
View File
@@ -5,5 +5,6 @@ const router = Router()
router.post('/', ResevacionController.reservar) router.post('/', ResevacionController.reservar)
router.get('/espacios', ResevacionController.espaciosDisponibles) router.get('/espacios', ResevacionController.espaciosDisponibles)
router.put('/confirmar', ResevacionController.confirmar)
export default router export default router