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