import * as api from "../api/dashboard_user.js" export default { namespaced: true, state: { users: [], selected_user: {}, project_options: [], search_username: '', search_project: { mcu_id: 'all', project_number: 'All', project_name: 'Semua Project' }, project_keyword: '', page: 1, limit: 20, total_rows: 0, total_pages: 0, search_status: 0, save_status: 0, save_error_message: '', dialog_success: false, msg_success: '' }, mutations: { update_users(state, val) { state.users = val }, update_selected_user(state, val) { state.selected_user = val }, update_project_options(state, val) { state.project_options = val }, update_search_username(state, val) { state.search_username = val }, update_search_project(state, val) { state.search_project = val }, update_project_keyword(state, val) { state.project_keyword = val }, update_page(state, val) { state.page = val }, update_limit(state, val) { state.limit = val }, update_total_rows(state, val) { state.total_rows = val }, update_total_pages(state, val) { state.total_pages = val }, update_search_status(state, val) { state.search_status = val }, update_save_status(state, val) { state.save_status = val }, update_save_error_message(state, val) { state.save_error_message = val }, update_dialog_success(state, val) { state.dialog_success = val }, update_msg_success(state, val) { state.msg_success = val } }, actions: { async search(context, prm) { context.commit('update_search_status', 1) try { prm.token = one_token() let resp = await api.search(prm) if (resp.status != 'OK') { context.commit('update_search_status', 3) context.commit('update_save_error_message', resp.message) } else { let data = resp.data || {} let records = data.records || [] context.commit('update_users', records) context.commit('update_total_rows', data.pagination ? data.pagination.total_rows : 0) context.commit('update_total_pages', data.pagination ? data.pagination.total_pages : 0) context.commit('update_limit', data.pagination ? data.pagination.limit : 20) let selected = context.state.selected_user || {} if (selected.User_ID) { let refreshed = records.find(function (item) { return item.User_ID == selected.User_ID }) if (refreshed) { context.commit('update_selected_user', refreshed) } } context.commit('update_search_status', 2) } } catch (e) { context.commit('update_search_status', 3) context.commit('update_save_error_message', e.message) } }, async search_project(context, prm) { try { prm.token = one_token() let resp = await api.search_project(prm) if (resp.status != 'OK') { context.commit('update_project_options', []) } else { context.commit('update_project_options', resp.data.records || []) } } catch (e) { context.commit('update_project_options', []) } }, async save(context, prm) { context.commit('update_save_status', 1) prm.token = one_token() let resp = await api.save(prm) if (resp.status != 'OK') { context.commit('update_save_status', 3) context.commit('update_save_error_message', resp.message) return resp } context.commit('update_save_status', 2) context.commit('update_msg_success', (resp.data && resp.data.message) ? resp.data.message : 'User berhasil disimpan') context.commit('update_dialog_success', true) return resp }, async reset_password(context, prm) { context.commit('update_save_status', 1) prm.token = one_token() let resp = await api.reset_password(prm) if (resp.status != 'OK') { context.commit('update_save_status', 3) context.commit('update_save_error_message', resp.message) return resp } context.commit('update_save_status', 2) context.commit('update_msg_success', (resp.data && resp.data.message) ? resp.data.message : 'Password berhasil direset') context.commit('update_dialog_success', true) return resp }, async remove_user(context, prm) { context.commit('update_save_status', 1) prm.token = one_token() let resp = await api.remove_user(prm) if (resp.status != 'OK') { context.commit('update_save_status', 3) context.commit('update_save_error_message', resp.message) return resp } context.commit('update_save_status', 2) context.commit('update_msg_success', (resp.data && resp.data.message) ? resp.data.message : 'User berhasil dihapus') context.commit('update_dialog_success', true) return resp }, async assign_project(context, prm) { context.commit('update_save_status', 1) prm.token = one_token() let resp = await api.assign_project(prm) if (resp.status != 'OK') { context.commit('update_save_status', 3) context.commit('update_save_error_message', resp.message) return resp } context.commit('update_save_status', 2) context.commit('update_msg_success', (resp.data && resp.data.message) ? resp.data.message : 'Project berhasil di-assign') context.commit('update_dialog_success', true) return resp }, async remove_project(context, prm) { context.commit('update_save_status', 1) prm.token = one_token() let resp = await api.remove_project(prm) if (resp.status != 'OK') { context.commit('update_save_status', 3) context.commit('update_save_error_message', resp.message) return resp } context.commit('update_save_status', 2) context.commit('update_msg_success', (resp.data && resp.data.message) ? resp.data.message : 'Project berhasil dihapus') context.commit('update_dialog_success', true) return resp } } }