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,61 @@
/*
https://docs.nestjs.com/controllers#controllers
*/
import { Body, Controller, Delete, Get, HttpException, HttpStatus, Param, Post, Query } from '@nestjs/common';
import { PartnerRange } from 'src/domain/models/partner-range.model';
import { ResultModel } from 'src/domain/models/result.model';
import { PartnerRangeService } from './partner-range.service';
import { ApiTags } from '@nestjs/swagger';
@ApiTags('BackOffice')
@Controller('api/v1/partner/range')
export class PartnerRangeController {
constructor(private partnerRangeService: PartnerRangeService) { }
@Get()
getPartnersCategory(@Query() query) {
let type = 'T';
type = query['type'];
if (query['type'] != null) {
type = query['type'];
}
try {
return this.partnerRangeService.getPartnerRanges(type);
}
catch (error) {
throw new HttpException(error.message, HttpStatus.BAD_REQUEST);
}
}
@Get(':id')
getPartnerRangeById(@Param('id') id: number) {
try {
return this.partnerRangeService.getPartnerRange(id);
}
catch (error) {
throw new HttpException(error.message, HttpStatus.BAD_REQUEST);
}
}
@Post('create')
createPartner(@Body() data: PartnerRange) {
try {
return this.partnerRangeService.createOrUpdatePartnerRange(data);
}
catch (error) {
throw new HttpException(error.message, HttpStatus.BAD_REQUEST);
}
}
@Delete('delete/:id')
async deleteRange(@Param('id') id: number) {
try {
await this.partnerRangeService.deleteRange(id);
return new ResultModel(true, 'Faixa de comissão excluída com sucesso!', null, null);
}
catch(error){
throw new HttpException(error.message, HttpStatus.BAD_REQUEST);
}
}
}

View File

@@ -0,0 +1,16 @@
import { PartnerRangeService } from './partner-range.service';
import { PartnerRangeController } from './partner-range.controller';
/*
https://docs.nestjs.com/modules
*/
import { Module } from '@nestjs/common';
@Module({
imports: [PartnerRangeService],
controllers: [
PartnerRangeController,],
providers: [
PartnerRangeService,],
})
export class PartnerRangeModule { }

View File

@@ -0,0 +1,146 @@
/*
https://docs.nestjs.com/providers#services
*/
import { Injectable } from '@nestjs/common';
import { connectionOptions } from 'src/configs/typeorm.config';
import { Estfaixaparceiro } from 'src/domain/entity/tables/estfaixaparceiro.entity';
import { PartnerRange } from 'src/domain/models/partner-range.model';
import { Connection } from 'typeorm';
@Injectable()
export class PartnerRangeService {
selectPartnerRange = 'SELECT ESTFAIXAPARCEIRO.ID AS "id" ' +
' ,ESTFAIXAPARCEIRO.TIPO AS "type" ' +
' ,CASE WHEN ESTFAIXAPARCEIRO.TIPO = \'P\' THEN \'Parceiro\' ' +
' WHEN ESTFAIXAPARCEIRO.TIPO = \'B\' THEN \'Bella Obra\' ' +
' WHEN ESTFAIXAPARCEIRO.TIPO = \'M\' THEN \'Mestre Jurunense\' ' +
' ELSE \'Não Informado\' END AS "descriptionType" ' +
' ,ESTFAIXAPARCEIRO.FAIXAINI AS "rangeIni" ' +
' ,ESTFAIXAPARCEIRO.FAIXAFIM AS "rangeFin" ' +
' ,ESTFAIXAPARCEIRO.PERCCOMISSAO AS "percentComiss" ' +
' ,ESTFAIXAPARCEIRO.DTCADASTRO AS "createDate" ' +
' ,ESTFAIXAPARCEIRO.CODFUNCCAD AS "createUserId" ' +
' ,ESTFAIXAPARCEIRO.DTALTERACAO AS "updateDate" ' +
' ,ESTFAIXAPARCEIRO.CODFUNCALT AS "updateUserId" ' +
' ,USUARIO_CADASTRO.NOME AS "createUserName" ' +
' ,USUARIO_ALTERACAO.NOME AS "updateUserName" ' +
' FROM ESTFAIXAPARCEIRO, PCEMPR USUARIO_CADASTRO, PCEMPR USUARIO_ALTERACAO ' +
' WHERE ESTFAIXAPARCEIRO.CODFUNCCAD = USUARIO_CADASTRO.MATRICULA (+) ' +
' AND ESTFAIXAPARCEIRO.CODFUNCALT = USUARIO_ALTERACAO.MATRICULA (+) ';
async getPartnerRanges(type: string) {
let sqlFilter = '';
if ( type != null && type != '' && type !== 'T') {
sqlFilter = ` AND ESTFAIXAPARCEIRO.TIPO = '${type}'`;
}
const connection = new Connection(connectionOptions);
await connection.connect();
const queryRunner = connection.createQueryRunner();
await queryRunner.connect();
try {
const partnerCategory = await queryRunner
.query(this.selectPartnerRange + sqlFilter );
return partnerCategory;
} catch (error) {
throw error;
} finally {
await queryRunner.release();
await connection.close();
}
}
async getPartnerRange(id: number) {
const connection = new Connection(connectionOptions);
await connection.connect();
const queryRunner = connection.createQueryRunner();
await queryRunner.connect();
try {
const partnerCategory = await queryRunner
.query(this.selectPartnerRange +
' AND ESTCATEGORIAPARCEIRO.ID = :1', [id]);
return partnerCategory[0];
} catch (error) {
console.log('Erro ao consultar parceiro.');
throw error;
} finally {
await queryRunner.release();
await connection.close();
}
}
async createOrUpdatePartnerRange(data: PartnerRange) {
const connection = new Connection(connectionOptions);
await connection.connect();
const queryRunner = connection.createQueryRunner();
await queryRunner.connect();
let estfaixaparceiro = await queryRunner.manager.findOne(Estfaixaparceiro, {
id: data.id,
});
await queryRunner.startTransaction();
try {
let id = 1;
if (estfaixaparceiro != null) {
id = estfaixaparceiro.id;
} else {
const queryId = await queryRunner.query('SELECT ESSFAIXAPARCEIRO.NEXTVAL AS "id" FROM DUAL');
if (queryId.length > 0) {
id = queryId[0].id;
}
}
if ( estfaixaparceiro == null ) {
estfaixaparceiro = new Estfaixaparceiro();
estfaixaparceiro.codfunccad = data.userId;
estfaixaparceiro.dtCadastro = new Date();
}
estfaixaparceiro.id = id;
estfaixaparceiro.faixaIni = data.rangeIni;
estfaixaparceiro.faixaFim = data.rangeFin;
estfaixaparceiro.percComissao = data.percentComiss;
estfaixaparceiro.codfuncalt = data.userId;
estfaixaparceiro.tipo = data.type;
estfaixaparceiro.dtAlteracao = new Date();
await queryRunner.manager.save(estfaixaparceiro);
await queryRunner.commitTransaction();
data.id = id;
return data;
} catch (error) {
await queryRunner.rollbackTransaction();
throw error;
} finally {
await queryRunner.release();
await connection.close();
}
}
async deleteRange(id: number) {
const connection = new Connection(connectionOptions);
await connection.connect();
const queryRunner = connection.createQueryRunner();
await queryRunner.connect();
await queryRunner.startTransaction();
try {
const sqlDelete = "DELETE FROM ESTFAIXAPARCEIRO WHERE ID = :ID";
await queryRunner.query(sqlDelete, [id]);
await queryRunner.commitTransaction();
} catch (error) {
await queryRunner.rollbackTransaction();
throw error;
} finally {
await queryRunner.release();
await connection.close();
}
}
}