@@ -2,12 +2,15 @@ import { Injectable, Logger } from '@nestjs/common';
22import { JSONStringifyError } from 'src/common/helpers/utils' ;
33import { IUseCaseService } from 'src/common/interfaces/use-case-service.interface' ;
44import { ExceptionsService } from 'src/infrastructure/exceptions/exceptions.service' ;
5+ import { S3Service } from 'src/infrastructure/providers/s3/module/s3.service' ;
56import { ActionsArchiveFacade } from 'src/modules/actions-archive/actions-archive.facade' ;
67import { TrackedEventName } from 'src/modules/actions-archive/enums/action-resource-types.enum' ;
78import { DocumentContractStatus } from 'src/modules/documents/enums/contract-status.enum' ;
89import { ContractExceptionMessages } from 'src/modules/documents/exceptions/contract.exceptions' ;
910import { DocumentContractFacade } from 'src/modules/documents/services/document-contract.facade' ;
1011import { IAdminUserModel } from 'src/modules/user/models/admin-user.model' ;
12+ import * as Sentry from '@sentry/nestjs' ;
13+ import { DocumentSignatureFacade } from 'src/modules/documents/services/document-signature.facade' ;
1114
1215@Injectable ( )
1316export class DeleteDocumentContractUsecase implements IUseCaseService < string > {
@@ -16,6 +19,8 @@ export class DeleteDocumentContractUsecase implements IUseCaseService<string> {
1619 private readonly documentContractFacade : DocumentContractFacade ,
1720 private readonly exceptionService : ExceptionsService ,
1821 private readonly actionsArchiveFacade : ActionsArchiveFacade ,
22+ private readonly signatureService : DocumentSignatureFacade ,
23+ private readonly s3Service : S3Service ,
1924 ) { }
2025
2126 public async execute ( id : string , admin : IAdminUserModel ) : Promise < void > {
@@ -53,6 +58,34 @@ export class DeleteDocumentContractUsecase implements IUseCaseService<string> {
5358 throw new Error ( 'Could not delete contract from DB' ) ;
5459 }
5560
61+ // Delete file from S3
62+ try {
63+ if ( contract . filePath ) {
64+ await this . s3Service . deleteFile ( contract . filePath ) ;
65+ }
66+ } catch ( error ) {
67+ Sentry . captureException ( error ) ;
68+ this . logger . error ( 'Error deleting contract file from S3: ' , error ) ;
69+ }
70+
71+ // Delete signatures
72+ try {
73+ if ( contract . volunteerSignatureId ) {
74+ await this . signatureService . delete ( contract . volunteerSignatureId ) ;
75+ }
76+ if ( contract . legalGuardianSignatureId ) {
77+ await this . signatureService . delete ( contract . legalGuardianSignatureId ) ;
78+ }
79+ if ( contract . ngoLegalRepresentativeSignatureId ) {
80+ await this . signatureService . delete (
81+ contract . ngoLegalRepresentativeSignatureId ,
82+ ) ;
83+ }
84+ } catch ( error ) {
85+ Sentry . captureException ( error ) ;
86+ this . logger . error ( 'Error while deleting contract signatures' ) ;
87+ }
88+
5689 // 10. Track event
5790 this . actionsArchiveFacade . trackEvent (
5891 TrackedEventName . DELETE_DOCUMENT_CONTRACT ,
0 commit comments