73 lines
1.6 KiB
JavaScript
73 lines
1.6 KiB
JavaScript
// src/stores/userListStore.js
|
||
import { defineStore } from 'pinia'
|
||
import api from 'src/services/api'
|
||
|
||
export const useUserListStore = defineStore('userlist', {
|
||
state: () => ({
|
||
users: [],
|
||
loading: false,
|
||
error: null,
|
||
|
||
filters: {
|
||
search: '',
|
||
onlyActive: false
|
||
}
|
||
}),
|
||
|
||
getters: {
|
||
filteredUsers(state) {
|
||
let result = state.users
|
||
const term = state.filters.search?.toLowerCase() || ''
|
||
|
||
if (term) {
|
||
result = result.filter(u =>
|
||
u.code?.toLowerCase().includes(term) ||
|
||
u.nebim_username?.toLowerCase().includes(term) ||
|
||
u.role_names?.toLowerCase().includes(term) ||
|
||
u.department_names?.toLowerCase().includes(term) ||
|
||
u.piyasa_names?.toLowerCase().includes(term)
|
||
)
|
||
}
|
||
|
||
if (state.filters.onlyActive) {
|
||
result = result.filter(u => u.is_active)
|
||
}
|
||
|
||
return result
|
||
}
|
||
},
|
||
|
||
actions: {
|
||
async fetchUsers() {
|
||
this.loading = true
|
||
this.error = null
|
||
|
||
try {
|
||
const params = {}
|
||
|
||
if (this.filters.search) {
|
||
params.search = this.filters.search
|
||
}
|
||
|
||
const { data } = await api.get(
|
||
'/users/list',
|
||
{ params }
|
||
)
|
||
|
||
this.users = Array.isArray(data) ? data : []
|
||
|
||
console.log('✅ User listesi alındı:', this.users.length)
|
||
|
||
} catch (err) {
|
||
console.error('❌ User listesi alınamadı:', err)
|
||
this.users = []
|
||
this.error =
|
||
err?.message ||
|
||
'Kullanıcı listesi alınamadı'
|
||
} finally {
|
||
this.loading = false
|
||
}
|
||
}
|
||
}
|
||
})
|