diff --git a/packages/server-nest/src/modules/Settings/Settings.controller.ts b/packages/server-nest/src/modules/Settings/Settings.controller.ts index 11bbc2857..39a24eec8 100644 --- a/packages/server-nest/src/modules/Settings/Settings.controller.ts +++ b/packages/server-nest/src/modules/Settings/Settings.controller.ts @@ -1,4 +1,4 @@ -import { Body, Controller, Get, Post } from '@nestjs/common'; +import { Body, Controller, Get, Post, Put } from '@nestjs/common'; import { SettingsApplicationService } from './SettingsApplication.service'; import { ISettingsDTO } from './Settings.types'; import { PublicRoute } from '../Auth/Jwt.guard'; @@ -10,11 +10,13 @@ export class SettingsController { private readonly settingsApplicationService: SettingsApplicationService, ) {} - @Post('') + @Put('') async saveSettings(@Body() settingsDTO: ISettingsDTO) { return this.settingsApplicationService.saveSettings(settingsDTO); } @Get('') - async getSettings() {} + async getSettings() { + return this.settingsApplicationService.getSettings(); + } } diff --git a/packages/server-nest/src/modules/Settings/Settings.module.ts b/packages/server-nest/src/modules/Settings/Settings.module.ts index a91989511..ec4ac0804 100644 --- a/packages/server-nest/src/modules/Settings/Settings.module.ts +++ b/packages/server-nest/src/modules/Settings/Settings.module.ts @@ -5,17 +5,24 @@ import { SettingsApplicationService } from './SettingsApplication.service'; import { SaveSettingsService } from './commands/SaveSettings.service'; import { SettingsController } from './Settings.controller'; import { SETTINGS_PROVIDER } from './Settings.types'; +import { GetSettingsService } from './queries/GetSettings.service'; @Module({ providers: [ SettingRepository, { provide: SETTINGS_PROVIDER, - useFactory: (settingRepository: SettingRepository) => { - return new SettingsStore(settingRepository); + useFactory: async (settingRepository: SettingRepository) => { + const settings = new SettingsStore(settingRepository); + + // Load settings from database. + await settings.load(); + + return settings; }, inject: [SettingRepository], }, + GetSettingsService, SettingsApplicationService, SaveSettingsService, ], diff --git a/packages/server-nest/src/modules/Settings/SettingsApplication.service.ts b/packages/server-nest/src/modules/Settings/SettingsApplication.service.ts index 578e09c26..4a23a0e32 100644 --- a/packages/server-nest/src/modules/Settings/SettingsApplication.service.ts +++ b/packages/server-nest/src/modules/Settings/SettingsApplication.service.ts @@ -1,10 +1,14 @@ import { Injectable } from '@nestjs/common'; import { SaveSettingsService } from './commands/SaveSettings.service'; import { ISettingsDTO } from './Settings.types'; +import { GetSettingsService } from './queries/GetSettings.service'; @Injectable() export class SettingsApplicationService { - constructor(private readonly saveSettingsService: SaveSettingsService) {} + constructor( + private readonly saveSettingsService: SaveSettingsService, + private readonly getSettingsService: GetSettingsService, + ) {} /** * Saves the given settings. @@ -13,4 +17,8 @@ export class SettingsApplicationService { public async saveSettings(settingsDTO: ISettingsDTO) { return this.saveSettingsService.saveSettings(settingsDTO); } + + public async getSettings() { + return this.getSettingsService.execute(); + } } diff --git a/packages/server-nest/src/modules/Settings/queries/GetSettings.service.ts b/packages/server-nest/src/modules/Settings/queries/GetSettings.service.ts new file mode 100644 index 000000000..ea1e2a4d7 --- /dev/null +++ b/packages/server-nest/src/modules/Settings/queries/GetSettings.service.ts @@ -0,0 +1,14 @@ +import { Inject, Injectable } from '@nestjs/common'; +import { SettingsStore } from '../SettingsStore'; +import { SETTINGS_PROVIDER } from '../Settings.types'; + +@Injectable() +export class GetSettingsService { + constructor( + @Inject(SETTINGS_PROVIDER) private readonly settingsStore: SettingsStore, + ) {} + + public async execute() { + return this.settingsStore.all(); + } +} diff --git a/packages/server-nest/src/utils/is-blank.ts b/packages/server-nest/src/utils/is-blank.ts index aa285e990..24d41a127 100644 --- a/packages/server-nest/src/utils/is-blank.ts +++ b/packages/server-nest/src/utils/is-blank.ts @@ -1,4 +1,4 @@ -import _ from 'lodash'; +import * as _ from 'lodash'; export const isBlank = (value) => { return (_.isEmpty(value) && !_.isNumber(value)) || _.isNaN(value); diff --git a/packages/server-nest/test/settings.e2e-spec.ts b/packages/server-nest/test/settings.e2e-spec.ts index e69de29bb..e151ce1eb 100644 --- a/packages/server-nest/test/settings.e2e-spec.ts +++ b/packages/server-nest/test/settings.e2e-spec.ts @@ -0,0 +1,34 @@ +import * as request from 'supertest'; +import { app } from './init-app-test'; + +const makeSettingsRequest = () => ({ + options: [ + { + group: 'credit_note', + key: 'customer_notes', + value: 'Customer Notes...', + }, + { + group: 'credit_note', + key: 'terms_conditions', + value: 'Terms & Conditions...', + }, + ], +}); + +describe('Settings (e2e)', () => { + it('/settings (PUT)', () => { + return request(app.getHttpServer()) + .put('/settings') + .set('organization-id', '4064541lv40nhca') + .send(makeSettingsRequest()) + .expect(200); + }); + + it('/settings (GET)', () => { + return request(app.getHttpServer()) + .get('/settings') + .set('organization-id', '4064541lv40nhca') + .expect(200); + }); +}); diff --git a/packages/server-nest/test/transactions-locking.e2e-spec.ts b/packages/server-nest/test/transactions-locking.e2e-spec.ts index e69de29bb..40d2b1c4b 100644 --- a/packages/server-nest/test/transactions-locking.e2e-spec.ts +++ b/packages/server-nest/test/transactions-locking.e2e-spec.ts @@ -0,0 +1,17 @@ + +import * as request from 'supertest'; +import { app } from './init-app-test'; + +describe('Transactions Locking (e2e)', () => { + it('/transactions-locking (PUT)', () => { + return request(app.getHttpServer()) + .put('/transactions-locking') + .set('organization-id', '4064541lv40nhca') + .send({ + module: 'all', + lock_to_date: '2025-01-01', + reason: 'test', + }) + .expect(200); + }); +}); \ No newline at end of file