routes/contact.jsjavascript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.contactRouter = void 0;
const express_1 = require("express");
const zod_1 = require("zod");
const ContactService_1 = __importDefault(require("../services/ContactService.js"));
const rateLimitMiddleware_1 = require("../middlewares/rateLimitMiddleware.js");
const AuthService_1 = __importDefault(require("../services/AuthService.js"));
const validateMiddleware_1 = require("../middlewares/validateMiddleware.js");
const createContactSchema = zod_1.z.object({
name: zod_1.z.string().min(1),
email: zod_1.z.email(),
subject: zod_1.z.string().min(1),
message: zod_1.z.string().min(1),
category: zod_1.z.string().min(1),
});
/**
* @swagger
* tags:
* - name: Contact
*/
/** @ignore */
const router = (0, express_1.Router)();
exports.contactRouter = router;
/**
* @openapi
* /contact/:
* post:
* description: Send a new message to the support team
* tags:
* - Contact
* security:
* - userAuthentication: []
* requestBody:
* required: true
* content:
* application/json:
* schema:
* type: object
* required:
* - name
* - email
* - subject
* - message
* - category
* properties:
* name:
* type: string
* email:
* type: email
* subject:
* type: string
* message:
* type: string
* category:
* type: string
* responses:
* 200:
* description: Message Received
* content:
* application/json:
* schema:
* type: string
* 400:
* $ref: '#/components/responses/BadRequestError'
*/
router.post("/", rateLimitMiddleware_1.openApiRateLimit, AuthService_1.default.authenticateUser(false), (0, validateMiddleware_1.validate)(createContactSchema), (req, res, next) => {
const { name, email, subject, message, category } = req.body;
return ContactService_1.default.sendMessage(name, email, subject, message, category, req.locale, req.actingUserId)
.then((response) => {
res.send(response);
return next();
})
.catch((e) => next(e));
});