backend und frontent optimiert

This commit is contained in:
titver968
2025-04-16 14:34:11 +02:00
parent 5177bce04c
commit 5e7c0600a8
6 changed files with 48 additions and 31 deletions

Binary file not shown.

View File

@@ -17,9 +17,10 @@
let wunsch1Id = ''; let wunsch1Id = '';
let wunsch2Id = ''; let wunsch2Id = '';
let wunsch3Id = ''; let wunsch3Id = '';
let fehler = '';
let success = false; let success = false;
let dienststellen = []; let dienststellen: any[];
onMount(async () => { onMount(async () => {
const res = await fetch('/api/admin/dienststellen'); const res = await fetch('/api/admin/dienststellen');
@@ -39,7 +40,13 @@
}); });
const result = await res.json(); const result = await res.json();
success = result.success; if (!res.ok) {
fehler = result.error || 'Ein Fehler ist aufgetreten. Bitte versuchen Sie es später erneut.';
success = false;
} else {
fehler = '';
success = true;
}
} }
</script> </script>
@@ -110,6 +117,10 @@
{#if success} {#if success}
<p class="text-green-600 font-semibold text-center">Anmeldung erfolgreich gesendet!</p> <p class="text-green-600 font-semibold text-center">Anmeldung erfolgreich gesendet!</p>
{/if} {/if}
{#if fehler}
<p class="text-red-600">{fehler}</p>
{/if}
</form> </form>
</div> </div>

View File

@@ -45,10 +45,9 @@
await fetch('/api/admin/logout', { method: 'POST' }); await fetch('/api/admin/logout', { method: 'POST' });
location.reload(); location.reload();
}} }}
class="text-sm text-red-600 underline" class="bg-red-600 text-white px-4 py-3 rounded text-center hiver:bg-red-700">
>
Logout Logout
</button> </button>
</div> </div>
{/if} {/if}
</div> </div>

View File

@@ -31,6 +31,14 @@
</tr> </tr>
{/each} {/each}
</tbody> </tbody>
</table>
<button
on:click={async () => {
await fetch('/api/admin/logout', { method: 'POST' });
location.reload();
}}
class="bg-red-600 text-white px-4 py-3 rounded text-center hiver:bg-red-700">
Logout
</button> </button>
</div> </div>

View File

@@ -56,6 +56,14 @@
<button on:click={() => loeschen(d.id)} class="text-sm text-red-600 hover:underline">Löschen</button> <button on:click={() => loeschen(d.id)} class="text-sm text-red-600 hover:underline">Löschen</button>
</li> </li>
{/each} {/each}
</ul>
<button
on:click={async () => {
await fetch('/api/admin/logout', { method: 'POST' });
location.reload();
}}
class="bg-red-600 text-white px-4 py-3 rounded text-center hiver:bg-red-700">
Logout
</button> </button>
</div> </div>

View File

@@ -1,5 +1,6 @@
import { PrismaClient } from '@prisma/client'; import { PrismaClient } from '@prisma/client';
import type { RequestHandler } from '@sveltejs/kit'; import { json, type RequestHandler } from '@sveltejs/kit';
import { Prisma } from '@prisma/client';
const prisma = new PrismaClient(); const prisma = new PrismaClient();
@@ -28,25 +29,15 @@ export const POST: RequestHandler = async ({ request }) => {
} }
}); });
const exists = await prisma.anmeldung.findUnique({ return json({ success: true });
where: { email: data.email }
});
if (exists) {
return new Response(JSON.stringify({ success: false, error: 'Diese E-Mail wurde bereits verwendet.' }), {
status: 400,
headers: { 'Content-Type': 'application/json' }
});
} else {
return new Response(JSON.stringify({ success: true }), {
headers: { 'Content-Type': 'application/json' }
});
}
} catch (error) { } catch (error) {
if (error instanceof Prisma.PrismaClientKnownRequestError) {
if (error.code === 'P2002') {
// Eindeutigkeit verletzt
return json({ error: 'Diese E-Mail-Adresse wurde bereits verwendet.' }, { status: 400 });
}
}
console.error(error); console.error(error);
return new Response(JSON.stringify({ success: false, error: 'Fehler bei Speicherung' }), { return json({ error: 'Ein Fehler ist aufgetreten.' }, { status: 500 });
status: 500,
headers: { 'Content-Type': 'application/json' }
});
} }
}; };