allow vorgangPIN to be changed on Vorgang page
includes: - UI and backend logic - adjustment to `NameItemEditor` to disallow deletion
This commit is contained in:
@@ -15,7 +15,7 @@
|
|||||||
export let currentName: string;
|
export let currentName: string;
|
||||||
export let vorgangToken: string | null;
|
export let vorgangToken: string | null;
|
||||||
export let onSave: (n: string, o: string, t?: string) => unknown = () => {};
|
export let onSave: (n: string, o: string, t?: string) => unknown = () => {};
|
||||||
export let onDelete: (n: string) => unknown = () => {};
|
export let onDelete: (n: string) => unknown | null = () => {};
|
||||||
|
|
||||||
let localName = currentName;
|
let localName = currentName;
|
||||||
let isEditing = false;
|
let isEditing = false;
|
||||||
@@ -98,13 +98,15 @@
|
|||||||
>
|
>
|
||||||
<Edit class="w-4 h-4" />
|
<Edit class="w-4 h-4" />
|
||||||
</button>
|
</button>
|
||||||
<button
|
{#if onDelete}
|
||||||
data-testid="delete-button"
|
<button
|
||||||
onclick={handleDeleteClick}
|
data-testid="delete-button"
|
||||||
class="text-gray-500 hover:text-red-600 transition"
|
onclick={handleDeleteClick}
|
||||||
>
|
class="text-gray-500 hover:text-red-600 transition"
|
||||||
<Trash class="w-4 h-4" />
|
>
|
||||||
</button>
|
<Trash class="w-4 h-4" />
|
||||||
|
</button>
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
|||||||
@@ -236,13 +236,15 @@ export const vorgangPINValidation = function (vorgangToken: string, vorgangPIN:
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Rename Vorgang
|
* Change VorgangName or VorgangPIN
|
||||||
* @param vorgangToken
|
* @param vorgangToken
|
||||||
* @param newName
|
* @param newName
|
||||||
* @returns {int} number of affected lines
|
* @returns {int} number of affected lines
|
||||||
*/
|
*/
|
||||||
export const renameVorgangByToken = function (vorgangToken: string, newName: string) {
|
export const updateVorgangAttrByToken = function (vorgangToken: string,
|
||||||
const renameSQLStmt = 'UPDATE cases set name = ? WHERE token = ?';
|
newName: string,
|
||||||
|
column: string) {
|
||||||
|
const renameSQLStmt = `UPDATE cases set ${column} = ? WHERE token = ?`;
|
||||||
const statement = db.prepare(renameSQLStmt);
|
const statement = db.prepare(renameSQLStmt);
|
||||||
|
|
||||||
let info;
|
let info;
|
||||||
|
|||||||
@@ -190,6 +190,34 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function savePIN(newVorgangPIN: string, oldVorgangPIN: string) {
|
||||||
|
open = true;
|
||||||
|
inProgress = true;
|
||||||
|
isError = false;
|
||||||
|
try {
|
||||||
|
const res = await fetch(API_ROUTES.VORGANG(vorgangToken), {
|
||||||
|
method: 'PUT',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
body: JSON.stringify({ vorgangToken, oldVorgangPIN, newVorgangPIN,
|
||||||
|
changePIN: true})
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!res.ok) {
|
||||||
|
throw new Error('Fehler beim Speichern');
|
||||||
|
}
|
||||||
|
await invalidateAll();
|
||||||
|
crimesList = data.crimesList;
|
||||||
|
open = false;
|
||||||
|
} catch (err) {
|
||||||
|
console.error('⚠️ Netzwerkfehler beim Speichern', err);
|
||||||
|
isError = true;
|
||||||
|
} finally {
|
||||||
|
inProgress = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async function handleDelete(tatort: string) {
|
async function handleDelete(tatort: string) {
|
||||||
open = true;
|
open = true;
|
||||||
inProgress = true;
|
inProgress = true;
|
||||||
@@ -251,7 +279,13 @@ Mit freundlichen Grüßen,
|
|||||||
<h1 class="text-xl">{vorgangName}</h1>
|
<h1 class="text-xl">{vorgangName}</h1>
|
||||||
|
|
||||||
{#if admin}
|
{#if admin}
|
||||||
Zugangs-PIN: {vorgangPIN}
|
Zugangs-PIN:
|
||||||
|
<NameItemEditor
|
||||||
|
list={[]}
|
||||||
|
currentName={vorgangPIN}
|
||||||
|
onSave={savePIN}
|
||||||
|
onDelete={null}
|
||||||
|
/>
|
||||||
<a class="pt-2 pb-6" href={constructMailToLink()}
|
<a class="pt-2 pb-6" href={constructMailToLink()}
|
||||||
><Button disabled={isEmptyList}>Share Link</Button></a
|
><Button disabled={isEmptyList}>Share Link</Button></a
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import {
|
|||||||
deleteVorgangByToken,
|
deleteVorgangByToken,
|
||||||
getCrimesListByToken,
|
getCrimesListByToken,
|
||||||
vorgangNameExists,
|
vorgangNameExists,
|
||||||
renameVorgangByToken
|
updateVorgangAttrByToken
|
||||||
} from '$lib/server/vorgangService';
|
} from '$lib/server/vorgangService';
|
||||||
|
|
||||||
export async function DELETE({ params }) {
|
export async function DELETE({ params }) {
|
||||||
@@ -59,14 +59,26 @@ export async function GET({ params }) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// rename vorgang
|
// change Vorgang properties
|
||||||
export async function PUT({ request }) {
|
export async function PUT({ request }) {
|
||||||
const data = await request.json();
|
const data = await request.json();
|
||||||
|
|
||||||
const vorgangToken = data['vorgangToken'];
|
const vorgangToken = data['vorgangToken'];
|
||||||
const newVorgangName = data['newName'];
|
|
||||||
|
const changePIN = data['changePIN'];
|
||||||
|
|
||||||
|
let attrChanged;
|
||||||
|
let newValue;
|
||||||
|
|
||||||
const res = renameVorgangByToken(vorgangToken, newVorgangName);
|
if (changePIN) {
|
||||||
|
attrChanged = 'pin';
|
||||||
|
newValue = data['newVorgangPIN']
|
||||||
|
} else {
|
||||||
|
attrChanged = 'name';
|
||||||
|
newValue = data['newName']
|
||||||
|
}
|
||||||
|
|
||||||
|
const res = updateVorgangAttrByToken(vorgangToken, newValue, attrChanged);
|
||||||
|
|
||||||
if (!res) {
|
if (!res) {
|
||||||
return json({ msg: 'Fehler beim Umbenennen' }, { status: 400 });
|
return json({ msg: 'Fehler beim Umbenennen' }, { status: 400 });
|
||||||
|
|||||||
Reference in New Issue
Block a user