initialize git, basic setup for crm

This commit is contained in:
richardtekula
2025-11-18 13:53:28 +01:00
commit da01d586fc
47 changed files with 12776 additions and 0 deletions

View File

@@ -0,0 +1,69 @@
import express from 'express';
import * as crmEmailController from '../controllers/crm-email.controller.js';
import { authenticate } from '../middlewares/auth/authMiddleware.js';
import { validateBody, validateParams } from '../middlewares/security/validateInput.js';
import { z } from 'zod';
const router = express.Router();
// All email routes require authentication
router.use(authenticate);
/**
* Email management
*/
// Get all emails
router.get('/', crmEmailController.getEmails);
// Search emails
router.get('/search', crmEmailController.searchEmails);
// Get unread count
router.get('/unread-count', crmEmailController.getUnreadCount);
// Get email thread (conversation)
router.get(
'/thread/:threadId',
validateParams(z.object({ threadId: z.string() })),
crmEmailController.getThread
);
// Mark thread as read
router.post(
'/thread/:threadId/read',
validateParams(z.object({ threadId: z.string() })),
crmEmailController.markThreadRead
);
// Get emails for a specific contact
router.get(
'/contact/:contactId',
validateParams(z.object({ contactId: z.string().uuid() })),
crmEmailController.getContactEmails
);
// Mark email as read/unread
router.patch(
'/:jmapId/read',
validateParams(z.object({ jmapId: z.string() })),
validateBody(z.object({ isRead: z.boolean() })),
crmEmailController.markAsRead
);
// Send email reply
router.post(
'/reply',
validateBody(
z.object({
to: z.string().email('Neplatný formát emailu'),
subject: z.string().min(1, 'Subject nemôže byť prázdny'),
body: z.string().min(1, 'Telo emailu nemôže byť prázdne'),
inReplyTo: z.string().optional(),
threadId: z.string().optional(),
})
),
crmEmailController.replyToEmail
);
export default router;