+
-
+
@@ -227,7 +227,7 @@ export default {
Notification,
},
data: () => ({
- role: UserStorage.get() ? UserStorage.get().role : null,
+ type: UserStorage.get() ? UserStorage.get().type : null,
statistics: {},
}),
methods: {
diff --git a/src/components/Global/Section/SideBar.vue b/src/components/Global/Section/SideBar.vue
index bbe1d85..b382ae1 100644
--- a/src/components/Global/Section/SideBar.vue
+++ b/src/components/Global/Section/SideBar.vue
@@ -3,27 +3,32 @@
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
+
+
-
-
-
-
-
-
+
+
@@ -38,7 +43,120 @@ export default {
MenuItem,
},
data: () => ({
- role: UserStorage.get() ? UserStorage.get().role : null,
+ type: UserStorage.get() ? UserStorage.get().type : null,
}),
+ computed: {
+ sideBar() {
+ var menuItems = [];
+ this.type === "admin"
+ ? (menuItems = [
+ {
+ id: 1,
+ text: "Home",
+ link: "dashboard",
+ active: this.$route.name === "dashboard",
+ },
+ {
+ id: 2,
+ text: "my profile",
+ link: "profile",
+ active: this.$route.name === "profile",
+ },
+ {
+ id: 3,
+ text: "my bookmarks",
+ link: "bookmarks",
+ active: this.$route.name === "bookmarks",
+ },
+ {
+ id: 4,
+ text: "programs",
+ link: "programs",
+ active: this.$route.name === "programs",
+ },
+ {
+ id: 5,
+ text: "users",
+ link: "users",
+ active: this.$route.name === "users",
+ },
+ {
+ id: 6,
+ text: "products",
+ link: "products",
+ active: this.$route.name === "products",
+ },
+ {
+ id: 7,
+ text: "workouts",
+ link: "workouts",
+ active: this.$route.name === "workouts",
+ },
+ ])
+ : this.type === "trainer"
+ ? (menuItems = [
+ {
+ id: 1,
+ text: "Home",
+ link: "dashboard",
+ active: this.$route.name === "dashboard",
+ },
+ {
+ id: 2,
+ text: "my profile",
+ link: "profile",
+ active: this.$route.name === "profile",
+ },
+ {
+ id: 3,
+ text: "my programs",
+ link: "trainPrograms",
+ active: this.$route.name === "trainPrograms",
+ },
+ {
+ id: 4,
+ text: "my trainees",
+ link: "users",
+ active: this.$route.name === "users",
+ },
+ {
+ id: 5,
+ text: "my bookmarks",
+ link: "bookmarks",
+ active: this.$route.name === "bookmarks",
+ },
+ ])
+ : (menuItems = [
+ {
+ id: 1,
+ text: "Home",
+ link: "dashboard",
+ active: this.$route.name === "dashboard",
+ },
+ {
+ id: 2,
+ text: "my profile",
+ link: "profile",
+ active: this.$route.name === "profile",
+ },
+ {
+ id: 3,
+ text: "my programs",
+ link: "trainPrograms",
+ active: this.$route.name === "trainPrograms",
+ },
+ {
+ id: 5,
+ text: "my bookmarks",
+ link: "bookmarks",
+ active: this.$route.name === "bookmarks",
+ },
+ ]);
+ return menuItems;
+ },
+ },
+ created() {
+ console.log(this.$route.name);
+ },
};
\ No newline at end of file
diff --git a/src/components/Users/Item.vue b/src/components/Users/Item.vue
index 91729df..5587770 100644
--- a/src/components/Users/Item.vue
+++ b/src/components/Users/Item.vue
@@ -16,20 +16,20 @@
Role:
- {{ userRole }}
+ {{ user.type }}
-
+
{{ user.created_courses_count }}
program created
-
+
{{ user.joined_courses_count }}
@@ -45,7 +45,7 @@
width="48"
class="ml-1 custom-btn custom-icon"
icon="WMi-gold-medal"
- @click.native="$_openModal('changeRole')"
+ @click.native="chageRole"
size="large"
/>
@@ -79,19 +79,16 @@ export default {
type: Object,
},
},
- computed: {
- userRole() {
- return this.user.is_admin && !this.user.is_trainer
- ? "admin"
- : this.user.is_admin && this.user.is_trainer
- ? "admin & trainer"
- : this.user.is_trainer
- ? "trainer"
- : "trainee";
- },
- },
methods: {
...mapActions("users", ["deleteUser"]),
+ chageRole() {
+ this.$emit("userId", this.user.id);
+ // let role = this.user.userRoles.map((role) => role.id);
+ this.$_openModal("changeRole", { role: this.user.role_ids });
+ },
+ },
+ created() {
+ console.log(this.user);
},
};
diff --git a/src/components/Users/Main.vue b/src/components/Users/Main.vue
index de2bd48..6f6498b 100644
--- a/src/components/Users/Main.vue
+++ b/src/components/Users/Main.vue
@@ -25,7 +25,7 @@
-
+
@@ -36,7 +36,7 @@
-
+
@@ -56,7 +56,8 @@ export default {
FiltersModal,
},
data: () => ({
- role: UserStorage.get() ? UserStorage.get().role : null,
+ type: UserStorage.get() ? UserStorage.get().type : null,
+ id: null,
}),
computed: {
...mapGetters("users", ["getUsers", "getPaginationUser"]),
@@ -71,10 +72,13 @@ export default {
}
},
async load() {
- this.role === "admin"
+ this.type === "admin"
? await this.loadUsers()
: await this.loadTrainerTrainee();
},
+ userId(id) {
+ this.id = id;
+ },
},
created() {
this.load();
diff --git a/src/components/Users/Modals/ChangeRoleModal.vue b/src/components/Users/Modals/ChangeRoleModal.vue
index 2c9c5db..e60b1f6 100644
--- a/src/components/Users/Modals/ChangeRoleModal.vue
+++ b/src/components/Users/Modals/ChangeRoleModal.vue
@@ -1,5 +1,5 @@
-
+
@@ -15,14 +15,14 @@
-
-
+
+
- {{ role.text }}
+ {{ role.name }}
@@ -61,42 +61,70 @@
height="29"
class="btn__modal--confirm custom-btn wa__f__m__eb"
text="change"
+ @click.native="changeRole"
/>
diff --git a/src/router/path.js b/src/router/path.js
index d4f4ad3..3cd0803 100644
--- a/src/router/path.js
+++ b/src/router/path.js
@@ -18,7 +18,7 @@ export default [
path: '/',
view: 'Dashboard',
name: 'dashboard',
- meta: { auth: true }
+ // meta: { auth: true }
},
{
path: '/users',
diff --git a/src/router/url.js b/src/router/url.js
index 7fd382a..2a4b60c 100644
--- a/src/router/url.js
+++ b/src/router/url.js
@@ -9,9 +9,9 @@ const urls = {
// programs
indexProgram: "admin/courses",
showProgram: "admin/courses/:course",
- storeProgram: 'trainer/courses',
- verifyProgram: 'admin/courses/verify-course/:course',
- destroyProgram: 'admin/courses/:course',
+ storeProgram: "trainer/courses",
+ verifyProgram: "admin/courses/verify-course/:course",
+ destroyProgram: "admin/courses/:course",
updateProgram: "trainer/courses/:course",
// user programs
indexUserProgram: "my-courses",
@@ -47,7 +47,9 @@ const urls = {
// users
indexUsers: "admin/users",
destroyUser: "admin/users/:user",
- indexTrainerTrainee: 'trainer/trainees',
+ indexTrainerTrainee: "trainer/trainees",
+ indexRoles: "admin/roles",
+ updateRoles: "admin/users/:user/assign-roles",
// countries
indexCountries: "countries",
// profile
@@ -63,8 +65,8 @@ const urls = {
indexTrainer: "trainer-dashboard-statistic",
indexTrainee: "trainee-dashboard-statistic",
// file
- storeFile: 'media',
- destroyFile: 'media/:media'
+ storeFile: "media",
+ destroyFile: "media/:media"
};
export default urlGenerator(urls);
diff --git a/src/store/modules/users/actions.js b/src/store/modules/users/actions.js
index d90511c..99e3af5 100644
--- a/src/store/modules/users/actions.js
+++ b/src/store/modules/users/actions.js
@@ -1,4 +1,5 @@
import UserRepository from "@/abstraction/repository/userRepository";
+import RoleRepository from "@/abstraction/repository/roleRepository";
export default {
async loadUsers({ state, commit }) {
let data = { pagination: state.pagination, filters: state.filters }
@@ -14,6 +15,17 @@ export default {
commit("SET_USERS", resource.data);
commit("SET_PAGINATION", resource.pagination);
},
+ async laodRoles({ commit }) {
+ let repository = new RoleRepository();
+ const resource = await repository.index();
+ commit("SET_ROLES", resource.data)
+ },
+ async updateRole({ commit }, data) {
+ let repository = new RoleRepository();
+ const resource = await repository.update(data);
+ console.log(resource);
+ commit("UPDATE_USER", resource);
+ },
async deleteUser({ commit }, userId) {
let repository = new UserRepository();
await repository.delete(userId);
diff --git a/src/store/modules/users/getters.js b/src/store/modules/users/getters.js
index 4b848a0..96c6fda 100644
--- a/src/store/modules/users/getters.js
+++ b/src/store/modules/users/getters.js
@@ -1,4 +1,5 @@
export default {
getUsers: state => state.users,
+ getRoles: state => state.roles,
getPaginationUser: state => state.pagination
};
diff --git a/src/store/modules/users/mutations.js b/src/store/modules/users/mutations.js
index e439837..a4fd4ce 100644
--- a/src/store/modules/users/mutations.js
+++ b/src/store/modules/users/mutations.js
@@ -11,6 +11,14 @@ export default {
Vue.set(state, "filters", payload);
state.pagination.page = 1
},
+ SET_ROLES(state, payload) {
+ Vue.set(state, "roles", payload);
+ },
+ UPDATE_USER(state, payload) {
+ console.log(payload);
+ const index = state.users.findIndex((x) => x.id === payload.id);
+ Vue.set(state.users, index, payload);
+ },
DELETE_USER(state, userId) {
const index = state.users.findIndex((x) => x.id === userId);
// state.users.splice(index, 1);
diff --git a/src/store/modules/users/state.js b/src/store/modules/users/state.js
index 60ddc36..abe4d54 100644
--- a/src/store/modules/users/state.js
+++ b/src/store/modules/users/state.js
@@ -1,5 +1,6 @@
export default {
users: [],
+ roles: [],
pagination: {
itemsPerPage: 12
},
diff --git a/src/views/Users.vue b/src/views/Users.vue
index a11e42e..534fa7a 100644
--- a/src/views/Users.vue
+++ b/src/views/Users.vue
@@ -11,7 +11,7 @@
-
+