prestamo y dvolcuion normal
This commit is contained in:
@@ -1,10 +1,47 @@
|
||||
import { Request, Response } from 'express'
|
||||
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'
|
||||
export class EquipoController {
|
||||
static async prestamo (request: Request, res: Response) {
|
||||
const equipo = await getRepository(Equipo)
|
||||
const usuarioRepository = await getRepository(Usuario)
|
||||
const operadorRepository = await getRepository(Operador)
|
||||
const equipoRepository = await getRepository(Equipo)
|
||||
const prestamoRepository = await getRepository(Prestamo)
|
||||
|
||||
const usuario = await usuarioRepository.findOne(request.body.idUsuario, {
|
||||
select: ['id', 'baja', 'multa']
|
||||
})
|
||||
|
||||
if (!usuario) {
|
||||
res.status(400).json({ err: 'Usuario no encontrado' })
|
||||
return
|
||||
}
|
||||
|
||||
const prestamoActivo = await prestamoRepository
|
||||
.createQueryBuilder('prestamo')
|
||||
.where('prestamo.usuarioId = :idUsuario', { idUsuario: usuario.id })
|
||||
.andWhere('prestamo.activo = true')
|
||||
.getOne()
|
||||
console.log(prestamoActivo)
|
||||
if (prestamoActivo) {
|
||||
res.status(400).json({ err: 'El usuario tiene un prestamo activo' })
|
||||
return
|
||||
}
|
||||
|
||||
const operador = await operadorRepository.findOne(request.body.idOperador, {
|
||||
select: ['id', 'admin']
|
||||
})
|
||||
|
||||
if (!operador) {
|
||||
res.status(400).json({ err: 'Operador no encontrado' })
|
||||
return
|
||||
}
|
||||
|
||||
const equipo = await equipoRepository
|
||||
.createQueryBuilder('equipo')
|
||||
.leftJoinAndSelect('equipo.carrito', 'carrito')
|
||||
.leftJoinAndSelect('carrito.tipo', 'tipo')
|
||||
@@ -13,9 +50,49 @@ export class EquipoController {
|
||||
.andWhere('tipo.nombre = :tipo', { tipo: 'chromebook' })
|
||||
.orderBy('equipo.updatedAt', 'ASC')
|
||||
.getOne()
|
||||
const repository = await getRepository(Equipo)
|
||||
|
||||
const prestamo = new Prestamo()
|
||||
|
||||
equipo.activo = true
|
||||
await repository.save(equipo)
|
||||
res.status(200).json(equipo)
|
||||
|
||||
prestamo.equipo = equipo
|
||||
prestamo.usuario = usuario
|
||||
prestamo.operadorEntrega = operador
|
||||
const m = moment()
|
||||
.add({ hours: 2, minutes: 30 })
|
||||
.format('MMMM Do YYYY, h:mm:ss a')
|
||||
|
||||
prestamo.horaMaxEntrega = m
|
||||
await equipoRepository.save(equipo)
|
||||
|
||||
await prestamoRepository.save(prestamo)
|
||||
|
||||
res.status(200).json({
|
||||
prestamo
|
||||
})
|
||||
}
|
||||
|
||||
static async regreso (req: Request, res: Response) {
|
||||
const equipoRepository = getRepository(Equipo)
|
||||
const prestamoRepository = getRepository(Prestamo)
|
||||
const operadorRepository = getRepository(Operador)
|
||||
|
||||
const prestamo = await prestamoRepository.findOne(req.body.prestamoId, {
|
||||
relations: ['equipo']
|
||||
})
|
||||
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
|
||||
|
||||
await equipoRepository.save(prestamo.equipo)
|
||||
await prestamoRepository.save(prestamo)
|
||||
res.status(200).json(prestamo)
|
||||
}
|
||||
}
|
||||
|
||||
+16
-6
@@ -1,22 +1,32 @@
|
||||
import { Entity, PrimaryColumn, Column, ManyToOne } from 'typeorm'
|
||||
import {
|
||||
Entity,
|
||||
Column,
|
||||
ManyToOne,
|
||||
UpdateDateColumn,
|
||||
CreateDateColumn,
|
||||
PrimaryGeneratedColumn
|
||||
} from 'typeorm'
|
||||
import { Usuario } from './Usuario'
|
||||
import { Operador } from './Operador'
|
||||
import { Equipo } from './Equipo'
|
||||
|
||||
@Entity()
|
||||
export class Log {
|
||||
@PrimaryColumn()
|
||||
@PrimaryGeneratedColumn()
|
||||
id: number
|
||||
|
||||
@Column({ type: 'date' })
|
||||
fecha: string
|
||||
|
||||
@Column()
|
||||
accion: string
|
||||
|
||||
@Column()
|
||||
@Column({ default: false })
|
||||
multa: string
|
||||
|
||||
@UpdateDateColumn()
|
||||
updateAt: Date
|
||||
|
||||
@CreateDateColumn()
|
||||
createAt: Date
|
||||
|
||||
@ManyToOne(
|
||||
(type) => Usuario,
|
||||
(usuario) => usuario.logs
|
||||
|
||||
@@ -10,6 +10,7 @@ import {
|
||||
import * as bcrypt from 'bcrypt'
|
||||
import { Log } from './Log'
|
||||
import { IsString, IsBoolean } from 'class-validator'
|
||||
import { Prestamo } from './Prestamo'
|
||||
|
||||
@Entity()
|
||||
@Unique(['usuario'])
|
||||
@@ -43,6 +44,18 @@ export class Operador {
|
||||
)
|
||||
logs: Log[]
|
||||
|
||||
@OneToMany(
|
||||
(type) => Prestamo,
|
||||
(prestamo) => prestamo.operadorEntrega
|
||||
)
|
||||
entregas: Prestamo[]
|
||||
|
||||
@OneToMany(
|
||||
(type) => Prestamo,
|
||||
(prestamo) => prestamo.operadorRegreso
|
||||
)
|
||||
regresos: Prestamo[]
|
||||
|
||||
hashPassword () {
|
||||
this.secreto = bcrypt.hashSync(this.secreto, 10)
|
||||
}
|
||||
|
||||
+28
-6
@@ -1,22 +1,32 @@
|
||||
import { Entity, PrimaryGeneratedColumn, Column, ManyToOne } from 'typeorm'
|
||||
import {
|
||||
Entity,
|
||||
PrimaryGeneratedColumn,
|
||||
Column,
|
||||
ManyToOne,
|
||||
UpdateDateColumn,
|
||||
CreateDateColumn
|
||||
} from 'typeorm'
|
||||
import { Usuario } from './Usuario'
|
||||
import { Reporte } from './Reporte'
|
||||
import { Equipo } from './Equipo'
|
||||
import { Mesa } from './Mesa'
|
||||
import { Operador } from './Operador'
|
||||
|
||||
@Entity()
|
||||
export class Prestamo {
|
||||
@PrimaryGeneratedColumn()
|
||||
id: number
|
||||
|
||||
@Column()
|
||||
@Column({ default: true })
|
||||
activo: boolean
|
||||
|
||||
@Column({ type: 'date' })
|
||||
fechaInicio: string
|
||||
@UpdateDateColumn()
|
||||
updatedAt: Date
|
||||
|
||||
@Column({ type: 'date' })
|
||||
fechaFin: string
|
||||
@CreateDateColumn()
|
||||
createdAt: Date
|
||||
|
||||
horaMaxEntrega: string
|
||||
|
||||
@ManyToOne(
|
||||
(type) => Usuario,
|
||||
@@ -41,4 +51,16 @@ export class Prestamo {
|
||||
(equipo) => equipo.prestamos
|
||||
)
|
||||
equipo: Equipo
|
||||
|
||||
@ManyToOne(
|
||||
(type) => Operador,
|
||||
(operador) => operador.entregas
|
||||
)
|
||||
operadorEntrega: Operador
|
||||
|
||||
@ManyToOne(
|
||||
(type) => Operador,
|
||||
(operador) => operador.regresos
|
||||
)
|
||||
operadorRegreso: Operador
|
||||
}
|
||||
|
||||
@@ -4,5 +4,6 @@ import { EquipoController } from '@src/controller/Equipo'
|
||||
const router = Router()
|
||||
|
||||
router.post('/prestamo', EquipoController.prestamo)
|
||||
router.post('/regreso', EquipoController.regreso)
|
||||
|
||||
export default router
|
||||
|
||||
Reference in New Issue
Block a user