marca y modelo arreglado

This commit is contained in:
2022-08-05 07:28:21 -05:00
parent 1002c878ba
commit c4fd8098e2
20 changed files with 165 additions and 166 deletions
-1
View File
@@ -2087,4 +2087,3 @@ 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);
INSERT INTO institucion_dia(id_institucion, id_dia) VALUES(1000, 6);
+15 -24
View File
@@ -76,18 +76,18 @@ export class CarritoController {
type: 'string',
required: false,
})
// @ApiQuery({
// description: 'Id de la marca.',
// name: 'id_marca',
// type: 'string',
// required: false,
// })
// @ApiQuery({
// description: 'Id del modelo.',
// name: 'id_modelo',
// type: 'string',
// required: false,
// })
@ApiQuery({
description: 'Id de la marca.',
name: 'id_marca',
type: 'string',
required: false,
})
@ApiQuery({
description: 'Id del modelo.',
name: 'id_modelo',
type: 'string',
required: false,
})
@ApiQuery({
description: 'Id del módulo.',
name: 'id_modulo',
@@ -122,8 +122,8 @@ export class CarritoController {
return this.carritoService.create(
body.id_modulo,
body.id_tipo_carrito,
body.marca,
body.modelo,
body.id_marca,
body.id_modelo,
);
}
@@ -141,20 +141,11 @@ export class CarritoController {
value: {
id_carrito: 1,
_activo: true,
_carrito: '',
// _id_marca: '',
// _id_modelo: '',
_marca: '',
_modelo: '',
},
},
},
})
update(@Body() body: UpdateCarritoDto) {
const data = { ...body };
// delete data.id_marca;
// delete data.id_modelo;
return this.carritoService.update(data);
return this.carritoService.update(body);
}
}
+20 -12
View File
@@ -28,18 +28,16 @@ export class CarritoService {
async create(
id_modulo: number,
id_tipo_carrito: number,
marca: string,
modelo: string,
// id_marca: number,
// id_modelo: number,
id_marca: number,
id_modelo: number,
) {
// const marca = await this.marcaService.findById(id_marca);
// const modelo = await this.modeloService.findById(id_modelo);
const modulo = await this.moduloService.findById(id_modulo);
const tipoCarrito =
await this.institucionTipoCarritoService.findTipoCarritoById(
id_tipo_carrito,
);
const marca = await this.marcaService.findById(id_marca, 'c');
const modelo = await this.modeloService.findById(id_modelo, 'c');
return this.repository
.count({ modulo, tipoCarrito })
@@ -72,12 +70,12 @@ export class CarritoService {
const institucion = filtros.id_institucion
? await this.institucionService.findById(parseInt(filtros.id_institucion))
: null;
// const marca = filtros.id_marca
// ? await this.marcaService.findById(parseInt(filtros.id_marca))
// : null;
// const modelo = filtros.id_modelo
// ? await this.modeloService.findById(parseInt(filtros.id_modelo))
// : null;
const marca = filtros.id_marca
? await this.marcaService.findById(parseInt(filtros.id_marca), 'c')
: null;
const modelo = filtros.id_modelo
? await this.modeloService.findById(parseInt(filtros.id_modelo), 'c')
: null;
const modulo = filtros.id_modulo
? await this.moduloService.findById(parseInt(filtros.id_modulo))
: null;
@@ -88,6 +86,8 @@ export class CarritoService {
: null;
const query = this.repository
.createQueryBuilder('c')
.innerJoinAndSelect('c.marca', 'ma')
.innerJoinAndSelect('c.modelo', 'mo')
.innerJoinAndSelect('c.modulo', 'm')
.innerJoinAndSelect('c.tipoCarrito', 'tc')
.innerJoinAndSelect('m.institucion', 'i')
@@ -108,6 +108,14 @@ export class CarritoService {
query.andWhere('i.id_institucion = :id_institucion', {
id_institucion: institucion.id_institucion,
});
if (marca)
query.andWhere('ma.id_marca = :id_marca', {
id_marca: marca.id_marca,
});
if (modelo)
query.andWhere('mo.id_modelo = :id_modelo', {
id_modelo: modelo.id_modelo,
});
if (modulo)
query.andWhere('m.id_modulo = :id_modulo', {
id_modulo: modulo.id_modulo,
+6 -6
View File
@@ -23,13 +23,13 @@ export class CarritosDto {
@IsOptional()
id_institucion?: string;
// @IsNumberString()
// @IsOptional()
// id_marca?: string;
@IsNumberString()
@IsOptional()
id_marca?: string;
// @IsNumberString()
// @IsOptional()
// id_modelo?: string;
@IsNumberString()
@IsOptional()
id_modelo?: string;
@IsNumberString()
@IsOptional()
+7 -13
View File
@@ -1,21 +1,15 @@
import { IsInt, IsString } from 'class-validator';
import { IsInt } from 'class-validator';
export class CreateCarritoDto {
@IsInt()
id_marca: number;
@IsInt()
id_modelo: number;
@IsInt()
id_modulo: number;
@IsInt()
id_tipo_carrito: number;
// @IsInt()
// id_marca: number;
// @IsInt()
// id_modulo: number;
@IsString()
marca: string;
@IsString()
modelo: string;
}
-16
View File
@@ -7,20 +7,4 @@ export class UpdateCarritoDto {
@IsBoolean()
@IsOptional()
activo?: boolean;
// @IsInt()
// @IsOptional()
// id_marca?: number;
// @IsInt()
// @IsOptional()
// id_modelo?: number;
@IsString()
@IsOptional()
marca?: string;
@IsString()
@IsOptional()
modelo?: string;
}
+2 -2
View File
@@ -15,11 +15,11 @@ export class CarritoOutputDto {
carrito;
@Expose()
// @Type(() => MarcaOutputDto)
@Type(() => MarcaOutputDto)
marca;
@Expose()
// @Type(() => ModeloOutputDto)
@Type(() => ModeloOutputDto)
modelo;
@Expose()
+6 -10
View File
@@ -23,17 +23,13 @@ export class Carrito {
@Column({ type: String, nullable: false, length: 4 })
carrito: string;
// @ManyToOne(() => Marca, (marca) => marca.carritos, { eager: true })
// @JoinColumn({ name: 'id_marca' })
@Column({ type: String, nullable: false, length: 30 })
marca: string;
// marca: Marca;
@ManyToOne(() => Marca, (marca) => marca.carritos, { eager: true })
@JoinColumn({ name: 'id_marca' })
marca: Marca;
// @ManyToOne(() => Modelo, (modelo) => modelo.carritos, { eager: true })
// @JoinColumn({ name: 'id_modelo' })
@Column({ type: String, nullable: false, length: 30 })
modelo: string;
// modelo: Modelo;
@ManyToOne(() => Modelo, (modelo) => modelo.carritos, { eager: true })
@JoinColumn({ name: 'id_modelo' })
modelo: Modelo;
@ManyToOne(() => Modulo, (modulo) => modulo.carritos, { eager: true })
@JoinColumn({ name: 'id_modulo' })
+6 -6
View File
@@ -27,13 +27,13 @@ export class EquiposDto {
@IsOptional()
id_institucion?: string;
// @IsInt()
// @IsOptional()
// id_marca?: number;
@IsNumberString()
@IsOptional()
id_marca?: string;
// @IsInt()
// @IsOptional()
// id_modelo?: number;
@IsNumberString()
@IsOptional()
id_modelo?: string;
@IsNumberString()
@IsOptional()
+7 -9
View File
@@ -1,4 +1,10 @@
import { IsInt, IsNotEmpty, IsOptional, IsString, MaxLength } from 'class-validator';
import {
IsInt,
IsNotEmpty,
IsOptional,
IsString,
MaxLength,
} from 'class-validator';
export class UpdateEquipoDto {
@IsInt()
@@ -29,14 +35,6 @@ export class UpdateEquipoDto {
@IsOptional()
id_status?: number;
@IsString()
@IsOptional()
marca?: string;
@IsString()
@IsOptional()
modelo?: string;
@IsString()
@IsNotEmpty()
@MaxLength(250)
+8 -8
View File
@@ -13,14 +13,6 @@ export class EquipoOutputDto {
@Expose()
equipo;
@Expose()
// @Type(() => MarcaOutputDto)
marca;
@Expose()
// @Type(() => ModeloOutputDto)
modelo;
@Expose()
numero_inventario;
@@ -31,6 +23,14 @@ export class EquipoOutputDto {
@Type(() => CarritoMinOutputDto)
carrito;
@Expose()
@Type(() => MarcaOutputDto)
marca;
@Expose()
@Type(() => ModeloOutputDto)
modelo;
@Expose()
@Type(() => EquipoProgramaOutputDto)
programas;
+6 -12
View File
@@ -23,12 +23,6 @@ export class Equipo {
@Column({ type: String, nullable: false, length: 4 })
equipo: string;
@Column({ type: String, nullable: false, length: 30 })
marca: string;
@Column({ type: String, nullable: false, length: 30 })
modelo: string;
@Column({ type: String, nullable: false, length: 30 })
numero_inventario: string;
@@ -42,13 +36,13 @@ export class Equipo {
@JoinColumn({ name: 'id_carrito' })
carrito: Carrito;
// @ManyToOne(() => Marca, (marca) => marca.equipos, { eager: true })
// @JoinColumn({ name: 'id_marca' })
// marca: Marca;
@ManyToOne(() => Marca, (marca) => marca.equipos, { eager: true })
@JoinColumn({ name: 'id_marca' })
marca: Marca;
// @ManyToOne(() => Modelo, (modelo) => modelo.equipos, { eager: true })
// @JoinColumn({ name: 'id_modelo' })
// modelo: Modelo;
@ManyToOne(() => Modelo, (modelo) => modelo.equipos, { eager: true })
@JoinColumn({ name: 'id_modelo' })
modelo: Modelo;
@ManyToOne(() => Status, (status) => status.equipos, { eager: true })
@JoinColumn({ name: 'id_status' })
+12 -14
View File
@@ -82,18 +82,18 @@ export class EquipoController {
type: 'string',
required: false,
})
// @ApiQuery({
// description: 'Id de la marca que se quiere usar como filtro.',
// name: 'id_marca',
// type: 'string',
// required: false,
// })
// @ApiQuery({
// description: 'Id del modelo que se quiere usar como filtro.',
// name: 'id_modelo',
// type: 'string',
// required: false,
// })
@ApiQuery({
description: 'Id de la marca que se quiere usar como filtro.',
name: 'id_marca',
type: 'string',
required: false,
})
@ApiQuery({
description: 'Id del modelo que se quiere usar como filtro.',
name: 'id_modelo',
type: 'string',
required: false,
})
@ApiQuery({
description: 'Id del módulo que se quiere usar como filtro.',
name: 'id_modulo',
@@ -147,8 +147,6 @@ export class EquipoController {
// _id_modelo: '',
_id_operador: 1,
_id_status: 1,
_marca: '',
_modelo: '',
_motivo: '',
},
},
+20 -18
View File
@@ -10,8 +10,8 @@ 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 { Marca } from '../marca/entity/marca.entity';
// import { Modelo } from '../modelo/entity/modelo.entity';
import { Marca } from '../marca/entity/marca.entity';
import { Modelo } from '../modelo/entity/modelo.entity';
import { Modulo } from '../modulo/entity/modulo.entity';
import { Operador } from '../operador/entity/operador.entity';
import { Programa } from '../institucion-programa/entity/programa.entity';
@@ -55,8 +55,8 @@ export class EquipoService {
equipo: string,
numero_inventario: string,
numero_serie: string,
marca: string, // Marca,
modelo: string, // Modelo,
marca: Marca,
modelo: Modelo,
) {
const activo = await this.statusService.findById(1);
const equipoNuevo = await this.repository.save(
@@ -96,12 +96,12 @@ export class EquipoService {
const institucion = filtros.id_institucion
? await this.institucionService.findById(parseInt(filtros.id_institucion))
: null;
// const marca = filtros.id_marca
// ? await this.marcaService.findById(parseInt(filtros.id_marca))
// : null;
// const modelo = filtros.id_modelo
// ? await this.modeloService.findById(parseInt(filtros.id_modelo))
// : null;
const marca = filtros.id_marca
? await this.marcaService.findById(parseInt(filtros.id_marca), 'e')
: null;
const modelo = filtros.id_modelo
? await this.modeloService.findById(parseInt(filtros.id_modelo), 'e')
: null;
const modulo = filtros.id_modulo
? await this.moduloService.findById(parseInt(filtros.id_modulo))
: null;
@@ -126,6 +126,8 @@ export class EquipoService {
const query = this.repository
.createQueryBuilder('e')
.innerJoinAndSelect('e.carrito', 'c')
.innerJoinAndSelect('e.marca', 'ma')
.innerJoinAndSelect('e.modelo', 'mo')
.innerJoinAndSelect('e.programas', 'ps')
.innerJoinAndSelect('e.status', 's')
.innerJoinAndSelect('e.tiposEntradas', 'tes')
@@ -154,14 +156,14 @@ export class EquipoService {
query.andWhere('m.id_institucion = :id_institucion', {
id_institucion: institucion.id_institucion,
});
// if (marca)
// query.andWhere('m.id_marca = :id_marca', {
// id_marca: marca.id_marca,
// });
// if (modelo)
// query.andWhere('m.id_modelo = :id_modelo', {
// id_modelo: modelo.id_modelo,
// });
if (marca)
query.andWhere('ma.id_marca = :id_marca', {
id_marca: marca.id_marca,
});
if (modelo)
query.andWhere('mo.id_modelo = :id_modelo', {
id_modelo: modelo.id_modelo,
});
if (modulo)
query.andWhere('m.id_modulo = :id_modulo', {
id_modulo: modulo.id_modulo,
+6 -6
View File
@@ -1,6 +1,6 @@
import { Column, Entity, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
// import { Carrito } from '../../carrito/entity/carrito.entity';
// import { Equipo } from '../../equipo/entity/equipo.entity';
import { Carrito } from '../../carrito/entity/carrito.entity';
import { Equipo } from '../../equipo/entity/equipo.entity';
@Entity()
export class Marca {
@@ -13,9 +13,9 @@ export class Marca {
@Column({ type: String, nullable: false, length: 1 })
tipo: string;
// @OneToMany(() => Carrito, (carrito) => carrito.marca)
// carritos: Carrito[];
@OneToMany(() => Carrito, (carrito) => carrito.marca)
carritos: Carrito[];
// @OneToMany(() => Equipo, (equipo) => equipo.marca)
// equipos: Equipo[];
@OneToMany(() => Equipo, (equipo) => equipo.marca)
equipos: Equipo[];
}
+8
View File
@@ -22,6 +22,14 @@ export class MarcaService {
return this.repository.find({ where: { tipo }, order: { tipo: 'ASC' } });
}
findById(id_marca: number, tipo: string, validarExistencia = true) {
return this.repository.findOne({ id_marca, tipo }).then((marca) => {
if (validarExistencia && !marca)
throw new ConflictException('No existe esta marca.');
return marca;
});
}
findByMarca(marca: string, tipo: string, validarExistencia = true) {
return this.repository.findOne({ marca, tipo }).then((marca) => {
if (validarExistencia && !marca)
+6 -6
View File
@@ -1,6 +1,6 @@
import { Column, Entity, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
// import { Carrito } from '../../carrito/entity/carrito.entity';
// import { Equipo } from '../../equipo/entity/equipo.entity';
import { Carrito } from '../../carrito/entity/carrito.entity';
import { Equipo } from '../../equipo/entity/equipo.entity';
@Entity()
export class Modelo {
@@ -13,9 +13,9 @@ export class Modelo {
@Column({ type: String, nullable: false, length: 1 })
tipo: string;
// @OneToMany(() => Carrito, (carrito) => carrito.modelo)
// carritos: Carrito[];
@OneToMany(() => Carrito, (carrito) => carrito.modelo)
carritos: Carrito[];
// @OneToMany(() => Equipo, (equipo) => equipo.modelo)
// equipos: Equipo[];
@OneToMany(() => Equipo, (equipo) => equipo.modelo)
equipos: Equipo[];
}
+7
View File
@@ -24,6 +24,13 @@ export class ModeloService {
return this.repository.find({ where: { tipo }, order: { tipo: 'ASC' } });
}
findById(id_modelo: number, tipo: string, validarExistencia = true) {
return this.repository.findOne({ id_modelo, tipo }).then((modelo) => {
if (validarExistencia && !modelo)
throw new ConflictException('No existe este modelo.');
return modelo;
});
}
findByModelo(modelo: string, tipo: string, validarExistencia = true) {
return this.repository.findOne({ modelo, tipo }).then((modelo) => {
if (validarExistencia && !modelo)
+4
View File
@@ -13,6 +13,8 @@ import { InstitucionProgramaModule } from '../institucion-programa/institucion-p
import { InstitucionTipoCarritoModule } from '../institucion-tipo-carrito/institucion-tipo-carrito.module';
import { InstitucionTipoEntradaModule } from '../institucion-tipo-entrada/institucion-tipo-entrada.module';
import { InstitucionUsuarioModule } from '../institucion-usuario/institucion-usuario.module';
import { MarcaModule } from '../marca/marca.module';
import { ModeloModule } from '../modelo/modelo.module';
import { ModuloModule } from '../modulo/modulo.module';
import { TipoUsuarioModule } from '../tipo-usuario/tipo-usuario.module';
import { UsuarioModule } from '../usuario/usuario.module';
@@ -29,6 +31,8 @@ import { UsuarioModule } from '../usuario/usuario.module';
InstitucionTipoCarritoModule,
InstitucionTipoEntradaModule,
InstitucionUsuarioModule,
MarcaModule,
ModeloModule,
ModuloModule,
MulterModule.register({
dest: './upload',
+19 -3
View File
@@ -12,6 +12,8 @@ import { InstitucionProgramaService } from '../institucion-programa/institucion-
import { InstitucionTipoCarritoService } from '../institucion-tipo-carrito/institucion-tipo-carrito.service';
import { InstitucionTipoEntradaService } from '../institucion-tipo-entrada/institucion-tipo-entrada.service';
import { InstitucionUsuarioService } from '../institucion-usuario/institucion-usuario.service';
import { MarcaService } from '../marca/marca.service';
import { ModeloService } from '../modelo/modelo.service';
import { ModuloService } from '../modulo/modulo.service';
import { TipoUsuarioService } from '../tipo-usuario/tipo-usuario.service';
import { UsuarioService } from '../usuario/usuario.service';
@@ -31,6 +33,8 @@ export class UploadFileService {
private institucionTipoCarritoService: InstitucionTipoCarritoService,
private institucionTipoEntradaService: InstitucionTipoEntradaService,
private institucionUsuarioService: InstitucionUsuarioService,
private marcaService: MarcaService,
private modeloService: ModeloService,
private moduloService: ModuloService,
private tipoUsuarioService: TipoUsuarioService,
private usuarioService: UsuarioService,
@@ -92,6 +96,16 @@ export class UploadFileService {
equipos[i].modulo,
false,
);
const marca = await this.marcaService.findByMarca(
equipos[i].marca,
'e',
false,
);
const modelo = await this.modeloService.findByModelo(
equipos[i].modelo,
'e',
false,
);
const carrito =
tipoCarrito && modulo
? await this.carritoService.findCarrito(
@@ -109,8 +123,10 @@ export class UploadFileService {
)
: null;
if (!tipoCarrito || !modulo || !carrito) {
if (!tipoCarrito || !marca || !modelo || !modulo || !carrito) {
if (!tipoCarrito) error += ' no existe este tipo de carrito.';
if (!marca) error += ' no existe esta marca.';
if (!modelo) error += ' no existe este modelo.';
if (!modulo) error += ' no existe este módulo.';
if (!carrito) error += ' no existe este carrito.';
errores.push(error);
@@ -137,8 +153,8 @@ export class UploadFileService {
equipos[i].equipo,
equipos[i].numero_inventario,
equipos[i].numero_serie,
equipos[i].marca,
equipos[i].modelo,
marca,
modelo,
);
const entradas = equipos[i].entradas.split(',');