This commit is contained in:
Ahmed Bouhuolia
2025-11-17 17:04:25 +02:00
parent 2383091b6e
commit 2c64e1b8ab
41 changed files with 709 additions and 87 deletions

View File

@@ -25,13 +25,53 @@ import {
import { IManualJournalsFilter } from './types/ManualJournals.types';
import { ManualJournalResponseDto } from './dtos/ManualJournalResponse.dto';
import { ApiCommonHeaders } from '@/common/decorators/ApiCommonHeaders';
import {
BulkDeleteDto,
ValidateBulkDeleteResponseDto,
} from '@/common/dtos/BulkDelete.dto';
@Controller('manual-journals')
@ApiTags('Manual Journals')
@ApiExtraModels(ManualJournalResponseDto)
@ApiExtraModels(ValidateBulkDeleteResponseDto)
@ApiCommonHeaders()
export class ManualJournalsController {
constructor(private manualJournalsApplication: ManualJournalsApplication) {}
constructor(private manualJournalsApplication: ManualJournalsApplication) { }
@Post('validate-bulk-delete')
@ApiOperation({
summary:
'Validate which manual journals can be deleted and return the results.',
})
@ApiResponse({
status: 200,
description:
'Validation completed with counts and IDs of deletable and non-deletable manual journals.',
schema: {
$ref: getSchemaPath(ValidateBulkDeleteResponseDto),
},
})
public validateBulkDeleteManualJournals(
@Body() bulkDeleteDto: BulkDeleteDto,
): Promise<ValidateBulkDeleteResponseDto> {
return this.manualJournalsApplication.validateBulkDeleteManualJournals(
bulkDeleteDto.ids,
);
}
@Post('bulk-delete')
@ApiOperation({ summary: 'Deletes multiple manual journals.' })
@ApiResponse({
status: 200,
description: 'Manual journals deleted successfully',
})
public bulkDeleteManualJournals(
@Body() bulkDeleteDto: BulkDeleteDto,
): Promise<void> {
return this.manualJournalsApplication.bulkDeleteManualJournals(
bulkDeleteDto.ids,
);
}
@Post()
@ApiOperation({ summary: 'Create a new manual journal.' })

View File

@@ -19,6 +19,8 @@ import { ManualJournalsExportable } from './commands/ManualJournalExportable';
import { ManualJournalImportable } from './commands/ManualJournalsImport';
import { GetManualJournals } from './queries/GetManualJournals.service';
import { DynamicListModule } from '../DynamicListing/DynamicList.module';
import { BulkDeleteManualJournalsService } from './BulkDeleteManualJournals.service';
import { ValidateBulkDeleteManualJournalsService } from './ValidateBulkDeleteManualJournals.service';
@Module({
imports: [BranchesModule, LedgerModule, DynamicListModule],
@@ -41,6 +43,8 @@ import { DynamicListModule } from '../DynamicListing/DynamicList.module';
ManualJournalWriteGLSubscriber,
ManualJournalsExportable,
ManualJournalImportable,
BulkDeleteManualJournalsService,
ValidateBulkDeleteManualJournalsService,
],
exports: [ManualJournalsExportable, ManualJournalImportable],
})

View File

@@ -10,6 +10,8 @@ import {
EditManualJournalDto,
} from './dtos/ManualJournal.dto';
import { GetManualJournals } from './queries/GetManualJournals.service';
import { BulkDeleteManualJournalsService } from './BulkDeleteManualJournals.service';
import { ValidateBulkDeleteManualJournalsService } from './ValidateBulkDeleteManualJournals.service';
// import { GetManualJournals } from './queries/GetManualJournals';
@Injectable()
@@ -21,6 +23,8 @@ export class ManualJournalsApplication {
private publishManualJournalService: PublishManualJournal,
private getManualJournalService: GetManualJournal,
private getManualJournalsService: GetManualJournals,
private bulkDeleteManualJournalsService: BulkDeleteManualJournalsService,
private validateBulkDeleteManualJournalsService: ValidateBulkDeleteManualJournalsService,
) {}
/**
@@ -57,6 +61,26 @@ export class ManualJournalsApplication {
return this.deleteManualJournalService.deleteManualJournal(manualJournalId);
};
/**
* Bulk deletes manual journals.
* @param {number[]} manualJournalIds
*/
public bulkDeleteManualJournals = (manualJournalIds: number[]) => {
return this.bulkDeleteManualJournalsService.bulkDeleteManualJournals(
manualJournalIds,
);
};
/**
* Validates which manual journals can be deleted.
* @param {number[]} manualJournalIds
*/
public validateBulkDeleteManualJournals = (manualJournalIds: number[]) => {
return this.validateBulkDeleteManualJournalsService.validateBulkDeleteManualJournals(
manualJournalIds,
);
};
/**
* Publish the given manual journal.
* @param {number} manualJournalId - Manual journal id.