equipo corregido
This commit is contained in:
@@ -1,12 +1,31 @@
|
||||
import { IsInt } from 'class-validator';
|
||||
import { Optional } from '@nestjs/common';
|
||||
import { IsInt, IsString } from 'class-validator';
|
||||
|
||||
export class EquipoUpdateDto {
|
||||
@IsInt()
|
||||
id_equipo: number;
|
||||
|
||||
@IsInt()
|
||||
id_carrito: number;
|
||||
@IsString()
|
||||
@Optional()
|
||||
equipo?: string;
|
||||
|
||||
@IsInt()
|
||||
id_status: number;
|
||||
@Optional()
|
||||
id_carrito?: number;
|
||||
|
||||
@IsInt()
|
||||
@Optional()
|
||||
id_status?: number;
|
||||
|
||||
@IsString()
|
||||
@Optional()
|
||||
marca?: string;
|
||||
|
||||
@IsString()
|
||||
@Optional()
|
||||
modelo?: string;
|
||||
|
||||
@IsString()
|
||||
@Optional()
|
||||
numero_serie?: string;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Body, Controller, Get, Put, Query } from '@nestjs/common';
|
||||
import { ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
|
||||
import { EquipoService } from './equipo.service';
|
||||
import { EquipoDto } from './dto/equipo.dto';
|
||||
import { ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
|
||||
import { EquipoEquiposDto } from './dto/equipo-equipos.dto';
|
||||
import { EquipoUpdateDto } from './dto/equipo-update.dto';
|
||||
|
||||
@@ -12,7 +12,8 @@ export class EquipoController {
|
||||
|
||||
@Get('equipo')
|
||||
@ApiOperation({
|
||||
description: 'Endpoint que retorna la información de un equipo.',
|
||||
description:
|
||||
'Endpoint que retorna la información de un equipo por su número de inventario de una institución.',
|
||||
})
|
||||
@ApiQuery({
|
||||
description: 'Id de la institución.',
|
||||
@@ -71,11 +72,11 @@ export class EquipoController {
|
||||
name: 'id_modulo',
|
||||
type: 'string',
|
||||
})
|
||||
// @ApiQuery({
|
||||
// description: 'Id del tipo de entrada que se quiere usar como filtro.',
|
||||
// name: 'id_tipo_entrada',
|
||||
// type: 'string',
|
||||
// })
|
||||
@ApiQuery({
|
||||
description: 'Id del tipo de entrada que se quiere usar como filtro.',
|
||||
name: 'id_tipo_entrada',
|
||||
type: 'string',
|
||||
})
|
||||
equipos(@Query() query: EquipoEquiposDto) {
|
||||
return this.equipoService.findAll(query);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import {
|
||||
ConflictException,
|
||||
forwardRef,
|
||||
Inject,
|
||||
Injectable,
|
||||
@@ -6,9 +7,9 @@ import {
|
||||
} from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
import { Carrito } from '../carrito/entity/carrito.entity';
|
||||
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';
|
||||
@@ -45,7 +46,7 @@ export class EquipoService {
|
||||
numero_inventario: string,
|
||||
numero_serie: string,
|
||||
) {
|
||||
const e = await this.repository.save(
|
||||
const equipoNuevo = await this.repository.save(
|
||||
this.repository.create({
|
||||
carrito,
|
||||
equipo,
|
||||
@@ -57,8 +58,23 @@ export class EquipoService {
|
||||
}),
|
||||
);
|
||||
|
||||
await this.equipoProgramaService.create(e, 1);
|
||||
return e;
|
||||
return this.equipoProgramaService
|
||||
.create(equipoNuevo, 1)
|
||||
.then((_) => equipoNuevo);
|
||||
}
|
||||
|
||||
async existeEquipo(id_carrito: number | Carrito, equipo: string) {
|
||||
const carrito =
|
||||
typeof id_carrito === 'number'
|
||||
? await this.carritoService.findById(id_carrito)
|
||||
: id_carrito;
|
||||
|
||||
return this.repository.findOne({ carrito, equipo }).then((existeEquipo) => {
|
||||
if (existeEquipo)
|
||||
throw new ConflictException(
|
||||
'Ya existe un equipo con este nombre, intenta con otro.',
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
async findAll(filtros: {
|
||||
@@ -98,6 +114,10 @@ export class EquipoService {
|
||||
.innerJoinAndSelect('e.status', 's')
|
||||
.innerJoinAndSelect('c.modulo', 'm')
|
||||
.innerJoinAndSelect('c.tipoCarrito', 'tc')
|
||||
.innerJoinAndSelect('e.tiposEntradas', 'tes')
|
||||
.innerJoinAndSelect('tes.tipoEntrada', 'te')
|
||||
.innerJoinAndSelect('e.programas', 'ps')
|
||||
.innerJoinAndSelect('ps.programa', 'p')
|
||||
.take(15)
|
||||
.skip((parseInt(filtros.pagina) - 1) * 15);
|
||||
|
||||
@@ -113,23 +133,19 @@ export class EquipoService {
|
||||
query.andWhere('m.id_modulo = :id_modulo', {
|
||||
id_modulo: modulo.id_modulo,
|
||||
});
|
||||
if (programa) {
|
||||
query.innerJoinAndSelect('e.programas', 'ps');
|
||||
query.innerJoinAndSelect('ps.programa', 'p');
|
||||
if (programa)
|
||||
query.andWhere('ps.id_programa = :id_programa', {
|
||||
id_programa: programa.id_programa,
|
||||
});
|
||||
}
|
||||
else query.andWhere('ps.id_programa = 1');
|
||||
if (tipoCarrito)
|
||||
query.andWhere('tc.id_tipo_carrito = :id_tipo_carrito', {
|
||||
id_tipo_carrito: tipoCarrito.id_tipo_carrito,
|
||||
});
|
||||
if (tipoEntrada) {
|
||||
query.innerJoinAndSelect('e.tiposEntradas', 'tes');
|
||||
if (tipoEntrada)
|
||||
query.andWhere('tes.id_tipo_entrada = :id_tipo_entrada', {
|
||||
id_tipo_entrada: tipoEntrada.id_tipo_entrada,
|
||||
});
|
||||
}
|
||||
if (status)
|
||||
query.andWhere('s.id_status = :id_status', {
|
||||
id_status: status.id_status,
|
||||
@@ -181,7 +197,7 @@ export class EquipoService {
|
||||
) {
|
||||
const query = this.repository
|
||||
.createQueryBuilder('e')
|
||||
.innerJoinAndSelect('e.carrito', 'c', 'activo = 1')
|
||||
.innerJoinAndSelect('e.carrito', 'c', 'c.activo = 1')
|
||||
.innerJoinAndSelect(
|
||||
'c.modulo',
|
||||
'm',
|
||||
@@ -196,12 +212,12 @@ export class EquipoService {
|
||||
'tc.id_tipo_carrito = :id_tipo_carrito',
|
||||
{ id_tipo_carrito: tipoCarrito.id_tipo_carrito },
|
||||
)
|
||||
.innerJoinAndSelect('e.status', 's')
|
||||
.innerJoinAndSelect('e.status', 's', 's.id_status = 1')
|
||||
.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');
|
||||
.where('e.prestado = 0');
|
||||
|
||||
if (programa)
|
||||
query.andWhere('ps.id_programa = :id_programa', {
|
||||
@@ -227,7 +243,7 @@ export class EquipoService {
|
||||
if (n === 0) {
|
||||
const query = this.repository
|
||||
.createQueryBuilder('e')
|
||||
.innerJoinAndSelect('e.carrito', 'c', 'activo = 1')
|
||||
.innerJoinAndSelect('e.carrito', 'c', 'c.activo = 1')
|
||||
.innerJoinAndSelect(
|
||||
'c.modulo',
|
||||
'm',
|
||||
@@ -242,8 +258,8 @@ export class EquipoService {
|
||||
'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');
|
||||
.innerJoinAndSelect('e.status', 's', 's.id_status = 1')
|
||||
.andWhere('prestado = 1');
|
||||
|
||||
return query.update().set({ prestado: false }).execute();
|
||||
}
|
||||
@@ -267,10 +283,23 @@ export class EquipoService {
|
||||
});
|
||||
}
|
||||
|
||||
update(attrs: Partial<Equipo>) {
|
||||
update(attrs: Partial<Equipo>, id_carrito?: number, id_status?: number) {
|
||||
return this.findById(attrs.id_equipo)
|
||||
.then((equipo) => {
|
||||
.then(async (equipo) => {
|
||||
const status = id_status
|
||||
? await this.statusService.findById(id_status)
|
||||
: null;
|
||||
const carrito = id_carrito
|
||||
? await this.carritoService.findById(id_carrito)
|
||||
: null;
|
||||
|
||||
if (attrs.equipo) {
|
||||
if (carrito) this.existeEquipo(carrito, attrs.equipo);
|
||||
else this.existeEquipo(equipo.carrito, attrs.equipo);
|
||||
}
|
||||
Object.assign(equipo, attrs);
|
||||
if (carrito) equipo.carrito = carrito;
|
||||
if (status) equipo.status = status;
|
||||
return this.repository.save(equipo);
|
||||
})
|
||||
.then((equipo) => ({
|
||||
|
||||
Reference in New Issue
Block a user