fix(persoenliche-ausruestung): save characteristics on create/edit and add editable eigenschaft fields to assignment page
This commit is contained in:
@@ -959,6 +959,7 @@ interface AssignmentInput {
|
||||
benutzerName?: string;
|
||||
groesse?: string;
|
||||
kategorie?: string;
|
||||
eigenschaften?: { eigenschaft_id?: number; name: string; wert: string }[];
|
||||
}
|
||||
|
||||
async function assignDeliveredItems(
|
||||
@@ -1057,20 +1058,31 @@ async function assignDeliveredItems(
|
||||
);
|
||||
const newId = insertResult.rows[0].id;
|
||||
|
||||
// Copy position eigenschaften to persoenliche_ausruestung_eigenschaften
|
||||
const posEigResult = await client.query(
|
||||
`SELECT poe.eigenschaft_id, aae.name, poe.wert
|
||||
FROM ausruestung_position_eigenschaften poe
|
||||
JOIN ausruestung_artikel_eigenschaften aae ON aae.id = poe.eigenschaft_id
|
||||
WHERE poe.position_id = $1`,
|
||||
[a.positionId],
|
||||
);
|
||||
for (const row of posEigResult.rows) {
|
||||
await client.query(
|
||||
`INSERT INTO persoenliche_ausruestung_eigenschaften (persoenlich_id, eigenschaft_id, name, wert)
|
||||
VALUES ($1, $2, $3, $4) ON CONFLICT DO NOTHING`,
|
||||
[newId, row.eigenschaft_id, row.name, row.wert],
|
||||
// Copy eigenschaften: use frontend-provided values if any, otherwise copy from position
|
||||
const providedEig = a.eigenschaften && a.eigenschaften.length > 0;
|
||||
if (providedEig) {
|
||||
for (const e of a.eigenschaften!) {
|
||||
await client.query(
|
||||
`INSERT INTO persoenliche_ausruestung_eigenschaften (persoenlich_id, eigenschaft_id, name, wert)
|
||||
VALUES ($1, $2, $3, $4) ON CONFLICT DO NOTHING`,
|
||||
[newId, e.eigenschaft_id ?? null, e.name, e.wert],
|
||||
);
|
||||
}
|
||||
} else {
|
||||
const posEigResult = await client.query(
|
||||
`SELECT poe.eigenschaft_id, aae.name, poe.wert
|
||||
FROM ausruestung_position_eigenschaften poe
|
||||
JOIN ausruestung_artikel_eigenschaften aae ON aae.id = poe.eigenschaft_id
|
||||
WHERE poe.position_id = $1`,
|
||||
[a.positionId],
|
||||
);
|
||||
for (const row of posEigResult.rows) {
|
||||
await client.query(
|
||||
`INSERT INTO persoenliche_ausruestung_eigenschaften (persoenlich_id, eigenschaft_id, name, wert)
|
||||
VALUES ($1, $2, $3, $4) ON CONFLICT DO NOTHING`,
|
||||
[newId, row.eigenschaft_id, row.name, row.wert],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
await client.query(
|
||||
|
||||
@@ -19,7 +19,7 @@ interface CreatePersonalEquipmentData {
|
||||
anschaffung_datum?: string;
|
||||
zustand?: string;
|
||||
notizen?: string;
|
||||
eigenschaften?: { eigenschaft_id?: number; name: string; wert: string }[];
|
||||
eigenschaften?: { eigenschaft_id?: number | null; name: string; wert: string }[];
|
||||
}
|
||||
|
||||
interface UpdatePersonalEquipmentData {
|
||||
|
||||
Reference in New Issue
Block a user