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; } }, };