listo
This commit is contained in:
parent
d3514a07c3
commit
f4f642ba13
25
src/modulo-motivo/dto/output/actividad-especial.ts
Normal file
25
src/modulo-motivo/dto/output/actividad-especial.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import { Expose, Type } from 'class-transformer';
|
||||
import { ModuloMinOutputDto } from '../../../modulo/dto/output/modulo-min.dto';
|
||||
import { OperadorMinOutputDto } from '../../../operador/dto/output/operador-min.dto';
|
||||
|
||||
export class ActividadEspecialOutputDto {
|
||||
@Expose()
|
||||
id_motivo;
|
||||
|
||||
@Expose()
|
||||
fecha_creacion;
|
||||
|
||||
@Expose()
|
||||
motivo;
|
||||
|
||||
@Expose()
|
||||
numero_alumnos;
|
||||
|
||||
@Expose()
|
||||
@Type(() => ModuloMinOutputDto)
|
||||
modulo;
|
||||
|
||||
@Expose()
|
||||
@Type(() => OperadorMinOutputDto)
|
||||
operador;
|
||||
}
|
@ -10,8 +10,10 @@ import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { ModuloMotivoService } from './modulo-motivo.service';
|
||||
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { IdInstitucionOptionalDto } from '../dto/input/id-institucion-optional.dto';
|
||||
import { GetDto } from './dto/input/get.dto';
|
||||
import { ModuloDto } from '../modulo/dto/input/modulo.dto';
|
||||
import { ActividadEspecialOutputDto } from './dto/output/actividad-especial';
|
||||
import { ModuloMotivoOutputDto } from './dto/output/modulo-motivo.dto';
|
||||
|
||||
@Controller('modulo-motivo')
|
||||
@ -72,4 +74,29 @@ export class ModuloMotivoController {
|
||||
parseInt(query.id_modulo),
|
||||
);
|
||||
}
|
||||
|
||||
@Serealize(ActividadEspecialOutputDto)
|
||||
@Get('reporte-actividad-especial')
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@ApiOperation({
|
||||
description: 'Reporte de todos los cambios de status de un módulo.',
|
||||
})
|
||||
@ApiBearerAuth('jwt')
|
||||
@ApiQuery({
|
||||
description: 'Id de la institución.',
|
||||
name: 'id_institucion',
|
||||
type: 'string',
|
||||
})
|
||||
reporteActividadEspecial(
|
||||
@Request() req,
|
||||
@Query() query: IdInstitucionOptionalDto,
|
||||
) {
|
||||
const admin: Operador = req.user.operador;
|
||||
|
||||
this.validarUsuarioService.validarSuperAdminAdmin(admin);
|
||||
return this.moduloMotivoService.findAllActividadEspecial(
|
||||
admin,
|
||||
parseInt(query.id_institucion),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -4,10 +4,12 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { ModuloMotivoController } from './modulo-motivo.controller';
|
||||
import { ModuloMotivoService } from './modulo-motivo.service';
|
||||
import { ModuloMotivo } from './entity/modulo-motivo.entity';
|
||||
import { InstitucionModule } from '../institucion/institucion.module';
|
||||
import { ModuloModule } from '../modulo/modulo.module';
|
||||
|
||||
@Module({
|
||||
imports: [
|
||||
InstitucionModule,
|
||||
forwardRef(() => ModuloModule),
|
||||
PassportModule.register({ defaultStrategy: 'jwt' }),
|
||||
TypeOrmModule.forFeature([ModuloMotivo]),
|
||||
|
@ -6,10 +6,11 @@ import {
|
||||
Injectable,
|
||||
} from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { FindManyOptions, Repository } from 'typeorm';
|
||||
import { FindManyOptions, FindOptionsWhere, Repository } from 'typeorm';
|
||||
import { Modulo } from '../modulo/entity/modulo.entity';
|
||||
import { ModuloMotivo } from './entity/modulo-motivo.entity';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { InstitucionService } from '../institucion/institucion.service';
|
||||
import { ModuloService } from '../modulo/modulo.service';
|
||||
|
||||
@Injectable()
|
||||
@ -17,6 +18,7 @@ export class ModuloMotivoService {
|
||||
constructor(
|
||||
@InjectRepository(ModuloMotivo)
|
||||
private repository: Repository<ModuloMotivo>,
|
||||
private institucionService: InstitucionService,
|
||||
@Inject(forwardRef(() => ModuloService))
|
||||
private moduloService: ModuloService,
|
||||
) {}
|
||||
@ -40,6 +42,26 @@ export class ModuloMotivoService {
|
||||
);
|
||||
}
|
||||
|
||||
async findAllActividadEspecial(
|
||||
admin: Operador,
|
||||
id_institucion?: number,
|
||||
): Promise<ModuloMotivo[]> {
|
||||
const institucion = id_institucion
|
||||
? await this.institucionService.findById(id_institucion)
|
||||
: null;
|
||||
const busqueda: FindOptionsWhere<ModuloMotivo> = {};
|
||||
|
||||
if (admin.institucion) busqueda.modulo = { institucion: admin.institucion };
|
||||
else if (institucion) busqueda.modulo = { institucion: institucion };
|
||||
return this.repository.find({
|
||||
join: {
|
||||
alias: 'mmo',
|
||||
innerJoinAndSelect: { m: 'mmo.modulo', i: 'm.institucion' },
|
||||
},
|
||||
where: busqueda,
|
||||
});
|
||||
}
|
||||
|
||||
async findAllByIdModulo(
|
||||
admin: Operador,
|
||||
id_modulo: number,
|
||||
|
Loading…
Reference in New Issue
Block a user