equipo tipo entrada actualizado
This commit is contained in:
@@ -46,24 +46,24 @@ export class EquipoProgramaService {
|
||||
'No puedes modificar la información este equipo porque no pertenece a tu institución.',
|
||||
);
|
||||
// Verifica que no eixsta un registro con estos ids
|
||||
return this.findInfoEquipoProgramaByIdEquipoIdPrograma(
|
||||
equipo.id_equipo,
|
||||
programa.id_programa,
|
||||
).then((existeEquipoPrograma) => {
|
||||
// Error si existe
|
||||
if (existeEquipoPrograma)
|
||||
throw new ConflictException(
|
||||
'Este software ya fue asignado a este equipo.',
|
||||
);
|
||||
|
||||
// Creo registro
|
||||
return this.create(equipo, programa);
|
||||
});
|
||||
return this.findInfoEquipoProgramaByEquipoPrograma(equipo, programa).then(
|
||||
(existeEquipoPrograma) => {
|
||||
// Error si existe
|
||||
if (existeEquipoPrograma)
|
||||
throw new ConflictException(
|
||||
'Este software ya fue asignado a este equipo.',
|
||||
);
|
||||
// Creo registro
|
||||
return this.create(equipo, programa);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
async create(equipo: Equipo, programa: Programa) {
|
||||
create(equipo: Equipo, programa: Programa) {
|
||||
// Ver si tiene programa "Sin programa"
|
||||
return this.findInfoEquipoProgramaByIdEquipoIdPrograma(equipo.id_equipo, 1)
|
||||
return this.findInfoEquipoProgramaByEquipoPrograma(equipo, {
|
||||
id_programa: 1,
|
||||
})
|
||||
.then(async (existeEquipoSinPrograma) => {
|
||||
// Si tiene lo elimino
|
||||
if (existeEquipoSinPrograma)
|
||||
@@ -79,7 +79,7 @@ export class EquipoProgramaService {
|
||||
}));
|
||||
}
|
||||
|
||||
async createSinPrograma(equipo: Equipo) {
|
||||
createSinPrograma(equipo: Equipo) {
|
||||
return this.repository.save(
|
||||
this.repository.create({ equipo, programa: { id_programa: 1 } }),
|
||||
);
|
||||
@@ -136,14 +136,17 @@ export class EquipoProgramaService {
|
||||
findInfoEquipoProgramaById(id_equipo_programa: number) {
|
||||
return this.informacionEquipoProgramaView
|
||||
.findOne({ where: { id_equipo_programa } })
|
||||
.then((infoEquipoPrograma) =>
|
||||
this.repository.create({
|
||||
.then((infoEquipoPrograma) => {
|
||||
if (!infoEquipoPrograma)
|
||||
throw new ConflictException('No existe este id equipo programa.');
|
||||
return this.repository.create({
|
||||
id_equipo_programa: infoEquipoPrograma.id_equipo_programa,
|
||||
equipo: {
|
||||
id_equipo: infoEquipoPrograma.id_equipo,
|
||||
carrito: {
|
||||
id_carrito: infoEquipoPrograma.id_carrito,
|
||||
modulo: {
|
||||
id_modulo: infoEquipoPrograma.id_modulo,
|
||||
institucion: {
|
||||
id_institucion: infoEquipoPrograma.id_institucion,
|
||||
},
|
||||
@@ -153,16 +156,15 @@ export class EquipoProgramaService {
|
||||
},
|
||||
},
|
||||
},
|
||||
}),
|
||||
);
|
||||
programa: { id_programa: infoEquipoPrograma.id_programa },
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
findInfoEquipoProgramaByIdEquipoIdPrograma(
|
||||
id_equipo: number,
|
||||
id_programa: number,
|
||||
findInfoEquipoProgramaByEquipoPrograma(
|
||||
equipo: Equipo,
|
||||
programa: Programa | Partial<Programa>,
|
||||
) {
|
||||
return this.repository.findOne({
|
||||
where: { equipo: { id_equipo }, programa: { id_programa } },
|
||||
});
|
||||
return this.repository.findOne({ where: { equipo, programa } });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,9 +11,7 @@ export class EquipoTipoEntrada {
|
||||
@JoinColumn({ name: 'id_equipo' })
|
||||
equipo: Equipo;
|
||||
|
||||
@ManyToOne(() => TipoEntrada, (tipoEntrada) => tipoEntrada.equipos, {
|
||||
eager: true,
|
||||
})
|
||||
@ManyToOne(() => TipoEntrada, (tipoEntrada) => tipoEntrada.equipos)
|
||||
@JoinColumn({ name: 'id_tipo_entrada' })
|
||||
tipoEntrada: TipoEntrada;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
import { DataSource, ViewEntity, ViewColumn } from 'typeorm';
|
||||
import { EquipoTipoEntrada } from '../equipo-tipo-entrada.entity';
|
||||
import { Equipo } from '../../../equipo/entity/equipo.entity';
|
||||
import { Carrito } from '../../../carrito/entity/carrito.entity';
|
||||
import { Modulo } from '../../../modulo/entity/modulo.entity';
|
||||
|
||||
@ViewEntity({
|
||||
expression: (dataSource: DataSource) =>
|
||||
@@ -8,15 +11,34 @@ import { EquipoTipoEntrada } from '../equipo-tipo-entrada.entity';
|
||||
.select('ete.id_equipo_tipo_entrada', 'id_equipo_tipo_entrada')
|
||||
.addSelect('ete.id_equipo', 'id_equipo')
|
||||
.addSelect('ete.id_tipo_entrada', 'id_tipo_entrada')
|
||||
.from(EquipoTipoEntrada, 'ete'),
|
||||
.addSelect('e.id_carrito', 'id_carrito')
|
||||
.addSelect('c.id_modulo', 'id_modulo')
|
||||
.addSelect('c.id_tipo_carrito', 'id_tipo_carrito')
|
||||
.addSelect('m.id_institucion', 'id_institucion')
|
||||
.from(EquipoTipoEntrada, 'ete')
|
||||
.innerJoin(Equipo, 'e', 'e.id_equipo = ete.id_equipo')
|
||||
.innerJoin(Carrito, 'c', 'c.id_carrito = e.id_carrito')
|
||||
.innerJoin(Modulo, 'm', 'm.id_modulo = c.id_modulo'),
|
||||
})
|
||||
export class InformacionEquipoTipoEntradaView {
|
||||
@ViewColumn()
|
||||
id_equipo_tipo_entrada: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_carrito: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_equipo: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_institucion: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_modulo: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_tipo_entrada: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_tipo_carrito: number;
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ export class EquipoTipoEntradaController {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.equipoTipoEntradaService.create(
|
||||
return this.equipoTipoEntradaService.asignar(
|
||||
body.id_equipo,
|
||||
body.id_tipo_entrada,
|
||||
);
|
||||
@@ -58,6 +58,9 @@ export class EquipoTipoEntradaController {
|
||||
const operador: Operador = req.user.operador;
|
||||
|
||||
this.validarUsuarioService.validarAdminOperador(operador);
|
||||
return this.equipoTipoEntradaService.delete(body.id_equipo_tipo_entrada);
|
||||
return this.equipoTipoEntradaService.delete(
|
||||
operador,
|
||||
body.id_equipo_tipo_entrada,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import {
|
||||
ConflictException,
|
||||
ForbiddenException,
|
||||
forwardRef,
|
||||
Inject,
|
||||
Injectable,
|
||||
@@ -8,6 +9,7 @@ import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
import { Equipo } from '../equipo/entity/equipo.entity';
|
||||
import { EquipoTipoEntrada } from './entity/equipo-tipo-entrada.entity';
|
||||
import { Operador } from 'src/operador/entity/operador.entity';
|
||||
import { TipoEntrada } from '../institucion-tipo-entrada/entity/tipo-entrada.entity';
|
||||
import { FullInformacionEquipoTipoEntradaView } from './entity/views/full-informacion-equipo-tipo-entrada.view';
|
||||
import { InformacionEquipoTipoEntradaView } from './entity/views/informacion-equipo-tipo-entrada.view';
|
||||
@@ -28,41 +30,26 @@ export class EquipoTipoEntradaService {
|
||||
private institucionTipoEntradaService: InstitucionTipoEntradaService,
|
||||
) {}
|
||||
|
||||
async create(
|
||||
id_equipo: number | Equipo,
|
||||
id_tipo_entrada: number | TipoEntrada,
|
||||
) {
|
||||
const equipo =
|
||||
typeof id_equipo === 'number'
|
||||
? await this.equipoService.findInfoEquipoById(id_equipo)
|
||||
: id_equipo;
|
||||
async asignar(id_equipo: number, id_tipo_entrada: number) {
|
||||
const equipo = await this.equipoService.findInfoEquipoById(id_equipo);
|
||||
const tipoEntrada =
|
||||
typeof id_tipo_entrada === 'number'
|
||||
? await this.institucionTipoEntradaService.findTipoEntradaById(
|
||||
id_tipo_entrada,
|
||||
)
|
||||
: id_tipo_entrada;
|
||||
await this.institucionTipoEntradaService.findTipoEntradaById(
|
||||
id_tipo_entrada,
|
||||
);
|
||||
|
||||
return this.informacionEquipoTipoEntrada(
|
||||
equipo.id_equipo,
|
||||
tipoEntrada.id_tipo_entrada,
|
||||
)
|
||||
.then((existeEquipoTipoEntrada) => {
|
||||
if (existeEquipoTipoEntrada)
|
||||
throw new ConflictException(
|
||||
'Este tipo de entrada ya fue asignado a este equipo.',
|
||||
);
|
||||
return this.repository.save(
|
||||
this.repository.create({ equipo, tipoEntrada }),
|
||||
return this.findInfoEquipoTipoEntradaByEquipoTipoEntrada(
|
||||
equipo,
|
||||
tipoEntrada,
|
||||
).then((existeEquipoTipoEntrada) => {
|
||||
if (existeEquipoTipoEntrada)
|
||||
throw new ConflictException(
|
||||
'Este tipo de entrada ya fue asignado a este equipo.',
|
||||
);
|
||||
})
|
||||
.then((equipoTipoEntrada) => ({
|
||||
message: `Se asignó el tipo de entrada: ${tipoEntrada.tipo_entrada}, al equipo con número de inventario: ${equipo.numero_inventario}.`,
|
||||
equipoTipoEntrada,
|
||||
}));
|
||||
return this.create(equipo, tipoEntrada);
|
||||
});
|
||||
}
|
||||
|
||||
async createCargaMasiva(equipo: Equipo, tipoEntrada: TipoEntrada) {
|
||||
create(equipo: Equipo, tipoEntrada: TipoEntrada) {
|
||||
return this.repository
|
||||
.save(this.repository.create({ equipo, tipoEntrada }))
|
||||
.then((equipoTipoEntrada) => ({
|
||||
@@ -71,32 +58,32 @@ export class EquipoTipoEntradaService {
|
||||
}));
|
||||
}
|
||||
|
||||
delete(id_equipo_tipo_entrada: number) {
|
||||
return this.findById(id_equipo_tipo_entrada)
|
||||
.then((equipoTipoEntrada) => this.repository.remove(equipoTipoEntrada))
|
||||
delete(operador: Operador, id_equipo_tipo_entrada: number) {
|
||||
return this.findInfoEquipoTipoEntradaById(id_equipo_tipo_entrada)
|
||||
.then((equipoTipoEntrada) => {
|
||||
// Valida que el equipo pertenezca a la institución del operador
|
||||
if (
|
||||
operador.institucion.id_institucion !=
|
||||
equipoTipoEntrada.equipo.carrito.modulo.institucion.id_institucion
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No puedes modificar la información este equipo porque no pertenece a tu institución.',
|
||||
);
|
||||
return this.repository.remove(equipoTipoEntrada);
|
||||
})
|
||||
.then((_) => ({
|
||||
message: 'Se eliminó correctamente el tipo de entrada de este equipo.',
|
||||
}));
|
||||
}
|
||||
|
||||
findById(id_equipo_tipo_entrada: number) {
|
||||
return this.repository
|
||||
.findOne({ where: { id_equipo_tipo_entrada } })
|
||||
.then((equipoTipoEntrada) => {
|
||||
if (!equipoTipoEntrada)
|
||||
throw new ConflictException('No existe este id equipo tipo entrada.');
|
||||
return equipoTipoEntrada;
|
||||
});
|
||||
}
|
||||
|
||||
findFullInfoEquipoTipoEntradaAllByIdEquipo(id_equipo: number) {
|
||||
return this.fullInformacionEquipoTipoEntradaView
|
||||
.find({ where: { id_equipo } })
|
||||
.then((infoEquipoTipoEntradas) => {
|
||||
const equipoProgramas: EquipoTipoEntrada[] = [];
|
||||
const equipoTipoEntradas: EquipoTipoEntrada[] = [];
|
||||
|
||||
for (let i = 0; i < infoEquipoTipoEntradas.length; i++)
|
||||
equipoProgramas.push(
|
||||
equipoTipoEntradas.push(
|
||||
this.repository.create({
|
||||
id_equipo_tipo_entrada:
|
||||
infoEquipoTipoEntradas[i].id_equipo_tipo_entrada,
|
||||
@@ -106,13 +93,44 @@ export class EquipoTipoEntradaService {
|
||||
},
|
||||
}),
|
||||
);
|
||||
return equipoProgramas;
|
||||
return equipoTipoEntradas;
|
||||
});
|
||||
}
|
||||
|
||||
informacionEquipoTipoEntrada(id_equipo: number, id_tipo_entrada: number) {
|
||||
return this.informacionEquipoTipoEntradaView.findOne({
|
||||
where: { id_equipo, id_tipo_entrada },
|
||||
});
|
||||
findInfoEquipoTipoEntradaById(id_equipo_tipo_entrada: number) {
|
||||
return this.informacionEquipoTipoEntradaView
|
||||
.findOne({ where: { id_equipo_tipo_entrada } })
|
||||
.then((infoEquipoTipoEntrada) => {
|
||||
if (!infoEquipoTipoEntrada)
|
||||
throw new ConflictException('No existe este id equipo tipo entrada.');
|
||||
return this.repository.create({
|
||||
id_equipo_tipo_entrada: infoEquipoTipoEntrada.id_equipo_tipo_entrada,
|
||||
equipo: {
|
||||
id_equipo: infoEquipoTipoEntrada.id_equipo,
|
||||
carrito: {
|
||||
id_carrito: infoEquipoTipoEntrada.id_carrito,
|
||||
modulo: {
|
||||
id_modulo: infoEquipoTipoEntrada.id_modulo,
|
||||
institucion: {
|
||||
id_institucion: infoEquipoTipoEntrada.id_institucion,
|
||||
},
|
||||
},
|
||||
tipoCarrito: {
|
||||
id_tipo_carrito: infoEquipoTipoEntrada.id_tipo_carrito,
|
||||
},
|
||||
},
|
||||
},
|
||||
tipoEntrada: {
|
||||
id_tipo_entrada: infoEquipoTipoEntrada.id_tipo_entrada,
|
||||
},
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
findInfoEquipoTipoEntradaByEquipoTipoEntrada(
|
||||
equipo: Equipo,
|
||||
tipoEntrada: TipoEntrada,
|
||||
) {
|
||||
return this.repository.findOne({ where: { equipo, tipoEntrada } });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -284,9 +284,9 @@ export class UploadFileService {
|
||||
false,
|
||||
);
|
||||
const existeEquipoTipoEntrada = tipoEntrada
|
||||
? await this.equipoTipoEntradaService.informacionEquipoTipoEntrada(
|
||||
equipo.id_equipo,
|
||||
tipoEntrada.id_tipo_entrada,
|
||||
? await this.equipoTipoEntradaService.findInfoEquipoTipoEntradaByEquipoTipoEntrada(
|
||||
equipo,
|
||||
tipoEntrada,
|
||||
)
|
||||
: null;
|
||||
|
||||
@@ -308,7 +308,7 @@ export class UploadFileService {
|
||||
continue;
|
||||
}
|
||||
await this.equipoTipoEntradaService
|
||||
.createCargaMasiva(equipo, tipoEntrada)
|
||||
.create(equipo, tipoEntrada)
|
||||
.then((res) => {
|
||||
equipo.tiposEntradas.push(res.equipoTipoEntrada);
|
||||
mensajes.push(res.message);
|
||||
@@ -321,9 +321,9 @@ export class UploadFileService {
|
||||
false,
|
||||
);
|
||||
const existeEquipoPrograma = programa
|
||||
? await this.equipoProgramaService.findInfoEquipoProgramaByIdEquipoIdPrograma(
|
||||
equipo.id_equipo,
|
||||
programa.id_programa,
|
||||
? await this.equipoProgramaService.findInfoEquipoProgramaByEquipoPrograma(
|
||||
equipo,
|
||||
programa,
|
||||
)
|
||||
: null;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user