about page changes

This commit is contained in:
Alex
2024-09-29 21:30:21 +02:00
parent aea61e9440
commit 4bd10d24d2
2 changed files with 339 additions and 188 deletions

View File

@@ -1,6 +1,7 @@
import { BASE_API_URI } from "$lib/utils/constants";
import { formatError } from "$lib/utils/helpers";
import { fail, redirect } from "@sveltejs/kit";
import { toRFC3339 } from "$lib/utils/utils";
/** @type {import('./$types').PageServerLoad} */
export async function load({ locals, params }) {
@@ -21,19 +22,50 @@ export const actions = {
* @returns Error data or redirects user to the home page or the previous page
*/
updateUser: async ({ request, fetch, cookies, locals }) => {
const formData = await request.formData();
/** @type {Record<string, string>} */
const updateData = {};
let formData = await request.formData();
// Convert FormData to a plain object
formData.forEach((value, key) => {
if (typeof value === "string" && value !== "") {
updateData[key] = value;
}
});
/** @type {Partial<App.Locals['user']>} */
const updateData = {
id: Number(formData.get("id")),
first_name: String(formData.get("first_name")),
last_name: String(formData.get("last_name")),
email: String(formData.get("email")),
phone: String(formData.get("phone")),
notes: String(formData.get("notes")),
address: String(formData.get("address")),
zip_code: String(formData.get("zip_code")),
city: String(formData.get("city")),
date_of_birth: toRFC3339(formData.get("birth_date")),
company: String(formData.get("company")),
profile_picture: String(formData.get("profile_picture")),
membership: {
id: Number(formData.get("membership_id")),
start_date: toRFC3339(formData.get("membership_start_date")),
end_date: toRFC3339(formData.get("membership_end_date")),
status: Number(formData.get("membership_status")),
parent_member_id: Number(formData.get("parent_member_id")),
subscription_model: {
id: Number(formData.get("subscription_model_id")),
name: String(formData.get("subscription_model_name")),
},
},
bank_account: {
id: Number(formData.get("bank_account_id")),
mandate_date_signed: String(formData.get("mandate_date_signed")),
bank: String(formData.get("bank")),
account_holder_name: String(formData.get("account_holder_name")),
iban: String(formData.get("iban")),
bic: String(formData.get("bic")),
mandate_reference: String(formData.get("mandate_reference")),
},
};
// Remove undefined or null properties
const cleanUpdateData = Object.fromEntries(
Object.entries(updateData).filter(([_, v]) => v != null)
);
console.dir(cleanUpdateData);
const apiURL = `${BASE_API_URI}/backend/users/update/`;
const res = await fetch(apiURL, {
method: "PATCH",
credentials: "include",
@@ -41,7 +73,7 @@ export const actions = {
"Content-Type": "application/json",
Cookie: `jwt=${cookies.get("jwt")}`,
},
body: JSON.stringify(updateData),
body: JSON.stringify(cleanUpdateData),
});
if (!res.ok) {
@@ -51,11 +83,11 @@ export const actions = {
}
const response = await res.json();
locals.user = response;
// Format dates
if (locals.user.date_of_birth) {
locals.user.date_of_birth = response["date_of_birth"].split("T")[0];
locals.user.date_of_birth = response.date_of_birth.split("T")[0];
}
if (locals.user.membership?.start_date) {
locals.user.membership.start_date =
@@ -65,6 +97,7 @@ export const actions = {
locals.user.membership.end_date =
locals.user.membership.end_date.split("T")[0];
}
throw redirect(303, `/auth/about/${response.id}`);
},
/**
@@ -102,6 +135,7 @@ export const actions = {
profile_picture: response[""],
};
},
/**
*
* @param request - The request object