mirror of
https://github.com/crater-invoice/crater.git
synced 2025-10-28 20:21:10 -04:00
v5.0.0 update
This commit is contained in:
232
resources/scripts/stores/users.js
Normal file
232
resources/scripts/stores/users.js
Normal file
@ -0,0 +1,232 @@
|
||||
import axios from 'axios'
|
||||
import { defineStore } from 'pinia'
|
||||
import { useNotificationStore } from './notification'
|
||||
import { handleError } from '../helpers/error-handling'
|
||||
|
||||
export const useUsersStore = (useWindow = false) => {
|
||||
const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore
|
||||
const { global } = window.i18n
|
||||
|
||||
return defineStoreFunc({
|
||||
id: 'users',
|
||||
state: () => ({
|
||||
roles: [],
|
||||
users: [],
|
||||
totalUsers: 0,
|
||||
currentUser: null,
|
||||
selectAllField: false,
|
||||
selectedUsers: [],
|
||||
customerList: [],
|
||||
userList: [],
|
||||
|
||||
userData: {
|
||||
name: '',
|
||||
email: '',
|
||||
password: null,
|
||||
phone: null,
|
||||
companies: [],
|
||||
},
|
||||
}),
|
||||
|
||||
actions: {
|
||||
resetUserData() {
|
||||
this.userData = {
|
||||
name: '',
|
||||
email: '',
|
||||
password: null,
|
||||
phone: null,
|
||||
role: null,
|
||||
companies: [],
|
||||
}
|
||||
},
|
||||
|
||||
fetchUsers(params) {
|
||||
return new Promise((resolve, reject) => {
|
||||
axios
|
||||
.get(`/api/v1/users`, { params })
|
||||
.then((response) => {
|
||||
this.users = response.data.data
|
||||
this.totalUsers = response.data.meta.total
|
||||
resolve(response)
|
||||
})
|
||||
.catch((err) => {
|
||||
handleError(err)
|
||||
reject(err)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
fetchUser(id) {
|
||||
return new Promise((resolve, reject) => {
|
||||
axios
|
||||
.get(`/api/v1/users/${id}`)
|
||||
.then((response) => {
|
||||
this.userData = response.data.data
|
||||
if (this.userData?.companies?.length) {
|
||||
this.userData.companies.forEach((c, i) => {
|
||||
this.userData.roles.forEach((r) => {
|
||||
if (r.scope === c.id)
|
||||
this.userData.companies[i].role = r.name
|
||||
})
|
||||
})
|
||||
}
|
||||
resolve(response)
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err)
|
||||
handleError(err)
|
||||
reject(err)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
fetchRoles(state) {
|
||||
return new Promise((resolve, reject) => {
|
||||
axios
|
||||
.get(`/api/v1/roles`)
|
||||
.then((response) => {
|
||||
this.roles = response.data.data
|
||||
resolve(response)
|
||||
})
|
||||
.catch((err) => {
|
||||
handleError(err)
|
||||
reject(err)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
addUser(data) {
|
||||
return new Promise((resolve, reject) => {
|
||||
axios
|
||||
.post('/api/v1/users', data)
|
||||
.then((response) => {
|
||||
this.users.push(response.data)
|
||||
const notificationStore = useNotificationStore()
|
||||
|
||||
notificationStore.showNotification({
|
||||
type: 'success',
|
||||
message: global.t('users.created_message'),
|
||||
})
|
||||
resolve(response)
|
||||
})
|
||||
.catch((err) => {
|
||||
handleError(err)
|
||||
reject(err)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
updateUser(data) {
|
||||
return new Promise((resolve, reject) => {
|
||||
axios
|
||||
.put(`/api/v1/users/${data.id}`, data)
|
||||
.then((response) => {
|
||||
if (response) {
|
||||
let pos = this.users.findIndex(
|
||||
(user) => user.id === response.data.data.id
|
||||
)
|
||||
this.users[pos] = response.data.data
|
||||
}
|
||||
const notificationStore = useNotificationStore()
|
||||
notificationStore.showNotification({
|
||||
type: 'success',
|
||||
message: global.t('users.updated_message'),
|
||||
})
|
||||
resolve(response)
|
||||
})
|
||||
.catch((err) => {
|
||||
handleError(err)
|
||||
reject(err)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
deleteUser(id) {
|
||||
const notificationStore = useNotificationStore()
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
axios
|
||||
.post(`/api/v1/users/delete`, { users: id.ids })
|
||||
.then((response) => {
|
||||
let index = this.users.findIndex((user) => user.id === id)
|
||||
this.users.splice(index, 1)
|
||||
notificationStore.showNotification({
|
||||
type: 'success',
|
||||
message: global.tc('users.deleted_message', 1),
|
||||
})
|
||||
resolve(response)
|
||||
})
|
||||
.catch((err) => {
|
||||
handleError(err)
|
||||
reject(err)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
deleteMultipleUsers() {
|
||||
return new Promise((resolve, reject) => {
|
||||
axios
|
||||
.post(`/api/v1/users/delete`, { users: this.selectedUsers })
|
||||
.then((response) => {
|
||||
this.selectedUsers.forEach((user) => {
|
||||
let index = this.users.findIndex(
|
||||
(_user) => _user.id === user.id
|
||||
)
|
||||
this.users.splice(index, 1)
|
||||
})
|
||||
const notificationStore = useNotificationStore()
|
||||
notificationStore.showNotification({
|
||||
type: 'success',
|
||||
message: global.tc('users.deleted_message', 2),
|
||||
})
|
||||
resolve(response)
|
||||
})
|
||||
.catch((err) => {
|
||||
handleError(err)
|
||||
reject(err)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
searchUsers(params) {
|
||||
return new Promise((resolve, reject) => {
|
||||
window.axios
|
||||
.get(`/api/v1/search`, { params })
|
||||
.then((response) => {
|
||||
this.userList = response.data.users.data
|
||||
this.customerList = response.data.customers.data
|
||||
resolve(response)
|
||||
})
|
||||
.catch((err) => {
|
||||
handleError(err)
|
||||
reject(err)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
setSelectAllState(data) {
|
||||
this.selectAllField = data
|
||||
},
|
||||
|
||||
selectUser(data) {
|
||||
this.selectedUsers = data
|
||||
if (this.selectedUsers.length === this.users.length) {
|
||||
this.selectAllField = true
|
||||
} else {
|
||||
this.selectAllField = false
|
||||
}
|
||||
},
|
||||
|
||||
selectAllUsers() {
|
||||
if (this.selectedUsers.length === this.users.length) {
|
||||
this.selectedUsers = []
|
||||
this.selectAllField = false
|
||||
} else {
|
||||
let allUserIds = this.users.map((user) => user.id)
|
||||
this.selectedUsers = allUserIds
|
||||
this.selectAllField = true
|
||||
}
|
||||
},
|
||||
},
|
||||
})()
|
||||
}
|
||||
Reference in New Issue
Block a user