Criação do handler de autenticação, para um futuro microserviço de auth

This commit is contained in:
unknown
2025-03-31 08:31:14 -03:00
parent 2fd5ae2b1f
commit 69e10717e8
18 changed files with 433 additions and 748 deletions

View File

@@ -0,0 +1,215 @@
// src/modules/orders/infrastructure/repositories/orders.repository.ts
import { Injectable } from '@nestjs/common';
import { DataSource } from 'typeorm';
import { InjectDataSource } from '@nestjs/typeorm';
import { createOracleConfig } from '../../core/configs/typeorm.oracle.config';
import { FindOrdersDto } from '../dto/find-orders.dto';
@Injectable()
export class OrdersRepository {
constructor(
@InjectDataSource('oracle') private readonly dataSource: DataSource
) {}
async findOrders(query: FindOrdersDto): Promise<any[]> {
await this.dataSource.initialize();
const queryRunner = this.dataSource.createQueryRunner();
await queryRunner.connect();
try {
let sql = `SELECT PCPEDC.DATA as "createDate"
,PCPEDC.CODFILIAL || CASE WHEN PCPEDC.CODFILIALLOJA IS NOT NULL THEN
' - Pre-Box ('||PCPEDC.CODFILIALLOJA||')'
ELSE NULL END as "storeId"
,PCPEDC.NUMPED as "orderId"
,PCPEDC.CODCLI as "customerId"
,PCPEDC.CODCLI||' - '||PCCLIENT.CLIENTE as "customerName"
,PCPEDC.CODUSUR as "sellerId"
,PCPEDC.CODUSUR||' - '||PCUSUARI.NOME as "sellerName"
,PCSUPERV.NOME as "store"
,( SELECT CASE WHEN PCPEDI.TIPOENTREGA = 'EN' THEN 'Entrega ('||PCPEDI.TIPOENTREGA||')'
WHEN PCPEDI.TIPOENTREGA = 'EF' THEN 'Entrega Futura ('||PCPEDI.TIPOENTREGA||')'
WHEN PCPEDI.TIPOENTREGA = 'RP' THEN 'Retira Posterior ('||PCPEDI.TIPOENTREGA||')'
WHEN PCPEDI.TIPOENTREGA = 'RI' THEN 'Retira Imediata ('||PCPEDI.TIPOENTREGA||')'
ELSE 'Não Informado' END
FROM PCPEDI
WHERE PCPEDI.NUMPED = PCPEDC.NUMPED
AND ROWNUM = 1 ) as "deliveryType"
,CASE WHEN NVL(PCPEDC.CODENDENTCLI,0) = 0 THEN
( SELECT PCPRACA.CODPRACA||'-'||PCPRACA.PRACA
FROM PCPRACA
WHERE PCPRACA.CODPRACA = PCPEDC.CODPRACA )
ELSE ( SELECT PCPRACA.CODPRACA||'-'||PCPRACA.PRACA
FROM PCCLIENTENDENT, PCPRACA
WHERE PCCLIENTENDENT.CODCLI = PCPEDC.CODCLI
AND PCCLIENTENDENT.CODENDENTCLI = PCPEDC.CODENDENTCLI
AND PCCLIENTENDENT.CODPRACAENT = PCPRACA.CODPRACA ) END as "deliveryLocal"
,CASE WHEN NVL(PCPEDC.CODENDENTCLI,0) = 0 THEN
( SELECT PCROTAEXP.CODROTA||'-'||PCROTAEXP.DESCRICAO
FROM PCPRACA, PCROTAEXP
WHERE PCPRACA.CODPRACA = PCPEDC.CODPRACA
AND PCPRACA.ROTA = PCROTAEXP.CODROTA )
ELSE ( SELECT PCROTAEXP.CODROTA||'-'||PCROTAEXP.DESCRICAO
FROM PCCLIENTENDENT, PCPRACA, PCROTAEXP
WHERE PCCLIENTENDENT.CODCLI = PCPEDC.CODCLI
AND PCCLIENTENDENT.CODENDENTCLI = PCPEDC.CODENDENTCLI
AND PCCLIENTENDENT.CODPRACAENT = PCPRACA.CODPRACA
AND PCPRACA.ROTA = PCROTAEXP.CODROTA ) END as "masterDeliveryLocal"
,CASE WHEN PCPEDC.CONDVENDA = 1 THEN 'TV1 - Retira Imediata'
WHEN PCPEDC.CONDVENDA = 7 THEN 'TV7 - Faturamento'
WHEN PCPEDC.CONDVENDA = 8 THEN 'TV8 - Entrega (' ||
( SELECT PCPEDI.TIPOENTREGA FROM PCPEDI
WHERE PCPEDI.NUMPED = PCPEDC.NUMPED
AND ROWNUM = 1 ) ||')'
WHEN PCPEDC.CONDVENDA = 10 THEN 'TV10 - Transferência'
ELSE 'Outros' END as "orderType"
,CASE WHEN PCPEDC.POSICAO = 'P' THEN 'Pendente'
WHEN PCPEDC.POSICAO = 'B' THEN 'Bloqueado'
WHEN PCPEDC.POSICAO = 'L' THEN 'Liberado'
WHEN PCPEDC.POSICAO = 'M' THEN 'Montado'
WHEN PCPEDC.POSICAO = 'F' THEN 'Faturado'
WHEN PCPEDC.POSICAO = 'C' THEN 'Cancelado'
END as "status"
,CASE WHEN PCPEDC.CONDVENDA IN (1,7) THEN PCPEDC.VLATEND ELSE PCPEDC.VLTOTAL END as "amount"
,PCPEDC.DTENTREGA as "deliveryDate"
,CASE WHEN PCPEDC.tipoprioridadeentrega = 'B' THEN 'Baixa'
WHEN PCPEDC.TIPOPRIORIDADEENTREGA = 'M' THEN 'Média'
WHEN PCPEDC.TIPOPRIORIDADEENTREGA = 'A' THEN 'Alta'
ELSE 'Não Definido' END as "deliveryPriority"
,PCPEDC.NUMCAR as "shipmentId"
,PCPEDC.DTLIBERA as "releaseDate"
,PCPEDC.CODFUNCLIBERA as "releaseUser"
,PCPEDC.CODFUNCLIBERA||'-'||
(SELECT PCEMPR.NOME FROM PCEMPR WHERE PCEMPR.MATRICULA = PCPEDC.CODFUNCLIBERA) as "releaseUserName"
,PCCARREG.DTSAIDA as "shipmentDate"
,PCCARREG.DATAMON as "shipmentDateCreate"
,CASE WHEN PCPEDC.NUMCAR = 0 THEN NULL
ELSE PCCARREG.DTFECHA END as "shipmentCloseDate"
,PCPEDC.CODPLPAG as "paymentId"
,PCPLPAG.DESCRICAO as "paymentName"
,PCPEDC.CODCOB as "billingId"
,PCPEDC.CODCOB||'-'||
PCCOB.COBRANCA as "billingName"
,PCPEDC.DTFAT as "invoiceDate"
,PCPEDC.HORAFAT as "invoiceHour"
,PCPEDC.MINUTOFAT as "invoiceMinute"
,PCPEDC.NUMNOTA as "invoiceNumber"
,PCPEDC.MOTIVOPOSICAO as "BloqDescription"
,PCNFSAID.DTCANHOTO as "confirmDeliveryDate"
,PCPEDC.TOTPESO as "totalWeigth"
,CASE WHEN PCNFSAID.DTCANHOTO IS NOT NULL THEN 4
WHEN PCPEDC.POSICAO = 'F' THEN 3
WHEN PCPEDC.DTFINALSEP IS NOT NULL THEN 2
WHEN PCPEDC.POSICAO = 'M' THEN 1
WHEN PCPEDC.POSICAO IN ('L', 'P', 'B') THEN 0
ELSE 0 END as "processOrder"
,( SELECT COUNT(1) FROM PCPREST, PCNFSAID, PCPEDC PED_VGER
WHERE PCPREST.NUMTRANSVENDA = PCNFSAID.NUMTRANSVENDA
AND PCNFSAID.NUMTRANSVENDA = PED_VGER.NUMTRANSVENDA
AND PED_VGER.NUMPED = PCPEDC.NUMPEDENTFUT
AND PCPREST.DTPAG IS NULL
AND PCPREST.CODCOB = 'VGER' ) as "payment"
,MOTORISTA.MATRICULA || ' - ' || MOTORISTA.NOME as "driver"
,PCPEDC.NUMPEDENTFUT as "orderSaleId"
,PCVEICUL.DESCRICAO||' ( '|| PCVEICUL.PLACA||' )' as "carDescription"
,PCVEICUL.PLACA as "carIdentification"
,PCPEDC.CODFORNECFRETE||' - '||PCFORNEC.FORNECEDOR as "carrier"
,CASE WHEN (SELECT COUNT(1) FROM PCNFENT, PCFILIAL
WHERE PCFILIAL.CODIGO = PCPEDC.CODFILIAL
AND PCFILIAL.CODFORNEC = PCNFENT.CODFORNEC
AND PCNFENT.NUMNOTA = PCPEDC.NUMNOTA ) = 0
AND PCPEDC.CONDVENDA = 10
AND PCPEDC.POSICAO = 'F' THEN 'Em Trânsito'
WHEN PCPEDC.POSICAO = 'M'
AND PCPEDC.CONDVENDA = 10 THEN 'Em Separação'
WHEN PCPEDC.POSICAO IN ( 'L', 'P' )
AND PCPEDC.CONDVENDA = 10 THEN 'Aguardando Separação'
WHEN PCPEDC.CONDVENDA NOT IN ( 10 ) THEN NULL
ELSE 'Concluída' END as "statusTransfer"
,PCPEDC.CODFILIALLOJA as "storePreBox"
FROM PCPEDC, PCCLIENT, PCUSUARI, PCSUPERV, PCCOB, PCPLPAG, PCCARREG, PCNFSAID,
PCEMPR MOTORISTA, PCVEICUL, PCFORNEC
WHERE PCPEDC.CODCLI = PCCLIENT.CODCLI
AND PCPEDC.CODUSUR = PCUSUARI.CODUSUR
AND PCPEDC.CODPLPAG = PCPLPAG.CODPLPAG
AND PCPEDC.CODCOB = PCCOB.CODCOB
AND PCPEDC.CODSUPERVISOR = PCSUPERV.CODSUPERVISOR
AND PCPEDC.NUMTRANSVENDA = PCNFSAID.NUMTRANSVENDA (+)
AND PCPEDC.NUMCAR = PCCARREG.NUMCAR (+)
AND PCCARREG.CODMOTORISTA = MOTORISTA.MATRICULA (+)
AND PCCARREG.CODVEICULO = PCVEICUL.CODVEICULO (+)
AND PCPEDC.CODFORNECFRETE = PCFORNEC.CODFORNEC (+)`;
const conditions: string[] = [];
if (query.storeId) {
conditions.push(`AND PCPEDC.CODFILIAL = :storeId`);
}
if (query.storeStockId) {
conditions.push(`AND EXISTS(SELECT 1 FROM PCPEDI WHERE PCPEDI.NUMPED = PCPEDC.NUMPED AND PCPEDI.CODFILIALRETIRA = :storeStockId)`);
}
if (query.sellerId) {
conditions.push(`AND PCPEDC.CODUSUR = :sellerId`);
}
if (query.customerId) {
conditions.push(`AND PCPEDC.CODCLI = :customerId`);
}
if (query.billingId) {
conditions.push(`AND PCPEDC.CODCOB = :billingId`);
}
if (query.orderId) {
conditions.push(`AND (PCPEDC.NUMPED = :orderId OR PCPEDC.NUMPEDENTFUT = :orderId)`);
}
if (query.invoiceId) {
conditions.push(`AND PCPEDC.NUMNOTA = :invoiceId`);
}
if (query.productId) {
conditions.push(`AND EXISTS(SELECT 1 FROM PCPEDI WHERE PCPEDI.NUMPED = PCPEDC.NUMPED AND PCPEDI.CODPROD = :productId)`);
}
if (query.createDateIni) {
conditions.push(`AND PCPEDC.DATA >= TO_DATE(:createDateIni, 'YYYY-MM-DD')`);
}
if (query.createDateEnd) {
conditions.push(`AND PCPEDC.DATA <= TO_DATE(:createDateEnd, 'YYYY-MM-DD')`);
}
if (query.invoiceDateIni) {
conditions.push(`AND PCPEDC.DTFAT >= TO_DATE(:invoiceDateIni, 'YYYY-MM-DD')`);
}
if (query.invoiceDateEnd) {
conditions.push(`AND PCPEDC.DTFAT <= TO_DATE(:invoiceDateEnd, 'YYYY-MM-DD')`);
}
if (query.shippimentId) {
conditions.push(`AND PCPEDC.NUMCAR = :shippimentId`);
}
if (query.deliveryType) {
const types = query.deliveryType.split(',').map(t => `'${t}'`).join(',');
conditions.push(`AND EXISTS(SELECT 1 FROM PCPEDI WHERE PCPEDI.NUMPED = PCPEDC.NUMPED AND PCPEDI.TIPOENTREGA IN (${types}))`);
}
if (query.status) {
const statusList = query.status.split(',').map(s => `'${s}'`).join(',');
conditions.push(`AND PCPEDC.POSICAO IN (${statusList})`);
}
if (query.type) {
const types = query.type.split(',').map(t => `'${t}'`).join(',');
conditions.push(`AND PCPEDC.CONDVENDA IN (${types})`);
}
if (query.onlyPendentingTransfer === 'S') {
conditions.push(`
AND NOT EXISTS(SELECT 1 FROM PCNFENT, PCFILIAL
WHERE PCFILIAL.CODIGO = PCPEDC.CODFILIAL
AND PCFILIAL.CODFORNEC = PCNFENT.CODFORNEC
AND PCNFENT.NUMNOTA = PCPEDC.NUMNOTA)`);
}
sql += '\n' + conditions.join('\n');
sql += '\nAND ROWNUM < 5000';
const orders = await queryRunner.manager.query(sql);
return orders;
} finally {
await queryRunner.release();
await this.dataSource.destroy();
}
}
}