equipo motivo service final

This commit is contained in:
lemuel 2022-12-20 06:28:45 -06:00
parent 323f30b748
commit 01220db339
6 changed files with 63 additions and 46 deletions

View File

@ -57,7 +57,7 @@ export class CarritoMotivoService {
throw new ForbiddenException( throw new ForbiddenException(
'No puedes acceder a esta información porque no le pertenece a tu institución.', 'No puedes acceder a esta información porque no le pertenece a tu institución.',
); );
// Si se mandó página significa que quiere paginación // Si se mandó página significa que requiere paginación
if (pagina) { if (pagina) {
options.skip = (pagina - 1) * 25; options.skip = (pagina - 1) * 25;
options.take = 25; options.take = 25;

View File

@ -132,7 +132,7 @@ export class CarritoService {
if (modulo) busqueda.id_modulo = modulo.id_modulo; if (modulo) busqueda.id_modulo = modulo.id_modulo;
if (tipoCarrito) busqueda.id_tipo_carrito = tipoCarrito.id_tipo_carrito; if (tipoCarrito) busqueda.id_tipo_carrito = tipoCarrito.id_tipo_carrito;
options.where = busqueda; options.where = busqueda;
// Si los filtros tienen el atributo página significa que quiere paginación // Si los filtros tienen el atributo página significa que requiere paginación
if (filtros.pagina) { if (filtros.pagina) {
options.skip = (parseInt(filtros.pagina) - 1) * 25; options.skip = (parseInt(filtros.pagina) - 1) * 25;
options.take = 25; options.take = 25;

View File

@ -0,0 +1,6 @@
import { IsNumberString } from 'class-validator';
export class ReporteDto {
@IsNumberString()
id_equipo: string;
}

View File

@ -11,6 +11,7 @@ import { EquipoMotivoService } from './equipo-motivo.service';
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service'; import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
import { Operador } from '../operador/entity/operador.entity'; import { Operador } from '../operador/entity/operador.entity';
import { IdEquipoPaginaDto } from '../dto/input/id-equipo-pagina.dto'; import { IdEquipoPaginaDto } from '../dto/input/id-equipo-pagina.dto';
import { ReporteDto } from './dto/input/reporte.dto';
import { EquipoMotivoOutputDto } from './dto/output/equipo-motivo.dto'; import { EquipoMotivoOutputDto } from './dto/output/equipo-motivo.dto';
@Controller('equipo-motivo') @Controller('equipo-motivo')
@ -44,30 +45,31 @@ export class EquipoMotivoController {
this.validarUsuarioService.validarAdminOperador(operador); this.validarUsuarioService.validarAdminOperador(operador);
return this.equipoMotivoService.findAllByIdEquipo( return this.equipoMotivoService.findAllByIdEquipo(
operador,
parseInt(query.id_equipo), parseInt(query.id_equipo),
parseInt(query.pagina), parseInt(query.pagina),
); );
} }
// @Serealize(EquipoMotivoOutputDto) @Serealize(EquipoMotivoOutputDto)
// @Get('reporte') @Get('reporte')
// @UseGuards(AuthGuard('jwt')) @UseGuards(AuthGuard('jwt'))
// @ApiOperation({ @ApiOperation({
// description: 'Reporte de todos los cambios de status de un equipo.', description: 'Reporte de todos los cambios de status de un equipo.',
// }) })
// @ApiBearerAuth('jwt') @ApiBearerAuth('jwt')
// @ApiQuery({ @ApiQuery({
// description: 'Id del equipo.', description: 'Id del equipo.',
// name: 'id_equipo', name: 'id_equipo',
// type: 'string', type: 'string',
// }) })
// reporte(@Request() req, @Query() query: IdEquipoPaginaDto) { reporte(@Request() req, @Query() query: ReporteDto) {
// const admin: Operador = req.user.operador; const admin: Operador = req.user.operador;
// this.validarUsuarioService.validarAdmin(admin); this.validarUsuarioService.validarAdmin(admin);
// return this.equipoMotivoService.findAllByIdEquipo( return this.equipoMotivoService.findAllByIdEquipo(
// parseInt(query.id_equipo), admin,
// parseInt(query.pagina), parseInt(query.id_equipo),
// ); );
// } }
} }

View File

@ -5,14 +5,10 @@ import { EquipoMotivoController } from './equipo-motivo.controller';
import { EquipoMotivoService } from './equipo-motivo.service'; import { EquipoMotivoService } from './equipo-motivo.service';
import { EquipoMotivo } from './entity/equipo-motivo.entity'; import { EquipoMotivo } from './entity/equipo-motivo.entity';
import { EquipoModule } from '../equipo/equipo.module'; import { EquipoModule } from '../equipo/equipo.module';
import { OperadorModule } from '../operador/operador.module';
import { StatusModule } from '../status/status.module';
@Module({ @Module({
imports: [ imports: [
forwardRef(() => EquipoModule), forwardRef(() => EquipoModule),
OperadorModule,
StatusModule,
PassportModule.register({ defaultStrategy: 'jwt' }), PassportModule.register({ defaultStrategy: 'jwt' }),
TypeOrmModule.forFeature([EquipoMotivo]), TypeOrmModule.forFeature([EquipoMotivo]),
], ],

View File

@ -1,14 +1,17 @@
import * as moment from 'moment'; import * as moment from 'moment';
import { forwardRef, Inject, Injectable } from '@nestjs/common'; import {
ForbiddenException,
forwardRef,
Inject,
Injectable,
} from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm'; import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm'; import { FindManyOptions, Repository } from 'typeorm';
import { Equipo } from '../equipo/entity/equipo.entity'; import { Equipo } from '../equipo/entity/equipo.entity';
import { EquipoMotivo } from './entity/equipo-motivo.entity'; import { EquipoMotivo } from './entity/equipo-motivo.entity';
import { Operador } from '../operador/entity/operador.entity'; import { Operador } from '../operador/entity/operador.entity';
import { Status } from '../status/entity/status.entity'; import { Status } from '../status/entity/status.entity';
import { EquipoService } from '../equipo/equipo.service'; import { EquipoService } from '../equipo/equipo.service';
import { OperadorService } from '../operador/operador.service';
import { StatusService } from '../status/status.service';
@Injectable() @Injectable()
export class EquipoMotivoService { export class EquipoMotivoService {
@ -17,8 +20,6 @@ export class EquipoMotivoService {
private repository: Repository<EquipoMotivo>, private repository: Repository<EquipoMotivo>,
@Inject(forwardRef(() => EquipoService)) @Inject(forwardRef(() => EquipoService))
private equipoService: EquipoService, private equipoService: EquipoService,
private operadorService: OperadorService,
private statusService: StatusService,
) {} ) {}
async create( async create(
@ -26,28 +27,40 @@ export class EquipoMotivoService {
operador: Operador, operador: Operador,
status: Status, status: Status,
motivo: string, motivo: string,
) { ): Promise<EquipoMotivo> {
const ahora = moment(); // Cramos y guardamos registro
// Creo registro y lo guardo
return this.repository.save( return this.repository.save(
this.repository.create({ this.repository.create({
equipo, fecha_creacion: moment().toDate(),
fecha_creacion: ahora.toDate(),
motivo, motivo,
equipo,
operador, operador,
status, status,
}), }),
); );
} }
findAllByIdEquipo(id_equipo: number, pagina: number) { async findAllByIdEquipo(
return this.equipoService.findById(id_equipo).then((equipo) => operador: Operador,
this.repository.findAndCount({ id_equipo: number,
where: { equipo }, pagina?: number,
skip: (pagina - 1) * 25, ): Promise<EquipoMotivo[] | [EquipoMotivo[], number]> {
take: 25, const equipo = await this.equipoService.findById(id_equipo);
}), const options: FindManyOptions<EquipoMotivo> = { where: { equipo } };
);
// Validamos que el equipo pertenezca a la institución del operador
if (
equipo.carrito.modulo.institucion.id_institucion !=
operador.institucion.id_institucion
)
throw new ForbiddenException(
'No puedes acceder a esta información porque no le pertenece a tu institución.',
);
// Si se mandó página significa que quiere paginación
if (pagina) {
options.skip = (pagina - 1) * 25;
options.take = 25;
return this.repository.findAndCount(options);
} else return this.repository.find(options);
} }
} }