casi listo pedir
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
INSERT INTO nivel(nivel, clave) VALUES('PROFESOR', 'P');
|
||||
INSERT INTO nivel(nivel, clave) VALUES('INICIACION UNIVERSITARIA', 'I');
|
||||
INSERT INTO nivel(nivel, clave) VALUES('BACHILLERATO', 'B');
|
||||
INSERT INTO nivel(nivel, clave) VALUES('TECNICO', 'T');
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
INSERT INTO programa(programa) VALUES ("Sin programa");
|
||||
INSERT INTO programa(programa) VALUES ("Programación");
|
||||
INSERT INTO programa(programa) VALUES ("Adobe");
|
||||
INSERT INTO programa(programa) VALUES ("Autodesk");
|
||||
|
||||
@@ -174,6 +174,7 @@ INSERT INTO tipo_entrada(tipo_entrada) VALUES('Tipo c');
|
||||
INSERT INTO tipo_entrada(tipo_entrada) VALUES('VGA');
|
||||
INSERT INTO tipo_entrada(tipo_entrada) VALUES('Lightning');
|
||||
|
||||
INSERT INTO programa(programa) VALUES ("Sin programa");
|
||||
INSERT INTO programa(programa) VALUES ("Programación");
|
||||
INSERT INTO programa(programa) VALUES ("Adobe");
|
||||
INSERT INTO programa(programa) VALUES ("Autodesk");
|
||||
@@ -2034,3 +2035,4 @@ INSERT INTO institucion_dia(id_institucion, id_dia) VALUES(1000, 3);
|
||||
INSERT INTO institucion_dia(id_institucion, id_dia) VALUES(1000, 4);
|
||||
INSERT INTO institucion_dia(id_institucion, id_dia) VALUES(1000, 5);
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { forwardRef, Module } from '@nestjs/common';
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { EquipoProgramaController } from './equipo-programa.controller';
|
||||
import { EquipoProgramaService } from './equipo-programa.service';
|
||||
@@ -8,7 +8,7 @@ import { EquipoModule } from '../equipo/equipo.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
EquipoModule,
|
||||
forwardRef(() => EquipoModule),
|
||||
InstitucionProgramaModule,
|
||||
TypeOrmModule.forFeature([EquipoPrograma]),
|
||||
],
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
import { ConflictException, Injectable } from '@nestjs/common';
|
||||
import {
|
||||
ConflictException,
|
||||
forwardRef,
|
||||
Inject,
|
||||
Injectable,
|
||||
} from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
import { Equipo } from 'src/equipo/entity/equipo.entity';
|
||||
@@ -12,10 +17,24 @@ export class EquipoProgramaService {
|
||||
constructor(
|
||||
@InjectRepository(EquipoPrograma)
|
||||
private repository: Repository<EquipoPrograma>,
|
||||
@Inject(forwardRef(() => EquipoService))
|
||||
private equipoService: EquipoService,
|
||||
private institucionProgramaService: InstitucionProgramaService,
|
||||
) {}
|
||||
|
||||
buscarEliminarEquipoSinPrograma(equipo: Equipo) {
|
||||
return this.repository
|
||||
.findOne({ equipo, programa: { id_programa: 1 } })
|
||||
.then((existeEquipoPrograma) => {
|
||||
if (existeEquipoPrograma) return this.delete(existeEquipoPrograma);
|
||||
return existeEquipoPrograma;
|
||||
});
|
||||
}
|
||||
|
||||
countProgramasEquipo(equipo: Equipo) {
|
||||
return this.repository.count({ equipo });
|
||||
}
|
||||
|
||||
async create(id_equipo: number | Equipo, id_programa: number | Programa) {
|
||||
const equipo =
|
||||
typeof id_equipo === 'number'
|
||||
@@ -27,7 +46,7 @@ export class EquipoProgramaService {
|
||||
: id_programa;
|
||||
|
||||
return this.existeEquipoPrograma(equipo, programa)
|
||||
.then(() =>
|
||||
.then((_) =>
|
||||
this.repository.save(this.repository.create({ equipo, programa })),
|
||||
)
|
||||
.then((equipoPrograma) => ({
|
||||
@@ -36,10 +55,21 @@ export class EquipoProgramaService {
|
||||
}));
|
||||
}
|
||||
|
||||
delete(id_equipo_programa: number) {
|
||||
return this.findById(id_equipo_programa).then((equipoPrograma) =>
|
||||
this.repository.remove(equipoPrograma),
|
||||
);
|
||||
async delete(id_equipo_programa: number | EquipoPrograma) {
|
||||
const equipoPrograma =
|
||||
typeof id_equipo_programa === 'number'
|
||||
? await this.findById(id_equipo_programa)
|
||||
: id_equipo_programa;
|
||||
|
||||
if (typeof id_equipo_programa === 'number')
|
||||
await this.countProgramasEquipo(equipoPrograma.equipo).then((n) => {
|
||||
if (n === 1) {
|
||||
if (equipoPrograma.programa.id_programa === 1)
|
||||
throw new ConflictException('No se puede eliminar esta opción.');
|
||||
this.create(equipoPrograma.equipo, 1);
|
||||
}
|
||||
});
|
||||
return this.repository.remove(equipoPrograma);
|
||||
}
|
||||
|
||||
existeEquipoPrograma(
|
||||
@@ -60,7 +90,10 @@ export class EquipoProgramaService {
|
||||
|
||||
findById(id_equipo_programa: number) {
|
||||
return this.repository
|
||||
.findOne({ id_equipo_programa })
|
||||
.findOne({
|
||||
join: { alias: 'ep', innerJoinAndSelect: { e: 'ep.equipo' } },
|
||||
where: { id_equipo_programa },
|
||||
})
|
||||
.then((equipoPrograma) => {
|
||||
if (!equipoPrograma)
|
||||
throw new ConflictException('No existe este equipo programa.');
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { forwardRef, Module } from '@nestjs/common';
|
||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { EquipoController } from './equipo.controller';
|
||||
import { EquipoService } from './equipo.service';
|
||||
import { Equipo } from './entity/equipo.entity';
|
||||
import { CarritoModule } from '../carrito/carrito.module';
|
||||
import { InstitucionModule } from '../institucion/institucion.module';
|
||||
import { EquipoProgramaModule } from '../equipo-programa/equipo-programa.module';
|
||||
import { InstitucionProgramaModule } from '../institucion-programa/institucion-programa.module';
|
||||
import { InstitucionTipoCarritoModule } from '../institucion-tipo-carrito/institucion-tipo-carrito.module';
|
||||
import { InstitucionTipoEntradaModule } from '../institucion-tipo-entrada/institucion-tipo-entrada.module';
|
||||
@@ -14,6 +15,7 @@ import { StatusModule } from '../status/status.module';
|
||||
@Module({
|
||||
imports: [
|
||||
CarritoModule,
|
||||
forwardRef(() => EquipoProgramaModule),
|
||||
InstitucionModule,
|
||||
InstitucionProgramaModule,
|
||||
InstitucionTipoCarritoModule,
|
||||
|
||||
@@ -1,10 +1,20 @@
|
||||
import { Injectable, NotFoundException } from '@nestjs/common';
|
||||
import {
|
||||
forwardRef,
|
||||
Inject,
|
||||
Injectable,
|
||||
NotFoundException,
|
||||
} from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
import { Equipo } from './entity/equipo.entity';
|
||||
import { Institucion } from '../institucion/entity/institucion.entity';
|
||||
import { Carrito } from '../carrito/entity/carrito.entity';
|
||||
import { Modulo } from '../modulo/entity/modulo.entity';
|
||||
import { Programa } from '../institucion-programa/entity/programa.entity';
|
||||
import { TipoCarrito } from '../institucion-tipo-carrito/entity/tipo-carrito.entity';
|
||||
import { TipoEntrada } from '../institucion-tipo-entrada/entity/tipo-entrada.entity';
|
||||
import { CarritoService } from '../carrito/carrito.service';
|
||||
import { EquipoProgramaService } from '../equipo-programa/equipo-programa.service';
|
||||
import { InstitucionService } from '../institucion/institucion.service';
|
||||
import { InstitucionProgramaService } from '../institucion-programa/institucion-programa.service';
|
||||
import { InstitucionTipoCarritoService } from '../institucion-tipo-carrito/institucion-tipo-carrito.service';
|
||||
@@ -17,6 +27,8 @@ export class EquipoService {
|
||||
constructor(
|
||||
@InjectRepository(Equipo) private repository: Repository<Equipo>,
|
||||
private carritoService: CarritoService,
|
||||
@Inject(forwardRef(() => EquipoProgramaService))
|
||||
private equipoProgramaService: EquipoProgramaService,
|
||||
private institucionService: InstitucionService,
|
||||
private institucionProgramaService: InstitucionProgramaService,
|
||||
private institucionTipoCarritoService: InstitucionTipoCarritoService,
|
||||
@@ -33,7 +45,7 @@ export class EquipoService {
|
||||
numero_inventario: string,
|
||||
numero_serie: string,
|
||||
) {
|
||||
return this.repository.save(
|
||||
const e = await this.repository.save(
|
||||
this.repository.create({
|
||||
carrito,
|
||||
equipo,
|
||||
@@ -44,6 +56,9 @@ export class EquipoService {
|
||||
status: { id_status: 1 },
|
||||
}),
|
||||
);
|
||||
|
||||
await this.equipoProgramaService.create(e, 1);
|
||||
return e;
|
||||
}
|
||||
|
||||
async findAll(filtros: {
|
||||
@@ -158,7 +173,84 @@ export class EquipoService {
|
||||
});
|
||||
}
|
||||
|
||||
async findEquipo(
|
||||
findEquipo(
|
||||
modulo: Modulo,
|
||||
tipoCarrito: TipoCarrito,
|
||||
programa?: Programa,
|
||||
tipoEntrada?: TipoEntrada,
|
||||
) {
|
||||
const query = this.repository
|
||||
.createQueryBuilder('e')
|
||||
.innerJoinAndSelect('e.carrito', 'c', 'activo = 1')
|
||||
.innerJoinAndSelect(
|
||||
'c.modulo',
|
||||
'm',
|
||||
'm.id_modulo = :id_modulo AND m.activo = 1',
|
||||
{
|
||||
id_modulo: modulo.id_modulo,
|
||||
},
|
||||
)
|
||||
.innerJoinAndSelect(
|
||||
'c.tipoCarrito',
|
||||
'tc',
|
||||
'tc.id_tipo_carrito = :id_tipo_carrito',
|
||||
{ id_tipo_carrito: tipoCarrito.id_tipo_carrito },
|
||||
)
|
||||
.innerJoinAndSelect('e.status', 's')
|
||||
.innerJoinAndSelect('e.tiposEntradas', 'tes')
|
||||
.innerJoinAndSelect('tes.tipoEntrada', 'te')
|
||||
.innerJoinAndSelect('e.programas', 'ps')
|
||||
.innerJoinAndSelect('ps.programa', 'p')
|
||||
.where('e.id_status = 1 AND e.prestado = 0');
|
||||
|
||||
if (programa)
|
||||
query.andWhere('ps.id_programa = :id_programa', {
|
||||
id_programa: programa.id_programa,
|
||||
});
|
||||
else query.andWhere('ps.id_programa = 1');
|
||||
if (tipoEntrada)
|
||||
query.andWhere('tes.id_tipo_entrada = :id_tipo_entrada', {
|
||||
id_tipo_entrada: tipoEntrada.id_tipo_entrada,
|
||||
});
|
||||
return query;
|
||||
}
|
||||
|
||||
reseteo(
|
||||
modulo: Modulo,
|
||||
tipoCarrito: TipoCarrito,
|
||||
programa?: Programa,
|
||||
tipoEntrada?: TipoEntrada,
|
||||
) {
|
||||
return this.findEquipo(modulo, tipoCarrito, programa, tipoEntrada)
|
||||
.getCount()
|
||||
.then((n) => {
|
||||
if (n === 0) {
|
||||
const query = this.repository
|
||||
.createQueryBuilder('e')
|
||||
.innerJoinAndSelect('e.carrito', 'c', 'activo = 1')
|
||||
.innerJoinAndSelect(
|
||||
'c.modulo',
|
||||
'm',
|
||||
'm.id_modulo = :id_modulo AND m.activo = 1',
|
||||
{
|
||||
id_modulo: modulo.id_modulo,
|
||||
},
|
||||
)
|
||||
.innerJoinAndSelect(
|
||||
'c.tipoCarrito',
|
||||
'tc',
|
||||
'tc.id_tipo_carrito = :id_tipo_carrito',
|
||||
{ id_tipo_carrito: tipoCarrito.id_tipo_carrito },
|
||||
)
|
||||
.innerJoinAndSelect('e.status', 's')
|
||||
.andWhere('id_status = 1 AND prestado = 1');
|
||||
|
||||
return query.update().set({ prestado: false }).execute();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
async findEquipoByEquipo(
|
||||
id_carrito: number | Carrito,
|
||||
equipo: string,
|
||||
validarNoExiste = true,
|
||||
@@ -181,8 +273,9 @@ export class EquipoService {
|
||||
Object.assign(equipo, attrs);
|
||||
return this.repository.save(equipo);
|
||||
})
|
||||
.then((_) => ({
|
||||
.then((equipo) => ({
|
||||
message: 'Se actualizó correctamente la información del equipo.',
|
||||
equipo,
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
import { IsNumberString, IsOptional, IsString } from 'class-validator';
|
||||
|
||||
export class PrestamoActivosDto {
|
||||
activo: true;
|
||||
|
||||
@IsNumberString()
|
||||
pagina: string;
|
||||
|
||||
@IsNumberString()
|
||||
id_modulo: string;
|
||||
|
||||
@IsString()
|
||||
@IsOptional()
|
||||
carrito?: string;
|
||||
|
||||
@IsString()
|
||||
@IsOptional()
|
||||
equipo?: string;
|
||||
|
||||
@IsNumberString()
|
||||
@IsOptional()
|
||||
id_prestamo?: string;
|
||||
|
||||
@IsNumberString()
|
||||
@IsOptional()
|
||||
id_tipo_carrito?: string;
|
||||
|
||||
@IsNumberString()
|
||||
@IsOptional()
|
||||
id_tipo_usuario?: string;
|
||||
|
||||
@IsString()
|
||||
@IsOptional()
|
||||
usuario?: string;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
import { IsInt, IsNumberString, IsOptional, IsString } from 'class-validator';
|
||||
|
||||
export class PrestamoPedirDto {
|
||||
@IsInt()
|
||||
id_modulo: number;
|
||||
|
||||
@IsInt()
|
||||
id_tipo_carrito: number;
|
||||
|
||||
@IsInt()
|
||||
id_usuario: number;
|
||||
|
||||
@IsInt()
|
||||
@IsOptional()
|
||||
id_tipo_entrada?: number;
|
||||
|
||||
@IsInt()
|
||||
@IsOptional()
|
||||
id_programa?: number;
|
||||
}
|
||||
@@ -23,16 +23,16 @@ export class Prestamo {
|
||||
@Column({ type: Boolean, nullable: false, default: false })
|
||||
cancelado_usuario: boolean;
|
||||
|
||||
@Column({ type: Date, nullable: false })
|
||||
@Column({ type: Date, nullable: true, default: null })
|
||||
fecha_entrega: Date;
|
||||
|
||||
@Column({ type: Date, nullable: false })
|
||||
fecha_inicio: Date;
|
||||
|
||||
@Column({ type: Date, nullable: false })
|
||||
@Column({ type: Date, nullable: true, default: null })
|
||||
hora_fin: Date;
|
||||
|
||||
@Column({ type: Date, nullable: false })
|
||||
@Column({ type: Date, nullable: true, default: null })
|
||||
hora_inicio: Date;
|
||||
|
||||
@Column({ type: Date, nullable: false })
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { Controller, Get, Post, Put } from '@nestjs/common';
|
||||
import { Body, Controller, Get, Post, Put } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { PrestamoService } from './prestamo.service';
|
||||
import { PrestamoPedirDto } from './dto/prestamo-pedir.dto';
|
||||
|
||||
@Controller('prestamo')
|
||||
@ApiTags('prestamo')
|
||||
@@ -29,7 +30,15 @@ export class PrestamoController {
|
||||
historialUsuario() {}
|
||||
|
||||
@Post()
|
||||
pedir() {}
|
||||
pedir(@Body() body: PrestamoPedirDto) {
|
||||
return this.prestamoService.create(
|
||||
body.id_usuario,
|
||||
body.id_modulo,
|
||||
body.id_tipo_carrito,
|
||||
body.id_programa,
|
||||
body.id_tipo_entrada,
|
||||
);
|
||||
}
|
||||
|
||||
@Get('prestamo-id-prestamo')
|
||||
prestamoIdPrestamo() {}
|
||||
|
||||
@@ -7,8 +7,12 @@ import { CarritoModule } from '../carrito/carrito.module';
|
||||
import { EquipoModule } from '../equipo/equipo.module';
|
||||
import { InstitucionModule } from '../institucion/institucion.module';
|
||||
import { InstitucionCarreraModule } from '../institucion-carrera/institucion-carrera.module';
|
||||
import { InstitucionProgramaModule } from '../institucion-programa/institucion-programa.module';
|
||||
import { InstitucionTipoCarritoModule } from '../institucion-tipo-carrito/institucion-tipo-carrito.module';
|
||||
import { InstitucionTipoEntradaModule } from '../institucion-tipo-entrada/institucion-tipo-entrada.module';
|
||||
import { OperadorModule } from '../operador/operador.module';
|
||||
import { ModuloModule } from '../modulo/modulo.module';
|
||||
import { StatusModule } from '../status/status.module';
|
||||
import { TipoUsuarioModule } from '../tipo-usuario/tipo-usuario.module';
|
||||
import { UsuarioModule } from '../usuario/usuario.module';
|
||||
@Module({
|
||||
@@ -17,8 +21,12 @@ import { UsuarioModule } from '../usuario/usuario.module';
|
||||
EquipoModule,
|
||||
InstitucionModule,
|
||||
InstitucionCarreraModule,
|
||||
InstitucionProgramaModule,
|
||||
InstitucionTipoCarritoModule,
|
||||
InstitucionTipoEntradaModule,
|
||||
ModuloModule,
|
||||
OperadorModule,
|
||||
StatusModule,
|
||||
TypeOrmModule.forFeature([Prestamo]),
|
||||
TipoUsuarioModule,
|
||||
UsuarioModule,
|
||||
|
||||
@@ -1,8 +1,14 @@
|
||||
import { Injectable, NotFoundException } from '@nestjs/common';
|
||||
import * as moment from 'moment';
|
||||
import {
|
||||
ConflictException,
|
||||
Injectable,
|
||||
NotFoundException,
|
||||
} from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { FindOperator, Like, Repository } from 'typeorm';
|
||||
import { Carrera } from '../institucion-carrera/entity/carrera.entity';
|
||||
import { Modulo } from '../modulo/entity/modulo.entity';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { Prestamo } from './entity/prestamo.entity';
|
||||
import { TipoCarrito } from '../institucion-tipo-carrito/entity/tipo-carrito.entity';
|
||||
import { TipoUsuario } from '../tipo-usuario/entity/tipo-usuario.entity';
|
||||
@@ -11,7 +17,11 @@ import { EquipoService } from '../equipo/equipo.service';
|
||||
import { InstitucionService } from '../institucion/institucion.service';
|
||||
import { ModuloService } from '../modulo/modulo.service';
|
||||
import { InstitucionCarreraService } from '../institucion-carrera/institucion-carrera.service';
|
||||
import { InstitucionProgramaService } from '../institucion-programa/institucion-programa.service';
|
||||
import { InstitucionTipoCarritoService } from '../institucion-tipo-carrito/institucion-tipo-carrito.service';
|
||||
import { InstitucionTipoEntradaService } from '../institucion-tipo-entrada/institucion-tipo-entrada.service';
|
||||
import { OperadorService } from '../operador/operador.service';
|
||||
import { StatusService } from '../status/status.service';
|
||||
import { TipoUsuarioService } from '../tipo-usuario/tipo-usuario.service';
|
||||
import { UsuarioService } from '../usuario/usuario.service';
|
||||
|
||||
@@ -22,26 +32,104 @@ export class PrestamoService {
|
||||
private carritoService: CarritoService,
|
||||
private equipoService: EquipoService,
|
||||
private institucionService: InstitucionService,
|
||||
private institucionTipoCarritoService: InstitucionTipoCarritoService,
|
||||
private moduloService: ModuloService,
|
||||
private institucionCarreraService: InstitucionCarreraService,
|
||||
private institucionProgramaService: InstitucionProgramaService,
|
||||
private institucionTipoCarritoService: InstitucionTipoCarritoService,
|
||||
private institucionTipoEntradaService: InstitucionTipoEntradaService,
|
||||
private moduloService: ModuloService,
|
||||
private operadorService: OperadorService,
|
||||
private statusService: StatusService,
|
||||
private tipoUsuarioService: TipoUsuarioService,
|
||||
private usuarioService: UsuarioService,
|
||||
) {}
|
||||
|
||||
async create(
|
||||
id_usuario: number,
|
||||
id_modulo: number,
|
||||
id_tipo_carrito: number,
|
||||
id_programa?: number,
|
||||
id_tipo_entrada?: number,
|
||||
) {
|
||||
const ahora = moment();
|
||||
const usuario = await this.usuarioService.findById(id_usuario, true, true);
|
||||
const modulo = await this.moduloService.findById(id_modulo);
|
||||
const tipoCarrito =
|
||||
await this.institucionTipoCarritoService.findTipoCarritoById(
|
||||
id_tipo_carrito,
|
||||
);
|
||||
const programa = id_programa
|
||||
? await this.institucionProgramaService.findProgramaById(id_programa)
|
||||
: null;
|
||||
const tipoEntrada = id_tipo_entrada
|
||||
? await this.institucionTipoEntradaService.findTipoEntradaById(
|
||||
id_tipo_entrada,
|
||||
)
|
||||
: null;
|
||||
|
||||
console.log(modulo);
|
||||
|
||||
return this.repository
|
||||
.findOne({ activo: true, usuario })
|
||||
.then((prestamo) => {
|
||||
if (prestamo)
|
||||
throw new ConflictException(
|
||||
'Este usuario ya tiene un prestamo activo.',
|
||||
);
|
||||
return this.equipoService.reseteo(
|
||||
modulo,
|
||||
tipoCarrito,
|
||||
programa,
|
||||
tipoEntrada,
|
||||
);
|
||||
})
|
||||
.then((_) =>
|
||||
this.equipoService
|
||||
.findEquipo(modulo, tipoCarrito, programa, tipoEntrada)
|
||||
.getOne(),
|
||||
)
|
||||
.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.',
|
||||
);
|
||||
equipo.status = await this.statusService.findById(2);
|
||||
return this.equipoService.update(equipo);
|
||||
})
|
||||
.then(({ equipo }) =>
|
||||
this.repository.save(
|
||||
this.repository.create({
|
||||
equipo,
|
||||
usuario,
|
||||
fecha_inicio: ahora.format(),
|
||||
hora_max_recoger: ahora
|
||||
.add(modulo.institucion.tiempo_recoger, 'm')
|
||||
.format(),
|
||||
}),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
async findAll(filtros: {
|
||||
id_modulo: string;
|
||||
pagina: string;
|
||||
activo?: string | boolean;
|
||||
carrito?: string;
|
||||
equipo?: string;
|
||||
fechaFin?: string;
|
||||
fechaInicio?: string;
|
||||
id_carrera?: string;
|
||||
id_institucion?: string;
|
||||
id_modulo?: string;
|
||||
id_operador_entrega?: string;
|
||||
id_operador_regreso?: string;
|
||||
id_tipo_carrito?: string;
|
||||
id_tipo_usuario?: string;
|
||||
id_prestamo?: string;
|
||||
usuario?: string;
|
||||
}) {
|
||||
const busqueda: {
|
||||
activo?: boolean;
|
||||
fechaInicio?: Date;
|
||||
fechaFin?: Date;
|
||||
id_prestamo?: number;
|
||||
equipo: {
|
||||
equipo?: FindOperator<string>;
|
||||
carrito: {
|
||||
@@ -55,15 +143,14 @@ export class PrestamoService {
|
||||
tipoUsuario?: TipoUsuario;
|
||||
institucionCarrera: { carrera?: Carrera };
|
||||
};
|
||||
operadorEntrega?: Operador;
|
||||
operadorRegreso?: Operador;
|
||||
} = { equipo: { carrito: {} }, usuario: { institucionCarrera: {} } };
|
||||
const carrera = filtros.id_carrera
|
||||
? await this.institucionCarreraService.findCarreraByIdCarrera(
|
||||
parseInt(filtros.id_carrera),
|
||||
)
|
||||
: null;
|
||||
const institucion = filtros.id_institucion
|
||||
? await this.institucionService.findById(parseInt(filtros.id_institucion))
|
||||
: null;
|
||||
const modulo = filtros.id_modulo
|
||||
? await this.moduloService.findById(parseInt(filtros.id_modulo))
|
||||
: null;
|
||||
@@ -77,15 +164,31 @@ export class PrestamoService {
|
||||
parseInt(filtros.id_tipo_usuario),
|
||||
)
|
||||
: null;
|
||||
const operadorEntrega = filtros.id_operador_entrega
|
||||
? await this.operadorService.findById(
|
||||
parseInt(filtros.id_operador_entrega),
|
||||
)
|
||||
: null;
|
||||
const operadorRegreso = filtros.id_operador_regreso
|
||||
? await this.operadorService.findById(
|
||||
parseInt(filtros.id_operador_regreso),
|
||||
)
|
||||
: null;
|
||||
|
||||
if (filtros.usuario)
|
||||
busqueda.usuario.usuario = Like(`%${filtros.usuario}%`);
|
||||
if (filtros.equipo) busqueda.equipo.equipo = Like(`%${filtros.equipo}%`);
|
||||
if (filtros.activo) {
|
||||
if (typeof filtros.activo === 'boolean') busqueda.activo = filtros.activo;
|
||||
else busqueda.activo = filtros.activo === 'true';
|
||||
}
|
||||
if (filtros.carrito)
|
||||
busqueda.equipo.carrito.carrito = Like(`%${filtros.carrito}%`);
|
||||
if (filtros.equipo) busqueda.equipo.equipo = Like(`%${filtros.equipo}%`);
|
||||
if (filtros.equipo) busqueda.id_prestamo = parseInt(filtros.id_prestamo);
|
||||
if (filtros.usuario)
|
||||
busqueda.usuario.usuario = Like(`%${filtros.usuario}%`);
|
||||
if (carrera) busqueda.usuario.institucionCarrera.carrera = carrera;
|
||||
if (modulo) busqueda.equipo.carrito.modulo = modulo;
|
||||
if (institucion) busqueda.equipo.carrito.modulo.institucion = institucion;
|
||||
if (operadorEntrega) busqueda.operadorEntrega = operadorEntrega;
|
||||
if (operadorRegreso) busqueda.operadorRegreso = operadorRegreso;
|
||||
if (tipoCarrito) busqueda.equipo.carrito.tipoCarrito = tipoCarrito;
|
||||
if (tipoUsuario) busqueda.usuario.tipoUsuario = tipoUsuario;
|
||||
return this.repository.findAndCount({
|
||||
|
||||
@@ -102,7 +102,7 @@ export class UploadFileService {
|
||||
)
|
||||
: null;
|
||||
let equipo = carrito
|
||||
? await this.equipoService.findEquipo(
|
||||
? await this.equipoService.findEquipoByEquipo(
|
||||
carrito,
|
||||
equipos[i].equipo,
|
||||
false,
|
||||
@@ -222,7 +222,10 @@ export class UploadFileService {
|
||||
continue;
|
||||
}
|
||||
await this.equipoProgramaService
|
||||
.create(equipo, programa)
|
||||
.buscarEliminarEquipoSinPrograma(equipo)
|
||||
.then((_) =>
|
||||
this.equipoProgramaService.create(equipo, programa),
|
||||
)
|
||||
.then((res) => {
|
||||
equipo.programas.push(res.equipoPrograma);
|
||||
mensajes.push(res.message);
|
||||
|
||||
Reference in New Issue
Block a user