endpont pedir faltan pruebas
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
const moment = require('moment');
|
||||
const validar = require('../../helper/validar');
|
||||
const Prestamo = require('../../db/tablas/Prestamo');
|
||||
const Usuario = require('../../db/tablas/Carrera');
|
||||
const TipoUsuario = require('../../db/tablas/TipoUsuario');
|
||||
const TipoCarrito = require('../../db/tablas/TipoCarrito');
|
||||
const Carrito = require('../../db/tablas/Carrito');
|
||||
const Equipo = require('../../db/tablas/Equipo');
|
||||
const Status = require('../../db/tablas/Status');
|
||||
const Programa = require('../../db/tablas/Programa');
|
||||
const Modulo = require('../../db/tablas/Modulo');
|
||||
|
||||
const pedir = async (body) => {
|
||||
const ahora = moment();
|
||||
const idUsuario = validar.validarId(body.idUsuario);
|
||||
const idTipoCarrito = validar.validarId(body.idTipoCarrito);
|
||||
const idPrograma = body.idPrograma
|
||||
? validar.validarId(body.idPrograma)
|
||||
: null;
|
||||
const idModulo = idPrograma ? 1 : validar.validarId(body.idModulo);
|
||||
let equipo = {};
|
||||
|
||||
return Usuario.findOne({ where: { idUsuario } })
|
||||
.then((res) => {
|
||||
if (!res) throw new Error('Ese usuario no existe.');
|
||||
if (res.multa)
|
||||
throw new Error(
|
||||
'Este usuario tiene una multa activa, no puede solicitar un equipo de computo.'
|
||||
);
|
||||
return Prestamo.findOne({
|
||||
where: { idUsuario },
|
||||
include: [{ model: Equipo, where: { activo: true } }],
|
||||
});
|
||||
})
|
||||
.then((res) => {
|
||||
if (res)
|
||||
throw new Error(
|
||||
'Este usuario ya cuenta con un prestamo activo. No sepuede solicitar otro equipo de computo.'
|
||||
);
|
||||
return Equipo.findOne({
|
||||
where: { activo: false },
|
||||
include: [
|
||||
{
|
||||
model: Carrito,
|
||||
include: [
|
||||
{ model: TipoCarrito, where: { idTipoCarrito } },
|
||||
{ model: Modulo, where: { idModulo } },
|
||||
],
|
||||
},
|
||||
{ model: Status, where: { idStatus: 1 } },
|
||||
{
|
||||
model: Programa,
|
||||
where: { idPrograma: idPrograma ? idPrograma : null },
|
||||
},
|
||||
],
|
||||
});
|
||||
})
|
||||
.then((res) => {
|
||||
if (!res)
|
||||
throw new Error(
|
||||
'No hay un equipo de computo con las características solicitadas disponible. Intenta más tarde o con otras características.'
|
||||
);
|
||||
equipo = res;
|
||||
equipo.activo = true;
|
||||
return Equipo.update(
|
||||
{ activo: true },
|
||||
{ where: { idEquipo: equipo.idEquipo } }
|
||||
);
|
||||
})
|
||||
.then((res) =>
|
||||
Prestamo.create({
|
||||
horaInicio: ahora.add(10, 'm'),
|
||||
horaFin: ahora.add(130, 'm'),
|
||||
idUsuario,
|
||||
idEquipo: equipo.idEquipo,
|
||||
})
|
||||
)
|
||||
.then((res) => ({ equipo }));
|
||||
};
|
||||
|
||||
module.exports = pedir;
|
||||
|
||||
@@ -47,7 +47,8 @@ Prestamo.belongsTo(Operador, {
|
||||
foreignKey: {
|
||||
name: 'idOperadorEntrega',
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
allowNull: true,
|
||||
defaultValue: null,
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user