reporte laboratorio movil
This commit is contained in:
@@ -10,9 +10,11 @@ import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { CarritoMotivoService } from './carrito-motivo.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { GetDto } from './dto/input/get.dto';
|
||||
import { CarritoMotivoOutputDto } from './dto/output/carrito-motivo.dto';
|
||||
import { CarritoDto } from '../carrito/dto/input/carrito.dto';
|
||||
import { GetDto } from './dto/input/get.dto';
|
||||
import { LaboratorioMovilDto } from './dto/input/laboratorio-movil.dto';
|
||||
import { CarritoMotivoOutputDto } from './dto/output/carrito-motivo.dto';
|
||||
import { CarritoMotivoLabMovilOutputDto } from './dto/output/carrito-motivo-lab-movil.dto';
|
||||
|
||||
@Controller('carrito-motivo')
|
||||
@ApiTags('carrito-motivo')
|
||||
@@ -51,6 +53,48 @@ export class CarritoMotivoController {
|
||||
);
|
||||
}
|
||||
|
||||
@Serealize(CarritoMotivoLabMovilOutputDto)
|
||||
@Get('laboratorio-movil')
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@ApiOperation({ description: 'Reporte de laboratorio móvil.' })
|
||||
@ApiBearerAuth('jwt')
|
||||
@ApiQuery({
|
||||
description: 'Carrito que se desea buscar.',
|
||||
name: 'carrito',
|
||||
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',
|
||||
type: 'string',
|
||||
required: false,
|
||||
})
|
||||
@ApiQuery({
|
||||
description: 'Id del tipo de carrito.',
|
||||
name: 'id_tipo_carrito',
|
||||
type: 'string',
|
||||
required: false,
|
||||
})
|
||||
laboratorioMovil(@Request() req, @Query() query: LaboratorioMovilDto) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
this.validarUsuarioService.validarAdmin(admin);
|
||||
return this.carritoMotivoService.findAllLaboratorioMovil(admin, query);
|
||||
}
|
||||
|
||||
@Serealize(CarritoMotivoOutputDto)
|
||||
@Get('reporte')
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
|
||||
@@ -5,11 +5,19 @@ import { CarritoMotivoController } from './carrito-motivo.controller';
|
||||
import { CarritoMotivoService } from './carrito-motivo.service';
|
||||
import { CarritoMotivo } from './entity/carrito-motivo.entity';
|
||||
import { CarritoModule } from '../carrito/carrito.module';
|
||||
import { InstitucionTipoCarritoModule } from '../institucion-tipo-carrito/institucion-tipo-carrito.module';
|
||||
import { MarcaModule } from '../marca/marca.module';
|
||||
import { ModeloModule } from '../modelo/modelo.module';
|
||||
import { ModuloModule } from '../modulo/modulo.module';
|
||||
import { StatusModule } from '../status/status.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
forwardRef(() => CarritoModule),
|
||||
InstitucionTipoCarritoModule,
|
||||
MarcaModule,
|
||||
ModeloModule,
|
||||
ModuloModule,
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
StatusModule,
|
||||
TypeOrmModule.forFeature([CarritoMotivo]),
|
||||
|
||||
@@ -6,11 +6,15 @@ import {
|
||||
Injectable,
|
||||
} from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { FindManyOptions, Repository } from 'typeorm';
|
||||
import { FindManyOptions, FindOptionsWhere, Repository } from 'typeorm';
|
||||
import { Carrito } from '../carrito/entity/carrito.entity';
|
||||
import { CarritoMotivo } from './entity/carrito-motivo.entity';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { CarritoService } from '../carrito/carrito.service';
|
||||
import { InstitucionTipoCarritoService } from '../institucion-tipo-carrito/institucion-tipo-carrito.service';
|
||||
import { MarcaService } from '../marca/marca.service';
|
||||
import { ModeloService } from '../modelo/modelo.service';
|
||||
import { ModuloService } from '../modulo/modulo.service';
|
||||
|
||||
@Injectable()
|
||||
export class CarritoMotivoService {
|
||||
@@ -19,6 +23,10 @@ export class CarritoMotivoService {
|
||||
private repository: Repository<CarritoMotivo>,
|
||||
@Inject(forwardRef(() => CarritoService))
|
||||
private carritoService: CarritoService,
|
||||
private institucionTipoCarritoService: InstitucionTipoCarritoService,
|
||||
private marcaService: MarcaService,
|
||||
private modeloService: ModeloService,
|
||||
private moduloService: ModuloService,
|
||||
) {}
|
||||
|
||||
create(
|
||||
@@ -42,17 +50,17 @@ export class CarritoMotivoService {
|
||||
}
|
||||
|
||||
async findAllByIdCarrito(
|
||||
operador: Operador,
|
||||
admin: Operador,
|
||||
id_carrito: number,
|
||||
pagina?: number,
|
||||
): Promise<CarritoMotivo[] | [CarritoMotivo[], number]> {
|
||||
const carrito = await this.carritoService.findById(id_carrito);
|
||||
const options: FindManyOptions<CarritoMotivo> = { where: { carrito } };
|
||||
|
||||
// Validamos que el carrito pertenezca a la institución del operador
|
||||
// Validamos que el carrito pertenezca a la institución del admin
|
||||
if (
|
||||
carrito.modulo.institucion.id_institucion !=
|
||||
operador.institucion.id_institucion
|
||||
admin.institucion.id_institucion
|
||||
)
|
||||
throw new ForbiddenException(
|
||||
'No puedes acceder a esta información porque no le pertenece a tu institución.',
|
||||
@@ -64,4 +72,54 @@ export class CarritoMotivoService {
|
||||
return this.repository.findAndCount(options);
|
||||
} else return this.repository.find(options);
|
||||
}
|
||||
|
||||
async findAllLaboratorioMovil(
|
||||
admin: Operador,
|
||||
filtros: {
|
||||
carrito?: string;
|
||||
id_marca?: string;
|
||||
id_modelo?: string;
|
||||
id_modulo?: string;
|
||||
id_tipo_carrito?: string;
|
||||
},
|
||||
): Promise<CarritoMotivo[]> {
|
||||
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;
|
||||
const tipoCarrito = filtros.id_tipo_carrito
|
||||
? await this.institucionTipoCarritoService.findTipoCarritoById(
|
||||
parseInt(filtros.id_tipo_carrito),
|
||||
)
|
||||
: null;
|
||||
const busquedaCarrito: FindOptionsWhere<Carrito> = {
|
||||
modulo: { institucion: admin.institucion },
|
||||
};
|
||||
const busqueda: FindOptionsWhere<CarritoMotivo> = {
|
||||
laboratorioMovil: true,
|
||||
};
|
||||
|
||||
if (filtros.carrito) busquedaCarrito.carrito = filtros.carrito;
|
||||
if (marca) busquedaCarrito.marca = marca;
|
||||
if (modelo) busquedaCarrito.modelo = modelo;
|
||||
if (modulo) busquedaCarrito.modulo = modulo;
|
||||
if (tipoCarrito) busquedaCarrito.tipoCarrito = tipoCarrito;
|
||||
busqueda.carrito = busquedaCarrito;
|
||||
return this.repository.find({
|
||||
join: {
|
||||
alias: 'cmo',
|
||||
innerJoinAndSelect: {
|
||||
c: 'cmo.carrito',
|
||||
m: 'c.modulo',
|
||||
i: 'm.institucion',
|
||||
},
|
||||
},
|
||||
where: busqueda,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
import {
|
||||
IsNotEmpty,
|
||||
IsNumberString,
|
||||
IsOptional,
|
||||
IsString,
|
||||
} from 'class-validator';
|
||||
|
||||
export class LaboratorioMovilDto {
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
@IsOptional()
|
||||
carrito?: string;
|
||||
|
||||
@IsNumberString()
|
||||
@IsOptional()
|
||||
id_marca?: string;
|
||||
|
||||
@IsNumberString()
|
||||
@IsOptional()
|
||||
id_modelo?: string;
|
||||
|
||||
@IsNumberString()
|
||||
@IsOptional()
|
||||
id_modulo?: string;
|
||||
|
||||
@IsNumberString()
|
||||
@IsOptional()
|
||||
id_tipo_carrito?: string;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
import { Expose, Type } from 'class-transformer';
|
||||
import { CarritoMinOutputDto } from '../../../carrito/dto/output/carrito-min.dto';
|
||||
import { OperadorMinOutputDto } from '../../../operador/dto/output/operador-min.dto';
|
||||
|
||||
export class CarritoMotivoLabMovilOutputDto {
|
||||
@Expose()
|
||||
id_motivo;
|
||||
|
||||
@Expose()
|
||||
fecha_creacion;
|
||||
|
||||
@Expose()
|
||||
laboratorioMovil;
|
||||
|
||||
@Expose()
|
||||
motivo;
|
||||
|
||||
@Expose()
|
||||
@Type(() => CarritoMinOutputDto)
|
||||
carrito;
|
||||
|
||||
@Expose()
|
||||
@Type(() => OperadorMinOutputDto)
|
||||
operador;
|
||||
}
|
||||
@@ -14,9 +14,6 @@ export class CarritoMotivoOutputDto {
|
||||
@Expose()
|
||||
motivo;
|
||||
|
||||
@Expose()
|
||||
status;
|
||||
|
||||
@Expose()
|
||||
@Type(() => OperadorMinOutputDto)
|
||||
operador;
|
||||
|
||||
Reference in New Issue
Block a user