- 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>
57 lines
1.9 KiB
TypeScript
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);
|
|
};
|