Files
turnosxpress/server/src/api/Notifications/Notifications.Controller.ts
T

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,
};
}
}