refactor: Move course dates from registracie to kurzy table
- Add datumOd and datumDo columns to kurzy table - Remove datumOd, datumDo, pocetUcastnikov from registracie table - Update schema, validators, and services accordingly - Certificate generation now uses course dates - Migration preserves existing data by copying most recent dates Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -11,10 +11,7 @@ export const getAllRegistracie = async (kurzId = null) => {
|
||||
id: registracie.id,
|
||||
kurzId: registracie.kurzId,
|
||||
ucastnikId: registracie.ucastnikId,
|
||||
datumOd: registracie.datumOd,
|
||||
datumDo: registracie.datumDo,
|
||||
formaKurzu: registracie.formaKurzu,
|
||||
pocetUcastnikov: registracie.pocetUcastnikov,
|
||||
fakturaCislo: registracie.fakturaCislo,
|
||||
fakturaVystavena: registracie.fakturaVystavena,
|
||||
zaplatene: registracie.zaplatene,
|
||||
@@ -23,6 +20,8 @@ export const getAllRegistracie = async (kurzId = null) => {
|
||||
createdAt: registracie.createdAt,
|
||||
kurzNazov: kurzy.nazov,
|
||||
kurzTyp: kurzy.typKurzu,
|
||||
kurzDatumOd: kurzy.datumOd,
|
||||
kurzDatumDo: kurzy.datumDo,
|
||||
ucastnikMeno: ucastnici.meno,
|
||||
ucastnikPriezvisko: ucastnici.priezvisko,
|
||||
ucastnikEmail: ucastnici.email,
|
||||
@@ -32,7 +31,7 @@ export const getAllRegistracie = async (kurzId = null) => {
|
||||
.leftJoin(kurzy, eq(registracie.kurzId, kurzy.id))
|
||||
.leftJoin(ucastnici, eq(registracie.ucastnikId, ucastnici.id))
|
||||
.where(conditions.length > 0 ? and(...conditions) : undefined)
|
||||
.orderBy(desc(registracie.datumOd), desc(registracie.createdAt));
|
||||
.orderBy(desc(kurzy.datumOd), desc(registracie.createdAt));
|
||||
|
||||
return result;
|
||||
};
|
||||
@@ -44,7 +43,6 @@ export const getRegistraciaById = async (id) => {
|
||||
kurzId: registracie.kurzId,
|
||||
ucastnikId: registracie.ucastnikId,
|
||||
formaKurzu: registracie.formaKurzu,
|
||||
pocetUcastnikov: registracie.pocetUcastnikov,
|
||||
fakturaCislo: registracie.fakturaCislo,
|
||||
fakturaVystavena: registracie.fakturaVystavena,
|
||||
zaplatene: registracie.zaplatene,
|
||||
@@ -76,10 +74,7 @@ export const createRegistracia = async (data) => {
|
||||
.values({
|
||||
kurzId: data.kurzId,
|
||||
ucastnikId: data.ucastnikId,
|
||||
datumOd: data.datumOd ? new Date(data.datumOd) : null,
|
||||
datumDo: data.datumDo ? new Date(data.datumDo) : null,
|
||||
formaKurzu: data.formaKurzu || 'prezencne',
|
||||
pocetUcastnikov: data.pocetUcastnikov || 1,
|
||||
fakturaCislo: data.fakturaCislo || null,
|
||||
fakturaVystavena: data.fakturaVystavena || false,
|
||||
zaplatene: data.zaplatene || false,
|
||||
@@ -135,10 +130,9 @@ export const getCombinedTableData = async () => {
|
||||
kurzNazov: kurzy.nazov,
|
||||
kurzTyp: kurzy.typKurzu,
|
||||
kurzFarba: kurzy.farba,
|
||||
datumOd: registracie.datumOd,
|
||||
datumDo: registracie.datumDo,
|
||||
datumOd: kurzy.datumOd,
|
||||
datumDo: kurzy.datumDo,
|
||||
formaKurzu: registracie.formaKurzu,
|
||||
pocetUcastnikov: registracie.pocetUcastnikov,
|
||||
fakturaCislo: registracie.fakturaCislo,
|
||||
fakturaVystavena: registracie.fakturaVystavena,
|
||||
zaplatene: registracie.zaplatene,
|
||||
@@ -151,15 +145,14 @@ export const getCombinedTableData = async () => {
|
||||
.from(registracie)
|
||||
.innerJoin(ucastnici, eq(registracie.ucastnikId, ucastnici.id))
|
||||
.innerJoin(kurzy, eq(registracie.kurzId, kurzy.id))
|
||||
.orderBy(desc(registracie.datumOd), desc(registracie.createdAt));
|
||||
.orderBy(desc(kurzy.datumOd), desc(registracie.createdAt));
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
export const updateField = async (registrationId, field, value) => {
|
||||
const ucastnikFields = ['titul', 'meno', 'priezvisko', 'email', 'telefon', 'firma', 'firmaIco', 'firmaDic', 'firmaIcDph', 'firmaSidlo', 'mesto', 'ulica', 'psc', 'needsFollowup'];
|
||||
const registraciaFields = ['datumOd', 'datumDo', 'formaKurzu', 'pocetUcastnikov', 'fakturaCislo', 'fakturaVystavena', 'zaplatene', 'stav', 'poznamka', 'kurzId'];
|
||||
const dateFields = ['datumOd', 'datumDo'];
|
||||
const registraciaFields = ['formaKurzu', 'fakturaCislo', 'fakturaVystavena', 'zaplatene', 'stav', 'poznamka', 'kurzId'];
|
||||
|
||||
const [reg] = await db
|
||||
.select({ ucastnikId: registracie.ucastnikId })
|
||||
@@ -171,20 +164,15 @@ export const updateField = async (registrationId, field, value) => {
|
||||
throw new NotFoundError('Registrácia nenájdená');
|
||||
}
|
||||
|
||||
let processedValue = value;
|
||||
if (dateFields.includes(field)) {
|
||||
processedValue = value ? new Date(value) : null;
|
||||
}
|
||||
|
||||
if (ucastnikFields.includes(field)) {
|
||||
await db
|
||||
.update(ucastnici)
|
||||
.set({ [field]: processedValue, updatedAt: new Date() })
|
||||
.set({ [field]: value, updatedAt: new Date() })
|
||||
.where(eq(ucastnici.id, reg.ucastnikId));
|
||||
} else if (registraciaFields.includes(field)) {
|
||||
await db
|
||||
.update(registracie)
|
||||
.set({ [field]: processedValue, updatedAt: new Date() })
|
||||
.set({ [field]: value, updatedAt: new Date() })
|
||||
.where(eq(registracie.id, registrationId));
|
||||
} else {
|
||||
throw new Error(`Unknown field: ${field}`);
|
||||
|
||||
Reference in New Issue
Block a user