Skip to content

Commit

Permalink
Merge pull request #201 from RJ-SMTR/feature/#196-jae-cnab
Browse files Browse the repository at this point in the history
Feature/#196 jae cnab
  • Loading branch information
williamfl2007 committed Mar 5, 2024
2 parents 7733f18 + 88b4169 commit 36c9b1d
Show file tree
Hide file tree
Showing 78 changed files with 1,443 additions and 540 deletions.
4 changes: 2 additions & 2 deletions src/auth-licensee/auth-licensee.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { UsersService } from 'src/users/users.service';
import { HttpStatusMessage } from 'src/utils/enums/http-error-message.enum';
import { CommonHttpException } from 'src/utils/http-exception/common-http-exception';
import { LoginResponseType } from 'src/utils/types/auth/login-response.type';
import { NullableType } from '../utils/types/nullable.type';
import { Nullable } from '../utils/types/nullable.type';
import { AuthLicenseeLoginDto } from './dto/auth-licensee-login.dto';
import { AuthRegisterLicenseeDto } from './dto/auth-register-licensee.dto';
import { IALConcludeRegistration } from './interfaces/al-conclude-registration.interface';
Expand Down Expand Up @@ -107,7 +107,7 @@ export class AuthLicenseeService {
}
}

async validateDuplicatedUser(user: NullableType<User>) {
async validateDuplicatedUser(user: Nullable<User>) {
if (!user) {
return;
}
Expand Down
6 changes: 3 additions & 3 deletions src/auth/auth.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import { RoleEnum } from 'src/roles/roles.enum';
import { RolesGuard } from 'src/roles/roles.guard';
import { User } from '../users/entities/user.entity';
import { LoginResponseType } from '../utils/types/auth/login-response.type';
import { NullableType } from '../utils/types/nullable.type';
import { Nullable } from '../utils/types/nullable.type';
import { AuthService } from './auth.service';
import { AuthConfirmEmailDto } from './dto/auth-confirm-email.dto';
import { AuthEmailLoginDto } from './dto/auth-email-login.dto';
Expand Down Expand Up @@ -119,7 +119,7 @@ export class AuthController {
@Get('me')
@UseGuards(AuthGuard('jwt'))
@HttpCode(HttpStatus.OK)
public me(@Request() request): Promise<NullableType<User>> {
public me(@Request() request): Promise<Nullable<User>> {
return this.authService.me(request.user);
}

Expand All @@ -133,7 +133,7 @@ export class AuthController {
public update(
@Request() request,
@Body() userDto: AuthUpdateDto,
): Promise<NullableType<User>> {
): Promise<Nullable<User>> {
return this.authService.update(request.user, userDto);
}

Expand Down
11 changes: 4 additions & 7 deletions src/auth/auth.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import { HttpStatusMessage } from 'src/utils/enums/http-error-message.enum';
import { formatLog } from 'src/utils/logging';
import { User } from '../users/entities/user.entity';
import { LoginResponseType } from '../utils/types/auth/login-response.type';
import { NullableType } from '../utils/types/nullable.type';
import { Nullable } from '../utils/types/nullable.type';
import { AuthProvidersEnum } from './auth-providers.enum';
import { AuthEmailLoginDto } from './dto/auth-email-login.dto';
import { AuthRegisterLoginDto } from './dto/auth-register-login.dto';
Expand Down Expand Up @@ -106,7 +106,7 @@ export class AuthService {
authProvider: string,
socialData: SocialInterface,
): Promise<LoginResponseType> {
let user: NullableType<User>;
let user: Nullable<User>;
const socialEmail = socialData.email?.toLowerCase();

const userByEmail = await this.usersService.findOne({
Expand Down Expand Up @@ -449,16 +449,13 @@ export class AuthService {
await this.forgotService.softDelete(forgot.id);
}

async me(user: User): Promise<NullableType<User>> {
async me(user: User): Promise<Nullable<User>> {
return this.usersService.findOne({
id: user.id,
});
}

async update(
user: User,
userDto: AuthUpdateDto,
): Promise<NullableType<User>> {
async update(user: User, userDto: AuthUpdateDto): Promise<Nullable<User>> {
const userProfile = await this.usersService.findOne({ id: user.id });

if (!userProfile || !(userProfile && userProfile?.cpfCnpj)) {
Expand Down
20 changes: 17 additions & 3 deletions src/banks/banks.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Bank } from './entities/bank.entity';
import { NullableType } from 'src/utils/types/nullable.type';
import { Nullable } from 'src/utils/types/nullable.type';
import { EntityCondition } from 'src/utils/types/entity-condition.type';
import { CommonHttpException } from 'src/utils/http-exception/common-http-exception';

@Injectable()
export class BanksService {
Expand All @@ -12,13 +13,26 @@ export class BanksService {
private readonly banksRepository: Repository<Bank>,
) {}

async getAllowedBanks(): Promise<Bank[]> {
public async getAllowedBanks(): Promise<Bank[]> {
return this.banksRepository.find({ where: { isAllowed: true } });
}

findOne(fields: EntityCondition<Bank>): Promise<NullableType<Bank>> {
public findOne(fields: EntityCondition<Bank>): Promise<Nullable<Bank>> {
return this.banksRepository.findOne({
where: fields,
});
}

public async getOne(fields: EntityCondition<Bank>): Promise<Bank> {
const bank = await this.banksRepository.findOne({
where: fields,
});
if (!bank) {
const values = Object.values(fields).join(' or ');
throw CommonHttpException.notFound(
values ? `Bank.${values}` : 'any Bank',
);
}
return bank;
}
}
60 changes: 29 additions & 31 deletions src/bigquery/entities/ordem-pagamento.bigquery-entity.ts
Original file line number Diff line number Diff line change
@@ -1,90 +1,88 @@
export class BigqueryOrdemPagamento {
/** Data da ordem de pagamento (partição) */
data_ordem: Date;
data_ordem: string | null;

/** Data de pagamento da ordem */
data_pagamento: Date;
data_pagamento: string | null;

/** Nome cadastro.consorcios */
id_consorcio: string;
id_consorcio: string | null;

/** Nome do consórcio */
consorcio: string;
consorcio: string | null;

/** Identificador da operadora na tabela cadastro.operadoras */
id_operadora: string;
id_operadora: string | null;

/** Nome da operadora */
operadora: string;
operadora: string | null;

/** Nome curto da linha operada com variação de serviço (ex: 010, 011SN, ...) */
servico: string;
servico: string | null;

/** Identificador da ordem pagamento no banco de dados da Jaé */
id_ordem_pagamento: string;
id_ordem_pagamento: string | null;

/** Identificador da ordem ressarcimento no banco de dados da Jaé */
id_ordem_ressarcimento: string;
id_ordem_ressarcimento: string | null;

/** Quantidade de transações feitas na modalidade débito */
quantidade_transacao_debito: number;
quantidade_transacao_debito: number | null;

/** Valor total das transações feitas na modalidade débito (R$) */
valor_debito: number;
valor_debito: number | null;

/** Quantidade de transações feitas em espécie */
quantidade_transacao_especie: number;
quantidade_transacao_especie: number | null;

/** Valor total das transações feitas em espécie (R$) */
valor_especie: number;
valor_especie: number | null;

/** Quantidade de transações feitas com gratuidade */
quantidade_transacao_gratuidade: number;
quantidade_transacao_gratuidade: number | null;

/** Valor total das transações feitas com gratuidade (R$) */
valor_gratuidade: number;
valor_gratuidade: number | null;

/** Quantidade de transações feitas com integração */
quantidade_transacao_integracao: number;
quantidade_transacao_integracao: number | null;

/** Valor total das transações feitas com integração (R$) */
valor_integracao: number;
valor_integracao: number | null;

/** Número de transações com rateio de crédito */
quantidade_transacao_rateio_credito: number;
quantidade_transacao_rateio_credito: number | null;

/** Valor total das transações com rateio de crédito (R$) */
valor_rateio_credito: number;
valor_rateio_credito: number | null;

/** Número de transações com rateio de débito */
quantidade_transacao_rateio_debito: number;
quantidade_transacao_rateio_debito: number | null;

/** Valor total das transações com rateio de débito (R$) */
valor_rateio_debito: number;
valor_rateio_debito: number | null;

/** Quantidade total de transações realizadas */
quantidade_total_transacao: number;
quantidade_total_transacao: number | null;

/** Valor total das transações realizadas (R$) */
valor_total_transacao_bruto: number;
valor_total_transacao_bruto: number | null;

/** Valor da taxa descontado do valor total (R$) */
valor_desconto_taxa: number;
valor_desconto_taxa: number | null;

/** Valor total das transações menos o valor_desconto_taxa (R$) */
valor_total_transacao_liquido: number;
valor_total_transacao_liquido: number | null;

/** Quantidade total de transações calculada pela captura de transações */
quantidade_total_transacao_captura: number;
quantidade_total_transacao_captura: number | null;

/** Valor total das transações realizadas calculada pela captura de transações (R$) */
valor_total_transacao_captura: number;
valor_total_transacao_captura: number | null;

/** Indicador de validação da ordem de pagamento */
indicador_ordem_valida: boolean;
indicador_ordem_valida: boolean | null;

/** Código de controle de versão do dado (SHA Github) */
versao: string;

aux_nextFriday: Date;
versao: string | null;
}
58 changes: 28 additions & 30 deletions src/bigquery/entities/transacao.bigquery-entity.ts
Original file line number Diff line number Diff line change
@@ -1,34 +1,32 @@
export class BigqueryTransacao {
id: number;
data: string;
hora: number;
datetime_transacao: string;
datetime_processamento: string;
datetime_captura: string;
modo: string;
id_consorcio: string;
id: number | null;
data: string | null;
hora: number | null;
datetime_transacao: string | null;
datetime_processamento: string | null;
datetime_captura: string | null;
modo: string | null;
id_consorcio: string | null;
/** Nome do consórcio */
consorcio: string;
id_operadora: string;
consorcio: string | null;
id_operadora: string | null;
/** Nome da operadora */
operadora: string;
servico: string;
sentido: string;
id_veiculo: number;
id_cliente: string;
id_transacao: string;
tipo_pagamento: string;
tipo_transacao: string;
tipo_gratuidade: string;
tipo_integracao: string;
id_integracao: number;
latitude: number;
longitude: number;
stop_id: number;
stop_lat: number;
stop_lon: number;
valor_transacao: number;
versao: string;

aux_nextFriday: string;
operadora: string | null;
servico: string | null;
sentido: string | null;
id_veiculo: number | null;
id_cliente: string | null;
id_transacao: string | null;
tipo_pagamento: string | null;
tipo_transacao: string | null;
tipo_gratuidade: string | null;
tipo_integracao: string | null;
id_integracao: number | null;
latitude: number | null;
longitude: number | null;
stop_id: number | null;
stop_lat: number | null;
stop_lon: number | null;
valor_transacao: number | null;
versao: string | null;
}
9 changes: 9 additions & 0 deletions src/bigquery/interfaces/bq-query-entity.interface.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
export interface IBigqueryQueryEntity {
cpfCnpj?: string;
startDate?: Date;
endDate?: Date;
limit?: number;
offset?: number;
getToday?: boolean;
previousDaysOnly?: boolean;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import { Provider } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { Test, TestingModule } from '@nestjs/testing';
import { BigqueryService } from 'src/bigquery/bigquery.service';
import { SettingEntity } from 'src/settings/entities/setting.entity';
import { BigqueryEnvironment } from 'src/settings/enums/bigquery-env.enum';
import { SettingsService } from 'src/settings/settings.service';
import { testLoadEnv, testGetBigqueryCredentials } from 'src/test/test-utils';
import { BigqueryOrdemPagamentoRepository } from './bigquery-ordem-pagamento.repository';

describe('BigqueryOrdemPagamentoRepository', () => {
let settingsService: SettingsService;
let bqTransacaoRepository: BigqueryOrdemPagamentoRepository;
let googleCredentials: any;

beforeAll(() => {
testLoadEnv();
});

beforeEach(async () => {
googleCredentials = testGetBigqueryCredentials();
const settingsServiceMock = {
provide: SettingsService,
useValue: {
getOneBySettingData: jest.fn(),
},
} as Provider;
const configServiceMock = {
provide: ConfigService,
useValue: {
getOrThrow: jest.fn((key: string) => googleCredentials[key]),
},
} as Provider;
const module: TestingModule = await Test.createTestingModule({
providers: [
BigqueryService,
BigqueryOrdemPagamentoRepository,
settingsServiceMock,
configServiceMock,
],
}).compile();

settingsService = module.get(SettingsService);
bqTransacaoRepository = module.get(BigqueryOrdemPagamentoRepository);
});

afterEach(() => {
jest.clearAllMocks();
});

it('should be defined', () => {
expect(settingsService).toBeDefined();
});

describe('findTransacaoBy', () => {
it('should return some data', async () => {
// Arrange
jest.spyOn(settingsService, 'getOneBySettingData').mockResolvedValueOnce({
getValueAsString: () => BigqueryEnvironment.Development,
} as SettingEntity);

// Act
const result = await bqTransacaoRepository.findMany({
startDate: new Date('2023-06-01'),
endDate: new Date('2024-06-01'),
limit: 50,
});

// Assert
expect(result.length).toBeGreaterThan(0);
});
});
});
Loading

0 comments on commit 36c9b1d

Please sign in to comment.