hoy endpoint

This commit is contained in:
xXpuma99Xx
2022-06-24 18:10:26 -05:00
parent 6a1c6786b5
commit dc89e76dae
12 changed files with 126 additions and 42 deletions
+5
View File
@@ -121,6 +121,11 @@ export class CarritoService {
innerJoinAndSelect: { m: 'c.modulo', i: 'm.institucion' },
},
where: busqueda,
order: {
modulo: 'ASC',
tipoCarrito: 'ASC',
carrito: 'ASC',
},
skip: (parseInt(filtros.pagina) - 1) * 25,
take: 25,
});
+7 -1
View File
@@ -92,8 +92,14 @@ export class EquipoController {
@Put()
// @UseGuards(AuthGuard('jwt'))
update(@Body() body: UpdateEquipoDto) {
const data = { ...body };
delete data.id_carrito;
delete data.id_status;
delete data.id_operador;
delete data.motivo;
return this.equipoService.update(
body,
data,
body.id_carrito,
body.id_status,
body.id_operador,
+10 -3
View File
@@ -126,6 +126,11 @@ export class EquipoService {
.innerJoinAndSelect('e.programas', 'ps')
.innerJoinAndSelect('ps.programa', 'p')
.innerJoinAndSelect('m.institucion', 'i')
.orderBy('i.institucion')
.addOrderBy('m.modulo')
.addOrderBy('tc.id_tipo_carrito')
.addOrderBy('c.carrito')
.addOrderBy('e.equipo')
.take(15)
.skip((parseInt(filtros.pagina) - 1) * 15);
@@ -225,7 +230,9 @@ export class EquipoService {
.innerJoinAndSelect('tes.tipoEntrada', 'te')
.innerJoinAndSelect('e.programas', 'ps')
.innerJoinAndSelect('ps.programa', 'p')
.where('e.prestado = 0 AND e.id_status = 1');
.where('e.prestado = 0 AND e.id_status = 1')
.orderBy('c.carrito')
.addOrderBy('e.equipo');
if (programa)
query.andWhere('ps.id_programa = :id_programa', {
@@ -320,10 +327,10 @@ export class EquipoService {
: id_operador
: null;
if (attrs.equipo && attrs.equipo != equipo.equipo)
if ((attrs.equipo && attrs.equipo != equipo.equipo) || carrito)
await this.existeEquipo(
carrito ? carrito : equipo.carrito,
attrs.equipo,
attrs.equipo ? attrs.equipo : equipo.equipo,
);
if (
status &&
@@ -20,8 +20,11 @@ export class InstitucionCarreraService {
.findById(id_institucion)
.then((institucion) =>
this.institucionCarreraRepository.find({
carrera: { id_carrera: Not(1) },
institucion,
where: {
carrera: { id_carrera: Not(1) },
institucion,
},
order: { carrera: 'ASC' },
}),
);
}
@@ -1,6 +1,6 @@
import { Expose, Type } from 'class-transformer';
import { DiaOutputDto } from './dia.dto';
import { InstitucionMinOutputDto } from '../../../institucion/dto/output/institucion-min.dto';
import { HoraExcepcionOutputDto } from '../../../hora-excepcion/dto/output/hora-excepcion.dto';
export class InstitucionCarreaOutputDto {
@Expose()
@@ -18,4 +18,8 @@ export class InstitucionCarreaOutputDto {
@Expose()
@Type(() => DiaOutputDto)
dia;
@Expose()
@Type(() => HoraExcepcionOutputDto)
horasExcepcion;
}
@@ -35,6 +35,7 @@ export class InstitucionDia {
@OneToMany(
() => HoraExcepcion,
(horaExcepcion) => horaExcepcion.institucionDia,
{ eager: true },
)
horasExcepcion: HoraExcepcion[];
}
@@ -29,6 +29,22 @@ export class InstitucionDiaController {
);
}
@Serealize(InstitucionCarreaOutputDto)
@Get('hoy')
// @UseGuards(AuthGuard('jwt'))
@ApiOperation({
description:
'Endpoint que retorna la información del día de hoy de una institución.',
})
@ApiQuery({
description: 'Id de la institución.',
name: 'id_institucion',
type: 'string',
})
hoy(@Query() query: IdInstitucionDto) {
return this.institucionDiaService.hoy(parseInt(query.id_institucion));
}
@Put()
// @UseGuards(AuthGuard('jwt'))
@ApiOperation({
+23 -2
View File
@@ -1,4 +1,9 @@
import { Injectable, NotFoundException } from '@nestjs/common';
import * as moment from 'moment';
import {
ConflictException,
Injectable,
NotFoundException,
} from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Institucion } from '../institucion/entity/institucion.entity';
@@ -15,7 +20,9 @@ export class InstitucionDiaService {
findAllByIdInstitucion(id_institucion: number) {
return this.institucionService
.findById(id_institucion)
.then((institucion) => this.repository.find({ institucion }));
.then((institucion) =>
this.repository.find({ where: { institucion }, order: { dia: 'ASC' } }),
);
}
findById(id_institucion_dia: number) {
@@ -32,6 +39,20 @@ export class InstitucionDiaService {
return this.repository.findOne({ institucion, dia: { id_dia } });
}
async hoy(id_institucion: number) {
const ahora = moment();
if (ahora.weekday() === 0 || ahora.weekday() === 6)
throw new ConflictException(
'No se puede pedir equipo de cómputo los sabados y domingos.',
);
return this.institucionService
.findById(id_institucion)
.then((institucion) =>
this.findInstitucionDia(institucion, ahora.weekday()),
);
}
update(attrs: Partial<InstitucionDia>) {
return this.findById(attrs.id_institucion_dia)
.then((institucionDia) => {
@@ -44,14 +44,22 @@ export class InstitucionInfraccionService {
}
findAll() {
return this.infraccionRepository.find();
return this.infraccionRepository.find({ order: { infraccion: 'ASC' } });
}
findAllByIdInstitucion(id_institucion: number) {
return this.institucionService
.findById(id_institucion)
.then((institucion) =>
this.institucionInfraccionRepository.find({ institucion }),
this.institucionInfraccionRepository
.createQueryBuilder('ii')
.innerJoinAndSelect('ii.institucion', 'in')
.innerJoinAndSelect('ii.infraccion', 'i')
.where('in.id_institucion = :id_institucion', {
id_institucion: institucion.id_institucion,
})
.orderBy('i.infraccion')
.getMany(),
);
}
@@ -45,7 +45,10 @@ export class InstitucionProgramaService {
}
findAllProgramas() {
return this.programaRepository.find();
return this.programaRepository.find({
where: { id_programa: Not(1) },
order: { programa: 'ASC' },
});
}
findById(id_institucion_programa: number) {
@@ -75,17 +78,19 @@ export class InstitucionProgramaService {
async findAllByIdInstitucion(id_institucion: number, mostrar = false) {
const institucion = await this.institucionService.findById(id_institucion);
const busqueda: {
institucion: Institucion;
programa: { id_programa: FindOperator<number> };
mostrar?: boolean;
} = {
institucion,
programa: { id_programa: Not(1) },
};
const query = this.institucionProgramaRepository
.createQueryBuilder('ip')
.innerJoinAndSelect('ip.programa', 'p', 'p.id_programa != 1')
.innerJoinAndSelect(
'ip.institucion',
'i',
'i.id_institucion = :id_institucion',
{ id_institucion: institucion.id_institucion },
)
.orderBy('p.programa');
if (mostrar) busqueda.mostrar = mostrar;
return this.institucionProgramaRepository.find(busqueda);
if (mostrar) query.andWhere('ip.mostrar = 1');
return query.getMany();
}
update(attrs: Partial<InstitucionPrograma>) {
+4 -1
View File
@@ -13,7 +13,10 @@ export class InstitucionService {
const busqueda: { activo?: boolean } = {};
if (activo) busqueda.activo = activo;
return this.repository.find(busqueda);
return this.repository.find({
where: busqueda,
order: { institucion: 'ASC' },
});
}
findById(id_institucion: number) {
+24 -19
View File
@@ -171,7 +171,7 @@ export class PrestamoService {
.then(async (equipo) => {
if (!equipo)
throw new ConflictException(
'No hay un equipo de cómputo que cumpla con las caracteríasticas solicitasdas o ya no hay equipos disponibles en este momento. Intenta más tarde o cambia las caracteríasticas.',
'No hay un equipo de cómputo que cumpla con las caracteríasticas solicitadas o ya no hay equipos disponibles en este momento. Intenta más tarde o cambia las características.',
);
return this.equipoService.update(equipo, null, 2);
})
@@ -179,11 +179,11 @@ export class PrestamoService {
this.repository.save(
this.repository.create({
equipo,
usuario,
fecha_inicio: ahora.toDate(),
hora_max_recoger: ahora
.add(modulo.institucion.tiempo_recoger, 'm')
.toDate(),
usuario,
}),
),
)
@@ -197,7 +197,7 @@ export class PrestamoService {
async desactivarPrestamos() {
const ahora = moment();
const operadorRegreso = await this.operadorService.findById(1);
const sistema = await this.operadorService.findById(1);
return this.repository
.find({
@@ -209,16 +209,19 @@ export class PrestamoService {
if (ahora.diff(moment(prestamos[i].hora_max_recoger)) > 0) {
prestamos[i].activo = false;
prestamos[i].cancelado_operador = true;
prestamos[i].operadorRegreso = operadorRegreso;
await this.equipoService
.update(prestamos[i].equipo, null, 1)
.then((_) => this.repository.save(prestamos[i]))
.then((prestamo) => {
prestamos[i].operadorRegreso = sistema;
await this.repository
.save(prestamos[i])
.then((_) =>
this.equipoService.update(prestamos[i].equipo, null, 1),
)
.then((_) => {
this.appGateway.actualizarOperador(
prestamo.usuario.institucionCarrera.institucion
.id_institucion,
prestamos[i].equipo.carrito.modulo.institucion.id_institucion,
);
this.appGateway.actualizarUsuario(
prestamos[i].usuario.id_usuario,
);
this.appGateway.actualizarUsuario(prestamo.usuario.id_usuario);
});
}
});
@@ -240,9 +243,9 @@ export class PrestamoService {
.toDate();
prestamo.operadorEntrega = operadorEntrega;
prestamo.equipo.prestado = true;
return this.equipoService
.update(prestamo.equipo, null, 3)
.then((_) => this.repository.save(prestamo))
return this.repository
.save(prestamo)
.then((_) => this.equipoService.update(prestamo.equipo, null, 3))
.then((_) => {
this.appGateway.actualizarUsuario(prestamo.usuario.id_usuario);
return {
@@ -435,11 +438,13 @@ export class PrestamoService {
prestamo.fecha_entrega = ahora.toDate();
prestamo.operadorRegreso = operadorRegreso;
if (semanasCastigo > 0) {
const mensajeTardanza = `El usaurio se tardó: ${tardanza} minutos en entregar el equipo de cómputo.`;
if (id_institucion_infraccion)
await this.multaService.create(
prestamo,
operadorRegreso,
`El usaurio se tardó: ${tardanza} minutos en entregar el equipo de cómputo. ${descripcion}`,
`${mensajeTardanza} ${descripcion}`,
semanasCastigo,
id_institucion_infraccion,
);
@@ -447,7 +452,7 @@ export class PrestamoService {
await this.multaService.create(
prestamo,
operadorRegreso,
`El usaurio se tardó: ${tardanza} minutos en entregar el equipo de cómputo.`,
mensajeTardanza,
semanasCastigo,
);
} else if (id_institucion_infraccion)
@@ -458,9 +463,9 @@ export class PrestamoService {
null,
id_institucion_infraccion,
);
return this.equipoService
.update(prestamo.equipo, null, 1)
.then((_) => this.repository.save(prestamo))
return this.repository
.save(prestamo)
.then((_) => this.equipoService.update(prestamo.equipo, null, 1))
.then((_) => {
this.appGateway.actualizarUsuario(prestamo.usuario.id_usuario);
return {