modulo equipo final
This commit is contained in:
@@ -39,7 +39,7 @@ export class CarritoService {
|
||||
.count({ modulo, tipoCarrito })
|
||||
.then((carritos) => {
|
||||
carrito = `C${carritos >= 9 ? '' : '0'}${carritos + 1}`;
|
||||
return this.existeCarrito(modulo, carrito);
|
||||
return this.existeCarrito(modulo, tipoCarrito, carrito);
|
||||
})
|
||||
.then(() =>
|
||||
this.repository.save(
|
||||
@@ -57,14 +57,24 @@ export class CarritoService {
|
||||
}));
|
||||
}
|
||||
|
||||
async existeCarrito(id_modulo: number | Modulo, carrito: string) {
|
||||
async existeCarrito(
|
||||
id_modulo: number | Modulo,
|
||||
id_tipo_carrito: number | TipoCarrito,
|
||||
carrito: string,
|
||||
) {
|
||||
const modulo =
|
||||
typeof id_modulo === 'number'
|
||||
? await this.moduloService.findById(id_modulo)
|
||||
: id_modulo;
|
||||
const tipoCarrito =
|
||||
typeof id_tipo_carrito === 'number'
|
||||
? await this.institucionTipoCarritoService.findTipoCarritoById(
|
||||
id_tipo_carrito,
|
||||
)
|
||||
: id_tipo_carrito;
|
||||
|
||||
return this.repository
|
||||
.findOne({ modulo, carrito })
|
||||
.findOne({ modulo, tipoCarrito, carrito })
|
||||
.then((existeCarrito) => {
|
||||
if (existeCarrito)
|
||||
throw new ConflictException(
|
||||
@@ -165,10 +175,12 @@ export class CarritoService {
|
||||
)
|
||||
: null;
|
||||
|
||||
if (attrs.carrito) {
|
||||
if (modulo) await this.existeCarrito(modulo, attrs.carrito);
|
||||
else await this.existeCarrito(carrito.modulo, attrs.carrito);
|
||||
}
|
||||
if (attrs.carrito || modulo || tipoCarrito)
|
||||
await this.existeCarrito(
|
||||
modulo ? modulo : carrito.modulo,
|
||||
tipoCarrito ? tipoCarrito : carrito.tipoCarrito,
|
||||
attrs.carrito ? attrs.carrito : carrito.carrito,
|
||||
);
|
||||
Object.assign(carrito, attrs);
|
||||
if (modulo) carrito.modulo = modulo;
|
||||
if (tipoCarrito) carrito.tipoCarrito = tipoCarrito;
|
||||
|
||||
@@ -20,6 +20,10 @@ export class EquiposDto {
|
||||
@IsOptional()
|
||||
id_programa?: string;
|
||||
|
||||
@IsNumberString()
|
||||
@IsOptional()
|
||||
id_status?: string;
|
||||
|
||||
@IsNumberString()
|
||||
@IsOptional()
|
||||
id_tipo_carrito?: string;
|
||||
@@ -27,8 +31,4 @@ export class EquiposDto {
|
||||
@IsNumberString()
|
||||
@IsOptional()
|
||||
id_tipo_entrada?: string;
|
||||
|
||||
@IsNumberString()
|
||||
@IsOptional()
|
||||
id_status?: string;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { Expose, Type } from 'class-transformer';
|
||||
import { CarritoMinOutputDto } from '../../../carrito/dto/output/carrito-min.dto';
|
||||
import { StatusOutputDto } from '../../../status/dto/output/status.dto';
|
||||
import { EquipoTipoEntradaOutputDto } from '../../../equipo-tipo-entrada/dto/output/equipo-tipo-entrada.dto';
|
||||
import { EquipoProgramaOutputDto } from '../../../equipo-programa/dto/output/equipo-programa.dto';
|
||||
import { EquipoTipoEntradaOutputDto } from '../../../equipo-tipo-entrada/dto/output/equipo-tipo-entrada.dto';
|
||||
import { StatusOutputDto } from '../../../status/dto/output/status.dto';
|
||||
|
||||
export class EquipoMinOutputDto {
|
||||
@Expose()
|
||||
@@ -14,6 +14,9 @@ export class EquipoMinOutputDto {
|
||||
@Expose()
|
||||
numero_inventario;
|
||||
|
||||
@Expose()
|
||||
numero_serie;
|
||||
|
||||
@Expose()
|
||||
@Type(() => CarritoMinOutputDto)
|
||||
carrito;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { Expose, Type } from 'class-transformer';
|
||||
import { CarritoMinOutputDto } from '../../../carrito/dto/output/carrito-min.dto';
|
||||
import { StatusOutputDto } from '../../../status/dto/output/status.dto';
|
||||
import { EquipoTipoEntradaOutputDto } from '../../../equipo-tipo-entrada/dto/output/equipo-tipo-entrada.dto';
|
||||
import { EquipoProgramaOutputDto } from '../../../equipo-programa/dto/output/equipo-programa.dto';
|
||||
import { EquipoTipoEntradaOutputDto } from '../../../equipo-tipo-entrada/dto/output/equipo-tipo-entrada.dto';
|
||||
import { StatusOutputDto } from '../../../status/dto/output/status.dto';
|
||||
|
||||
export class EquipoOutputDto {
|
||||
@Expose()
|
||||
|
||||
@@ -7,10 +7,10 @@ import {
|
||||
PrimaryGeneratedColumn,
|
||||
} from 'typeorm';
|
||||
import { Carrito } from '../../carrito/entity/carrito.entity';
|
||||
import { EquipoPrograma } from '../../equipo-programa/entity/equipo-programa.entity';
|
||||
import { EquipoTipoEntrada } from '../../equipo-tipo-entrada/entity/equipo-tipo-entrada.entity';
|
||||
import { Motivo } from '../../motivo/entity/motivo.entity';
|
||||
import { Prestamo } from '../../prestamo/entity/prestamo.entity';
|
||||
import { EquipoPrograma } from '../../equipo-programa/entity/equipo-programa.entity';
|
||||
import { Status } from '../../status/entity/status.entity';
|
||||
|
||||
@Entity()
|
||||
@@ -44,21 +44,21 @@ export class Equipo {
|
||||
@JoinColumn({ name: 'id_status' })
|
||||
status: Status;
|
||||
|
||||
@OneToMany(
|
||||
() => EquipoTipoEntrada,
|
||||
(equipoTipoEntrada) => equipoTipoEntrada.equipo,
|
||||
{ eager: true },
|
||||
)
|
||||
tiposEntradas: EquipoTipoEntrada[];
|
||||
@OneToMany(() => Motivo, (motivo) => motivo.equipo)
|
||||
motivos: Motivo[];
|
||||
|
||||
@OneToMany(() => Prestamo, (prestamo) => prestamo.equipo)
|
||||
prestamos: Prestamo[];
|
||||
|
||||
@OneToMany(() => EquipoPrograma, (equipoPrograma) => equipoPrograma.equipo, {
|
||||
eager: true,
|
||||
})
|
||||
programas: EquipoPrograma[];
|
||||
|
||||
@OneToMany(() => Motivo, (motivo) => motivo.equipo)
|
||||
motivos: Motivo[];
|
||||
|
||||
@OneToMany(() => Prestamo, (prestamo) => prestamo.equipo)
|
||||
prestamos: Prestamo[];
|
||||
@OneToMany(
|
||||
() => EquipoTipoEntrada,
|
||||
(equipoTipoEntrada) => equipoTipoEntrada.equipo,
|
||||
{ eager: true },
|
||||
)
|
||||
tiposEntradas: EquipoTipoEntrada[];
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Body, Controller, Get, Put, Query } from '@nestjs/common';
|
||||
import { AuthGuard } from '@nestjs/passport';
|
||||
import { ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { EquipoService } from './equipo.service';
|
||||
@@ -15,6 +16,7 @@ export class EquipoController {
|
||||
|
||||
@Serealize(EquipoOutputDto)
|
||||
@Get('equipo')
|
||||
// @UseGuards(AuthGuard('jwt'))
|
||||
@ApiOperation({
|
||||
description:
|
||||
'Endpoint que retorna la información de un equipo por su número de inventario de una institución.',
|
||||
@@ -38,6 +40,7 @@ export class EquipoController {
|
||||
|
||||
@Serealize(EquiposOutputDto)
|
||||
@Get('equipos')
|
||||
// @UseGuards(AuthGuard('jwt'))
|
||||
@ApiOperation({
|
||||
description:
|
||||
'Endpoint que retorna 15 equipos dependiendo de la página en la que esta el usuario y sus filtros.',
|
||||
@@ -87,6 +90,7 @@ export class EquipoController {
|
||||
}
|
||||
|
||||
@Put()
|
||||
// @UseGuards(AuthGuard('jwt'))
|
||||
update(@Body() body: UpdateEquipoDto) {
|
||||
return this.equipoService.update(body);
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@ 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 { InstitucionModule } from '../institucion/institucion.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';
|
||||
@@ -21,8 +21,8 @@ import { StatusModule } from '../status/status.module';
|
||||
InstitucionTipoCarritoModule,
|
||||
InstitucionTipoEntradaModule,
|
||||
ModuloModule,
|
||||
TypeOrmModule.forFeature([Equipo]),
|
||||
StatusModule,
|
||||
TypeOrmModule.forFeature([Equipo]),
|
||||
],
|
||||
controllers: [EquipoController],
|
||||
providers: [EquipoService],
|
||||
|
||||
@@ -41,11 +41,12 @@ export class EquipoService {
|
||||
async create(
|
||||
carrito: Carrito,
|
||||
equipo: string,
|
||||
marca: string,
|
||||
modelo: string,
|
||||
numero_inventario: string,
|
||||
numero_serie: string,
|
||||
marca: string,
|
||||
modelo: string,
|
||||
) {
|
||||
const activo = await this.statusService.findById(1);
|
||||
const equipoNuevo = await this.repository.save(
|
||||
this.repository.create({
|
||||
carrito,
|
||||
@@ -54,7 +55,7 @@ export class EquipoService {
|
||||
modelo,
|
||||
numero_inventario,
|
||||
numero_serie,
|
||||
status: { id_status: 1 },
|
||||
status: activo,
|
||||
}),
|
||||
);
|
||||
|
||||
@@ -72,7 +73,7 @@ export class EquipoService {
|
||||
return this.repository.findOne({ carrito, equipo }).then((existeEquipo) => {
|
||||
if (existeEquipo)
|
||||
throw new ConflictException(
|
||||
'Ya existe un equipo con este nombre, intenta con otro.',
|
||||
'Ya existe un equipo en este carrito con este nombre, intenta con otro.',
|
||||
);
|
||||
});
|
||||
}
|
||||
@@ -207,18 +208,19 @@ export class EquipoService {
|
||||
id_modulo: modulo.id_modulo,
|
||||
},
|
||||
)
|
||||
.innerJoinAndSelect('m.institucion', 'i', 'i.activo = 1')
|
||||
.innerJoinAndSelect(
|
||||
'c.tipoCarrito',
|
||||
'tc',
|
||||
'tc.id_tipo_carrito = :id_tipo_carrito',
|
||||
{ id_tipo_carrito: tipoCarrito.id_tipo_carrito },
|
||||
)
|
||||
.innerJoinAndSelect('e.status', 's', 's.id_status = 1')
|
||||
.innerJoinAndSelect('e.status', 's')
|
||||
.innerJoinAndSelect('e.tiposEntradas', 'tes')
|
||||
.innerJoinAndSelect('tes.tipoEntrada', 'te')
|
||||
.innerJoinAndSelect('e.programas', 'ps')
|
||||
.innerJoinAndSelect('ps.programa', 'p')
|
||||
.where('e.prestado = 0');
|
||||
.where('prestado = 0 AND id_status = 1');
|
||||
|
||||
if (programa)
|
||||
query.andWhere('ps.id_programa = :id_programa', {
|
||||
@@ -241,11 +243,11 @@ export class EquipoService {
|
||||
return this.findEquipo(modulo, tipoCarrito, programa, tipoEntrada)
|
||||
.getCount()
|
||||
.then((n) => {
|
||||
if (n === 0) {
|
||||
const query = this.repository
|
||||
if (n === 0)
|
||||
return this.repository
|
||||
.createQueryBuilder('e')
|
||||
.innerJoinAndSelect('e.carrito', 'c', 'c.activo = 1')
|
||||
.innerJoinAndSelect(
|
||||
.innerJoin('e.carrito', 'c', 'c.activo = 1')
|
||||
.innerJoin(
|
||||
'c.modulo',
|
||||
'm',
|
||||
'm.id_modulo = :id_modulo AND m.activo = 1',
|
||||
@@ -253,17 +255,17 @@ export class EquipoService {
|
||||
id_modulo: modulo.id_modulo,
|
||||
},
|
||||
)
|
||||
.innerJoinAndSelect(
|
||||
.innerJoin('m.institucion', 'i', 'i.activo = 1')
|
||||
.innerJoin(
|
||||
'c.tipoCarrito',
|
||||
'tc',
|
||||
'tc.id_tipo_carrito = :id_tipo_carrito',
|
||||
{ id_tipo_carrito: tipoCarrito.id_tipo_carrito },
|
||||
)
|
||||
.innerJoinAndSelect('e.status', 's', 's.id_status = 1')
|
||||
.andWhere('prestado = 1');
|
||||
|
||||
return query.update().set({ prestado: false }).execute();
|
||||
}
|
||||
.andWhere('prestado = 1 AND id_status = 1')
|
||||
.update()
|
||||
.set({ prestado: false })
|
||||
.execute();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -295,24 +297,26 @@ export class EquipoService {
|
||||
update(attrs: Partial<Equipo>, id_carrito?: number, id_status?: number) {
|
||||
return this.findById(attrs.id_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;
|
||||
const status = id_status
|
||||
? await this.statusService.findById(id_status)
|
||||
: null;
|
||||
|
||||
if (attrs.equipo && attrs.equipo != equipo.equipo) {
|
||||
if (carrito) this.existeEquipo(carrito, attrs.equipo);
|
||||
else this.existeEquipo(equipo.carrito, attrs.equipo);
|
||||
}
|
||||
Object.assign(equipo, attrs);
|
||||
if (carrito && carrito != equipo.carrito) equipo.carrito = carrito;
|
||||
if (status && status != equipo.status) equipo.status = status;
|
||||
if (carrito) {
|
||||
equipo.carrito = carrito;
|
||||
}
|
||||
if (status) equipo.status = status;
|
||||
return this.repository.save(equipo);
|
||||
})
|
||||
.then((equipo) => ({
|
||||
message: 'Se actualizó correctamente la información del equipo.',
|
||||
message: 'Se guardaron los cambios correctamente.',
|
||||
equipo,
|
||||
}));
|
||||
}
|
||||
|
||||
@@ -133,10 +133,10 @@ export class UploadFileService {
|
||||
equipo = await this.equipoService.create(
|
||||
carrito,
|
||||
equipos[i].equipo,
|
||||
equipos[i].marca,
|
||||
equipos[i].modelo,
|
||||
equipos[i].numero_inventario,
|
||||
equipos[i].numero_serie,
|
||||
equipos[i].marca,
|
||||
equipos[i].modelo,
|
||||
);
|
||||
|
||||
const entradas = equipos[i].entradas.split(',');
|
||||
|
||||
Reference in New Issue
Block a user