hoy endpoint
This commit is contained in:
@@ -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,
|
||||
});
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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>) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user