Add support for sending edit user email with template

This commit is contained in:
faris Aljohari
2025-01-04 22:42:07 -06:00
parent 81ec60d947
commit 5ce016f429
5 changed files with 148 additions and 1 deletions

View File

@ -138,4 +138,82 @@ export class EmailService {
);
}
}
async sendEditUserEmailWithTemplate(
email: string,
emailEditData: any,
): Promise<void> {
const isProduction = process.env.NODE_ENV === 'production';
const API_TOKEN = this.configService.get<string>(
'email-config.MAILTRAP_API_TOKEN',
);
const API_URL = isProduction
? SEND_EMAIL_API_URL_PROD
: SEND_EMAIL_API_URL_DEV;
const TEMPLATE_UUID = this.configService.get<string>(
'email-config.MAILTRAP_EDIT_USER_TEMPLATE_UUID',
);
const emailData = {
from: {
email: this.smtpConfig.sender,
},
to: [
{
email: email,
},
],
template_uuid: TEMPLATE_UUID,
template_variables: emailEditData,
};
try {
await axios.post(API_URL, emailData, {
headers: {
Authorization: `Bearer ${API_TOKEN}`,
'Content-Type': 'application/json',
},
});
} catch (error) {
throw new HttpException(
error.response?.data?.message ||
'Error sending email using Mailtrap template',
error.response?.status || HttpStatus.INTERNAL_SERVER_ERROR,
);
}
}
generateUserChangesEmailBody(
addedSpaceNames: string[],
removedSpaceNames: string[],
oldRole: string,
newRole: string,
oldName: string,
newName: string,
) {
const addedSpaceNamesChanged =
addedSpaceNames.length > 0
? `Access to the following spaces were added: ${addedSpaceNames.join(', ')}`
: '';
const removedSpaceNamesChanged =
removedSpaceNames.length > 0
? `Access to the following spaces were deleted: ${removedSpaceNames.join(', ')}`
: '';
const roleChanged =
oldRole !== newRole
? `Your user role has been changed from [${oldRole}] to [${newRole}]`
: '';
const nameChanged =
oldName !== newName
? `The name associated with your account has changed from [${oldName}] to [${newName}]`
: '';
return {
addedSpaceNamesChanged,
removedSpaceNamesChanged,
roleChanged,
nameChanged,
};
}
}