prestamo y dvolcuion normal

This commit is contained in:
arturo
2020-08-22 21:54:46 -05:00
parent d037989c5b
commit 9c780cb1cb
12 changed files with 1206 additions and 17 deletions
+82 -5
View File
@@ -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
View File
@@ -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
+13
View File
@@ -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
View File
@@ -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
}
+1
View File
@@ -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