Files
helpdesk-texnet/backend/src/controllers/zakazky.controller.ts
pettrop 2ca0c4f4d8 Správa používateľov + notifikačný systém
- Pridaná kompletná správa používateľov (CRUD, reset hesla, zmena roly) pre ROOT/ADMIN
- Backend: POST /users endpoint, createUser controller, validácia
- Frontend: UserManagement, UserForm, PasswordResetModal komponenty
- Settings prístupné pre ROOT aj ADMIN (AdminRoute)
- Notifikačný systém s snooze funkcionalitou
- Aktualizácia HELPDESK_INIT_V2.md dokumentácie

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 15:30:27 +01:00

57 lines
1.9 KiB
TypeScript

import { Response } from 'express';
import { successResponse, errorResponse, parseQueryInt, getQueryString } from '../utils/helpers';
import { AuthRequest } from '../middleware/auth.middleware';
import { externalDbService } from '../services/externalDb.service';
// Check if external DB is configured
export const checkConfiguration = async (_req: AuthRequest, res: Response): Promise<void> => {
const isConfigured = externalDbService.isConfigured();
successResponse(res, { configured: isConfigured });
};
// Get zakazky by year
export const getZakazky = async (req: AuthRequest, res: Response): Promise<void> => {
try {
if (!externalDbService.isConfigured()) {
errorResponse(res, 'Externá databáza nie je nakonfigurovaná.', 503);
return;
}
const rok = parseQueryInt(req.query.rok, new Date().getFullYear());
const search = getQueryString(req, 'search');
console.log(`[Zakazky] Fetching year=${rok}, search=${search || 'none'}`);
let zakazky;
if (search) {
zakazky = await externalDbService.searchZakazky(rok, search);
} else {
zakazky = await externalDbService.getZakazkyByYear(rok);
}
console.log(`[Zakazky] Found ${zakazky.length} records`);
successResponse(res, zakazky);
} catch (error) {
const err = error as Error;
console.error('[Zakazky] Error:', err.message, err.stack);
// Return detailed error in development
const message = process.env.NODE_ENV === 'development'
? `Chyba: ${err.message}`
: 'Chyba pri načítaní zákaziek z externej databázy.';
errorResponse(res, message, 500);
}
};
// Get available years (current year and 5 years back)
export const getAvailableYears = async (_req: AuthRequest, res: Response): Promise<void> => {
const currentYear = new Date().getFullYear();
const years = [];
for (let i = 0; i <= 5; i++) {
years.push(currentYear - i);
}
successResponse(res, years);
};