import { API_ADDRESS } from "@/core/service/api-address"; import api from "@/core/service/axios"; import type { RegistrationFormData } from "@modules/dashboard/pages/profile/profile.type"; import { to } from "await-to-js"; export const fetchUserProfile = async () => { const person = JSON.parse(localStorage.getItem("person") || "{}"); const query = { ProcessName: "user", OutputFields: [ "username", "name", "family", "education_level", "base", "account_type", "nickname", "school_code", "school_code.title", "invitor", "nationalcode", ], conditions: [["username", "=", person.ID]], }; const res = await api.post(API_ADDRESS.select, query); if (!res.data || res.data.length === 0) { throw new Error("User not found"); } const user = JSON.parse(res.data.data)[0]; if (user) localStorage.setItem("person", JSON.stringify(user)); return { username: user.username, name: user.name, family: user.family, educationLevel: user.education_level, base: user.base, userType: user.account_type, nickname: user.nickname, schoolCode: user.school_code, invitor: user.invitor, nationalcode: user.nationalcode, }; }; export const updateUserProfile = async (data: RegistrationFormData) => { const personStr = localStorage.getItem("person"); if (!personStr) { throw new Error("کاربر وارد سیستم نشده است"); } const person = JSON.parse(personStr); const natinalCode = person.NationalCode; let payload = { user: { username: String(person.ID), name: data.name.trim(), family: data.family.trim(), nickname: data.nickname.trim() || undefined, education_level: data.education_level, base: data.base, account_type: "عادی", nationalcode: data.nationalcode, ...(data.school_code && { school_code: data.school_code.trim() }), ...(data.invitor && { invitor: data.invitor.trim() }), ...(natinalCode && { WorkflowID: person.ID }), }, }; const [error, response] = await to(api.post(API_ADDRESS.save, payload)); if (error) { console.error("خطا در ارسال اطلاعات پروفایل:", error.message || error); throw error; } return response?.data; };