- Added ProfileCard component to display user profile information. - Created DashboardLayout for consistent layout structure. - Defined Campaign and related types for campaign management. - Developed CampaignDetailPage for viewing individual campaign details. - Implemented CampaignsPage for listing and filtering campaigns. - Enhanced DashboardPage with user profile fetching and navigation. - Built RegisterPage for user profile registration and updates. - Added user service for fetching and updating user profiles. - Established campaigns service for managing campaign data and interactions. - Updated routing constants and router configuration for new pages.
82 lines
2.3 KiB
TypeScript
82 lines
2.3 KiB
TypeScript
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;
|
|
};
|