- {#if hasPrivilige(editor, PERMISSIONS.Member)}
+ {#if hasPrivilige(user, PERMISSIONS.Member)}
{$t('subscription.monthly_fee')}:
@@ -476,7 +407,7 @@
name="user[membership][start_date]"
type="date"
label={$t('start')}
- bind:value={localUser.membership.start_date}
+ bind:value={user.membership.start_date}
placeholder={$t('placeholder.start_date')}
readonly={readonlyUser}
/>
@@ -484,16 +415,16 @@
name="user[membership][end_date]"
type="date"
label={$t('end')}
- bind:value={localUser.membership.end_date}
+ bind:value={user.membership.end_date}
placeholder={$t('placeholder.end_date')}
readonly={readonlyUser}
/>
- {#if hasPrivilige(editor, PERMISSIONS.Member)}
+ {#if hasPrivilige(user, PERMISSIONS.Member)}
@@ -503,33 +434,34 @@
@@ -537,7 +469,7 @@
name="user[bank_account][mandate_date_signed]"
label={$t('mandate_date_signed')}
type="date"
- bind:value={localUser.bank_account.mandate_date_signed}
+ bind:value={user.bank_account.mandate_date_signed}
readonly={true}
/>
diff --git a/frontend/src/lib/utils/constants.js b/frontend/src/lib/utils/constants.js
index 65a874c..7a454bf 100644
--- a/frontend/src/lib/utils/constants.js
+++ b/frontend/src/lib/utils/constants.js
@@ -10,3 +10,5 @@ export const PERMISSIONS = {
Delete: 4,
Super: 8
};
+
+export const SUPPORTER_SUBSCRIPTION_MODEL_NAME = 'Keins';
diff --git a/frontend/src/lib/utils/defaults.js b/frontend/src/lib/utils/defaults.js
new file mode 100644
index 0000000..cef4889
--- /dev/null
+++ b/frontend/src/lib/utils/defaults.js
@@ -0,0 +1,119 @@
+// src/lib/utils/defaults.js
+
+import { SUPPORTER_SUBSCRIPTION_MODEL_NAME } from './constants';
+
+/**
+ * @returns {App.Types['subscription']}
+ */
+export function defaultSubscription() {
+ return {
+ id: 0,
+ name: '',
+ details: '',
+ conditions: '',
+ monthly_fee: 0,
+ hourly_rate: 0,
+ included_hours_per_year: 0,
+ included_hours_per_month: 0
+ };
+}
+
+/**
+ * @returns {App.Types['membership']}
+ */
+export function defaultMembership() {
+ return {
+ id: 0,
+ status: 3,
+ start_date: '',
+ end_date: '',
+ parent_member_id: 0,
+ subscription_model: defaultSubscription()
+ };
+}
+
+/**
+ * @returns {App.Types['bankAccount']}
+ */
+export function defaultBankAccount() {
+ return {
+ id: 0,
+ mandate_date_signed: '',
+ bank: '',
+ account_holder_name: '',
+ iban: '',
+ bic: '',
+ mandate_reference: ''
+ };
+}
+
+/**
+ * @returns {App.Types['licence']}
+ */
+export function defaultLicence() {
+ return {
+ id: 0,
+ status: 0,
+ number: '',
+ issued_date: '',
+ expiration_date: '',
+ country: '',
+ categories: []
+ };
+}
+
+/**
+ * @returns {App.Locals['user']}
+ */
+export function defaultUser() {
+ return {
+ id: 0,
+ email: '',
+ first_name: '',
+ last_name: '',
+ password: '',
+ phone: '',
+ address: '',
+ zip_code: '',
+ city: '',
+ company: '',
+ dateofbirth: '',
+ notes: '',
+ profile_picture: '',
+ payment_status: 0,
+ status: 1,
+ role_id: 1,
+ membership: defaultMembership(),
+ licence: defaultLicence(),
+ bank_account: defaultBankAccount()
+ };
+}
+
+/**
+ * @returns {App.Locals['user']}
+ */
+export function defaultSupporter() {
+ let supporter = {
+ id: 0,
+ email: '',
+ first_name: '',
+ last_name: '',
+ password: '',
+ phone: '',
+ address: '',
+ zip_code: '',
+ city: '',
+ company: '',
+ dateofbirth: '',
+ notes: '',
+ profile_picture: '',
+ payment_status: 0,
+ status: 1,
+ role_id: 0,
+ membership: defaultMembership(),
+ licence: defaultLicence(),
+ bank_account: defaultBankAccount()
+ };
+ supporter.membership.subscription_model.name = SUPPORTER_SUBSCRIPTION_MODEL_NAME;
+ return supporter;
+}
diff --git a/frontend/src/routes/auth/admin/users/+page.svelte b/frontend/src/routes/auth/admin/users/+page.svelte
index dfcda3d..65f3da7 100644
--- a/frontend/src/routes/auth/admin/users/+page.svelte
+++ b/frontend/src/routes/auth/admin/users/+page.svelte
@@ -8,6 +8,7 @@
import { applyAction, enhance } from '$app/forms';
import { hasPrivilige, receive, send } from '$lib/utils/helpers';
import { PERMISSIONS } from '$lib/utils/constants';
+ import { defaultSupporter, defaultUser } from '$lib/utils/defaults';
/** @type {import('./$types').ActionData} */
export let form;
@@ -96,7 +97,7 @@
/**
* Opens the edit modal for the selected user.
- * @param {App.Locals['user'] | null} user The user to edit.
+ * @param {App.Locals['user']} user The user to edit.
*/
const openEditUserModal = (user) => {
selectedUser = user;
@@ -213,7 +214,7 @@