Files
khalij-pay/src/services/usersAPI.js

88 lines
3.5 KiB
JavaScript

import api from './apiClient';
// -----------------------------
// Users API با رول‌ها
// -----------------------------
const USERS_STORAGE_KEY = 'app_users_v1';
function readUsersFromStorage(){ try{ const raw = localStorage.getItem(USERS_STORAGE_KEY); return raw?JSON.parse(raw):[]; } catch{return [];} }
function writeUsersToStorage(users){ localStorage.setItem(USERS_STORAGE_KEY, JSON.stringify(users)); }
export const usersAPI = {
async list({searchQuery='',currentPage=1,pageSize=100}={}) {
try {
// اطمینان از اینکه params همیشه object است
const params = {
searchQuery: searchQuery || '',
currentPage: currentPage || 1,
pageSize: pageSize || 100
};
console.log('🔵 Users API - list request:', {
url: '/api/v1/User',
method: 'GET',
params
});
const res = await api.get('/api/v1/User',{
params,
skipAuthRedirect:true
});
console.log('🟢 Users API - list response:', res?.data);
return res?.data?.data?.data||[];
} catch (error) {
console.error('🔴 Users API - list error:', error);
console.error('🔴 Error details:', {
url: error.config?.url,
method: error.config?.method,
params: error.config?.params,
data: error.config?.data,
response: error.response?.data
});
throw error;
}
},
async get(id){
if (!id) throw new Error('User ID is required');
const res = await api.get(`/api/v1/User/${encodeURIComponent(id)}`, { skipAuthRedirect: true });
return res?.data?.data || res?.data;
},
async create(user){
const payload = { firstName:String(user?.firstName||''), lastName:String(user?.lastName||''), email:String(user?.email||''), mobile:String(user?.mobile||''), isActive:!!user?.isActive };
const res = await api.post('/api/v1/User',payload,{skipAuthRedirect:true});
return res?.data;
},
async update(id,user){
const payload = { firstName:String(user?.firstName||''), lastName:String(user?.lastName||''), email:String(user?.email||''), mobile:String(user?.mobile||''), isActive:!!user?.isActive };
const res = await api.put(`/api/v1/User/${encodeURIComponent(id)}`,payload,{skipAuthRedirect:true});
return res?.data;
},
async remove(id){
const res = await api.delete(`/api/v1/User/Delete/${encodeURIComponent(id)}/Role`,{skipAuthRedirect:true});
return res?.data;
},
async toggleActivation(id){ const res = await api.patch(`/api/v1/User/${encodeURIComponent(id)}/ToggleActivation`,null,{skipAuthRedirect:true}); return res?.data; },
async resetPassword(id){ const res = await api.patch(`/api/v1/User/${encodeURIComponent(id)}/ResetPassword`,null,{skipAuthRedirect:true}); return res?.data; },
async getRoles(userId){
try {
const res = await api.get(`/api/v1/User/${encodeURIComponent(userId)}/Role`, { skipAuthRedirect: true });
return res?.data?.data || [];
} catch(err) {
console.error(err);
return [];
}
},
async removeRole(userId,roleId){ try{ const res = await api.delete(`/api/v1/User/${encodeURIComponent(userId)}/Role/${encodeURIComponent(roleId)}`,{skipAuthRedirect:true}); return res?.data; } catch(err){ console.error(err); return null; } },
async updateRoles(userId,roleIds=[]){
try{
const res = await api.put(`/api/v1/User/${encodeURIComponent(userId)}/Role`,{roleIds},{skipAuthRedirect:true});
return res?.data;
} catch(err){
console.error(err);
return null;
}
},
};