modulo equipo final

This commit is contained in:
xXpuma99Xx
2022-06-24 00:37:00 -05:00
parent 5b7c1e849f
commit 72bc5c416f
9 changed files with 76 additions and 53 deletions
+19 -7
View File
@@ -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;
+4 -4
View File
@@ -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;
}
+5 -2
View File
@@ -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;
+2 -2
View File
@@ -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()
+12 -12
View File
@@ -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[];
}
+4
View File
@@ -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);
}
+2 -2
View File
@@ -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],
+26 -22
View File
@@ -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,
}));
}
+2 -2
View File
@@ -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(',');