This commit is contained in:
Felipe Batista
2025-01-27 17:44:27 -03:00
commit 47e7f75720
238 changed files with 36425 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
import { DepartmentService } from './department.service';
import { CacheInterceptor, Controller, Get, HttpException, HttpStatus, UseInterceptors } from '@nestjs/common';
import { ApiExcludeEndpoint, ApiTags } from '@nestjs/swagger';
import { ResultModel } from 'src/domain/models/result.model';
@ApiTags('BackOffice')
@Controller('api/v1/department')
export class DepartmentController {
constructor(private readonly departmentService: DepartmentService){}
@Get()
@UseInterceptors(CacheInterceptor)
@ApiExcludeEndpoint()
async getAll() {
try {
const departments = await this.departmentService.findAll();
return new ResultModel(true, null, departments, []);
} catch (error) {
throw new HttpException(new ResultModel(false, 'Não foi possível consultar lista de departamentos', {}, error), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@Get('all')
@UseInterceptors(CacheInterceptor)
async get() {
try {
const departments = await this.departmentService.findDepartments();
return new ResultModel(true, null, departments, []);
} catch (error) {
throw new HttpException(new ResultModel(false, 'Não foi possível consultar lista de departamentos', {}, error), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}

View File

@@ -0,0 +1,14 @@
import { Pcdepto } from '../../domain/entity/tables/pcdepto.entity';
import { DepartmentService } from './department.service';
import { DepartmentController } from './department.controller';
import { CacheModule, Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [ CacheModule.register(),
TypeOrmModule.forFeature([Pcdepto])],
controllers: [DepartmentController,],
providers: [DepartmentService,],
})
export class DepartmentModule { }

View File

@@ -0,0 +1,47 @@
import { Pcdepto } from 'src/domain/entity/tables/pcdepto.entity';
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { getConnection, Repository } from 'typeorm';
import { Esvdepartamento } from 'src/domain/entity/views/esvdepartamento.entity';
@Injectable()
export class DepartmentService {
constructor( @InjectRepository(Pcdepto)
private departmentRepository: Repository<Pcdepto>){}
async findAll(): Promise<Pcdepto[]> {
return await this.departmentRepository
.createQueryBuilder('pcdepto')
.leftJoinAndSelect("pcdepto.secoes", "secoes")
.leftJoinAndSelect("pcsecao.categoria", "categoria")
.select('"pcdepto".codepto', 'codigoDepartamento')
.addSelect('concat(concat("pcdepto".codepto, \' - \'),"pcdepto".descricao)', 'descricaoDepartamento')
// .addSelect('concat(concat(concat("pcdepto".descricao, \' (\'),"pcdepto".codepto),\')\')', 'descricaoDepartamento')
.where('codepto <> 9999')
.getRawMany();
}
async findDepartments() {
const connection = getConnection();
const queryRunner = connection.createQueryRunner();
await queryRunner.connect();
try {
const departments = await queryRunner.manager
.getRepository(Esvdepartamento)
.createQueryBuilder('esvdepartamento')
.innerJoinAndSelect('esvdepartamento.secoes', 'secoes')
.innerJoinAndSelect('secoes.categorias', 'itens')
.where('\"esvdepartamento\".codepto <> 9999')
.orderBy("\"esvdepartamento\".DESCRICAO")
.getMany();
return departments;
} catch (error) {
console.log(error);
throw error;
} finally {
await queryRunner.release();
}
}
}