66 lines
2.0 KiB
TypeScript
66 lines
2.0 KiB
TypeScript
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;
|
|
templateId?: string;
|
|
context?: Record<string, unknown>;
|
|
}
|
|
|
|
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,
|
|
templateId: requestBody.templateId,
|
|
context: requestBody.context,
|
|
});
|
|
|
|
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,
|
|
};
|
|
}
|
|
}
|