diff --git a/sql/02-nivel.sql b/sql/02-nivel.sql index 54a626a..63bdf83 100644 --- a/sql/02-nivel.sql +++ b/sql/02-nivel.sql @@ -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'); diff --git a/sql/08-programas.sql b/sql/08-programas.sql index 144c89a..f0c1086 100644 --- a/sql/08-programas.sql +++ b/sql/08-programas.sql @@ -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"); diff --git a/sql/18-todo.sql b/sql/18-todo.sql index bffce55..1319340 100644 --- a/sql/18-todo.sql +++ b/sql/18-todo.sql @@ -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); + diff --git a/src/equipo-programa/equipo-programa.module.ts b/src/equipo-programa/equipo-programa.module.ts index 58aaf42..0342dde 100644 --- a/src/equipo-programa/equipo-programa.module.ts +++ b/src/equipo-programa/equipo-programa.module.ts @@ -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]), ], diff --git a/src/equipo-programa/equipo-programa.service.ts b/src/equipo-programa/equipo-programa.service.ts index c4c944c..582b209 100644 --- a/src/equipo-programa/equipo-programa.service.ts +++ b/src/equipo-programa/equipo-programa.service.ts @@ -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, + @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.'); diff --git a/src/equipo/equipo.module.ts b/src/equipo/equipo.module.ts index 53a97c8..6fbdcac 100644 --- a/src/equipo/equipo.module.ts +++ b/src/equipo/equipo.module.ts @@ -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, diff --git a/src/equipo/equipo.service.ts b/src/equipo/equipo.service.ts index ba6cbba..c9e76f8 100644 --- a/src/equipo/equipo.service.ts +++ b/src/equipo/equipo.service.ts @@ -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, 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, })); } } diff --git a/src/prestamo/dto/prestamo-activos.dto copy.ts b/src/prestamo/dto/prestamo-activos.dto copy.ts new file mode 100644 index 0000000..6d166ad --- /dev/null +++ b/src/prestamo/dto/prestamo-activos.dto copy.ts @@ -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; +} diff --git a/src/prestamo/dto/prestamo-pedir.dto.ts b/src/prestamo/dto/prestamo-pedir.dto.ts new file mode 100644 index 0000000..84caf06 --- /dev/null +++ b/src/prestamo/dto/prestamo-pedir.dto.ts @@ -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; +} diff --git a/src/prestamo/entity/prestamo.entity.ts b/src/prestamo/entity/prestamo.entity.ts index 5595efd..f7f4343 100644 --- a/src/prestamo/entity/prestamo.entity.ts +++ b/src/prestamo/entity/prestamo.entity.ts @@ -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 }) diff --git a/src/prestamo/prestamo.controller.ts b/src/prestamo/prestamo.controller.ts index 56e36f8..4800a82 100644 --- a/src/prestamo/prestamo.controller.ts +++ b/src/prestamo/prestamo.controller.ts @@ -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() {} diff --git a/src/prestamo/prestamo.module.ts b/src/prestamo/prestamo.module.ts index ae1e354..0de4dae 100644 --- a/src/prestamo/prestamo.module.ts +++ b/src/prestamo/prestamo.module.ts @@ -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, diff --git a/src/prestamo/prestamo.service.ts b/src/prestamo/prestamo.service.ts index af240ac..fc3dd8c 100644 --- a/src/prestamo/prestamo.service.ts +++ b/src/prestamo/prestamo.service.ts @@ -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; 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({ diff --git a/src/upload-file/upload-file.service.ts b/src/upload-file/upload-file.service.ts index 12350eb..ba137a4 100644 --- a/src/upload-file/upload-file.service.ts +++ b/src/upload-file/upload-file.service.ts @@ -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);