feat: Add farba field and company details to AI Kurzy module

- Add farba (color) field to kurzy schema and Zod validation
- Add company detail fields (firma_ico, firma_dic, firma_ic_dph, firma_sidlo) to ucastnici
- Remove console logs from ai-kurzy service
- Add SQL migration scripts for schema updates and data

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
richardtekula
2026-01-21 14:27:03 +01:00
parent 4089bb4be2
commit 826fd467bc
5 changed files with 197 additions and 2 deletions

View File

@@ -15,6 +15,7 @@ export const getAllKurzy = async () => {
cena: kurzy.cena,
maxKapacita: kurzy.maxKapacita,
aktivny: kurzy.aktivny,
farba: kurzy.farba,
createdAt: kurzy.createdAt,
registraciiCount: sql`(SELECT COUNT(*) FROM registracie WHERE kurz_id = ${kurzy.id})::int`,
})
@@ -48,6 +49,7 @@ export const createKurz = async (data) => {
cena: data.cena,
maxKapacita: data.maxKapacita || null,
aktivny: data.aktivny !== undefined ? data.aktivny : true,
farba: data.farba || null,
})
.returning();
@@ -57,7 +59,23 @@ export const createKurz = async (data) => {
export const updateKurz = async (id, data) => {
await getKurzById(id);
const updateData = { ...data, updatedAt: new Date() };
const updateData = {
nazov: data.nazov,
typKurzu: data.typKurzu,
popis: data.popis !== undefined ? data.popis : undefined,
cena: data.cena,
maxKapacita: data.maxKapacita !== undefined ? data.maxKapacita : undefined,
aktivny: data.aktivny !== undefined ? data.aktivny : undefined,
farba: data.farba !== undefined ? data.farba : undefined,
updatedAt: new Date(),
};
// Remove undefined values
Object.keys(updateData).forEach(key => {
if (updateData[key] === undefined) {
delete updateData[key];
}
});
const [updated] = await db
.update(kurzy)
@@ -86,6 +104,10 @@ export const getAllUcastnici = async () => {
email: ucastnici.email,
telefon: ucastnici.telefon,
firma: ucastnici.firma,
firmaIco: ucastnici.firmaIco,
firmaDic: ucastnici.firmaDic,
firmaIcDph: ucastnici.firmaIcDph,
firmaSidlo: ucastnici.firmaSidlo,
mesto: ucastnici.mesto,
ulica: ucastnici.ulica,
psc: ucastnici.psc,
@@ -122,6 +144,10 @@ export const createUcastnik = async (data) => {
email: data.email,
telefon: data.telefon || null,
firma: data.firma || null,
firmaIco: data.firmaIco || null,
firmaDic: data.firmaDic || null,
firmaIcDph: data.firmaIcDph || null,
firmaSidlo: data.firmaSidlo || null,
mesto: data.mesto || null,
ulica: data.ulica || null,
psc: data.psc || null,
@@ -280,6 +306,10 @@ export const getCombinedTableData = async () => {
email: ucastnici.email,
telefon: ucastnici.telefon,
firma: ucastnici.firma,
firmaIco: ucastnici.firmaIco,
firmaDic: ucastnici.firmaDic,
firmaIcDph: ucastnici.firmaIcDph,
firmaSidlo: ucastnici.firmaSidlo,
mesto: ucastnici.mesto,
ulica: ucastnici.ulica,
psc: ucastnici.psc,
@@ -287,6 +317,7 @@ export const getCombinedTableData = async () => {
kurzId: kurzy.id,
kurzNazov: kurzy.nazov,
kurzTyp: kurzy.typKurzu,
kurzFarba: kurzy.farba,
// Registration fields (dates are now here)
datumOd: registracie.datumOd,
datumDo: registracie.datumDo,
@@ -312,7 +343,7 @@ export const getCombinedTableData = async () => {
// Update a single field (for inline editing)
export const updateField = async (registrationId, field, value) => {
// Determine which table to update based on the field
const ucastnikFields = ['titul', 'meno', 'priezvisko', 'email', 'telefon', 'firma', 'mesto', 'ulica', 'psc'];
const ucastnikFields = ['titul', 'meno', 'priezvisko', 'email', 'telefon', 'firma', 'firmaIco', 'firmaDic', 'firmaIcDph', 'firmaSidlo', 'mesto', 'ulica', 'psc'];
const registraciaFields = ['datumOd', 'datumDo', 'formaKurzu', 'pocetUcastnikov', 'fakturaCislo', 'fakturaVystavena', 'zaplatene', 'stav', 'poznamka', 'kurzId'];
const dateFields = ['datumOd', 'datumDo'];