feat: implement comprehensive notification engine with policies, preferences, and automated dispatching services
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
import { Body, Controller, Middlewares, Post, Route, SuccessResponse } from "tsoa";
|
||||
import { rateLimiter } from "../../middleware/ratelimiter";
|
||||
import { systemTokenMiddleware } from "../../middleware/systemToken";
|
||||
import { NotificationsManager } from "../../Models/Notifications/Notifications";
|
||||
import { ApiVoidResult } from "../../Models/Api.VoidResult.type";
|
||||
|
||||
interface SendEmailByContentParams {
|
||||
systemToken: string;
|
||||
email: string;
|
||||
subject: string;
|
||||
message: string;
|
||||
}
|
||||
|
||||
interface SendWapByContentParams {
|
||||
systemToken: string;
|
||||
phoneNumber: string;
|
||||
message: string;
|
||||
companyId: string;
|
||||
sessionUser: string;
|
||||
}
|
||||
|
||||
@Route("notifications/send-email")
|
||||
@Middlewares([rateLimiter, systemTokenMiddleware])
|
||||
export class SendEmailByContentController extends Controller {
|
||||
@SuccessResponse(200, "Done")
|
||||
@Post()
|
||||
public async sendEmailByContent(@Body() requestBody: SendEmailByContentParams): Promise<ApiVoidResult> {
|
||||
await NotificationsManager.sendEmail({
|
||||
email: requestBody.email,
|
||||
subject: requestBody.subject,
|
||||
message: requestBody.message,
|
||||
});
|
||||
|
||||
this.setStatus(200);
|
||||
return {
|
||||
message: "Done",
|
||||
success: true,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@Route("notifications/send-wap")
|
||||
@Middlewares([rateLimiter, systemTokenMiddleware])
|
||||
export class SendWapByContentController extends Controller {
|
||||
@SuccessResponse(200, "Done")
|
||||
@Post()
|
||||
public async sendWapByContent(@Body() requestBody: SendWapByContentParams): Promise<ApiVoidResult> {
|
||||
await NotificationsManager.sendWap({
|
||||
phoneNumber: requestBody.phoneNumber,
|
||||
message: requestBody.message,
|
||||
companyId: requestBody.companyId,
|
||||
sessionUser: requestBody.sessionUser,
|
||||
});
|
||||
|
||||
this.setStatus(200);
|
||||
return {
|
||||
message: "Done",
|
||||
success: true,
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user