sajjad 3 years ago
parent 0a12de97c7
commit 77451af93c

@ -38,6 +38,12 @@ export default class ProgramRepository {
return getJson(response.data.data);
}
}
async showTrainer(courseId) {
let response = await axios.get(url("showTrainerProgram", { course: courseId }));
if (response.status === 200) {
return getJson(response.data.data);
}
}
async store(data) {
let json = setData(data);
let response = await axios.post(url("storeProgram"), json);
@ -46,8 +52,8 @@ export default class ProgramRepository {
}
}
async update(courseId, data) {
let json = setData(data, true);
let response = await axios.post(
let json = setData(data);
let response = await axios.put(
url("updateProgram", { course: courseId }),
json
);
@ -58,6 +64,9 @@ export default class ProgramRepository {
async delete(courseId) {
await axios.delete(url("destroyProgram", { course: courseId }));
}
async deleteTrainer(courseId) {
await axios.delete(url("destroyTrainerProgram", { course: courseId }));
}
async verify(courseId) {
await axios.post(url("verifyProgram", { course: courseId }));
}

@ -1,6 +1,7 @@
import axios from "axios";
import url from "@/router/url";
import { getArray, setQuery } from "../resources/userResource";
import { getArray as getArrayTrainee } from "../resources/traineeResource";
export default class UserRepository {
async indexUsers(data) {
@ -14,7 +15,7 @@ export default class UserRepository {
let params = setQuery(data)
let response = await axios.get(url('indexTrainerTrainee'), { params })
if (response.status === 200) {
return getArray(response.data)
return getArrayTrainee(response.data)
}
}
async delete(userId) {

@ -23,8 +23,8 @@ export default class WorkoutRepository {
}
}
async update(workoutId, data) {
let json = setData(data, true);
let response = await axios.post(
let json = setData(data);
let response = await axios.put(
url("updateWorkout", { workout: workoutId }),
json
);

@ -25,7 +25,7 @@ export default class WorkoutToSeriesRepository {
let json = setData(data);
let response = await axios.post(url("joinWorkoutToSeries", { series: seriesId, workout: workoutId }), json);
if (response.status === 201 || response.status === 200) {
return response.data;
return getArray(response.data);
}
}
async delete(data) {

@ -20,20 +20,15 @@ export const getJson = (data) => ({
type: data.type,
period: data.period
});
export const setData = (data, isUpdate = false) => {
let formData = {
export const setData = (data) => ({
sport_category_id: data.sport_category_id,
title: data.title,
description: data.description,
tags: data.tags,
batch_id: data.batch_id,
period: data.period
};
if (isUpdate) {
formData["_method"] = "put";
}
return objectToFormData(formData);
};
});
export const getArray = ({ data, meta }) => {
const pagination = SetPagination(meta);
data = data.map((program) => getJson(program));

@ -0,0 +1,21 @@
import { SetPagination } from "@/utils/setQueriesObject";
export const getJson = (data) => ({
id: data.id,
name: data.name,
first_name: data.first_name,
last_name: data.last_name,
profile: data.profile,
birthday: data.birthday,
age: data.age,
arm_diameter: data.arm_diameter,
details: data.details,
height: data.height,
leg_diameter: data.leg_diameter,
weight: data.weight
});
export const getArray = ({ data, meta }) => {
const pagination = SetPagination(meta);
data = data.map((user) => getJson(user));
return { data, pagination };
};

@ -17,8 +17,7 @@ export const getJson = (data) => ({
set: data.set,
per_set: data.per_set,
});
export const setData = (data, isUpdate = false) => {
let formData = {
export const setData = (data) => ({
id: data.id,
workout_category_id: data.workout_category_id,
name: data.name,
@ -34,12 +33,7 @@ export const setData = (data, isUpdate = false) => {
set: data.set,
per_set: data.per_set,
estimate_time: data.estimate_time,
};
if (isUpdate) {
formData["_method"] = "put";
}
return objectToFormData(formData);
};
});
export const getArray = ({ data, meta }) => {
data = data.map((workout) => getJson(workout));
if (meta) {

@ -8,7 +8,7 @@
</div>
<v-row class="mt-3">
<v-col cols="12">
<div class="">
<div>
<div class="text-left description">
here is dashboard home, feel free navigate from right side menu or choose
from shortcuts we prepared for you.
@ -97,7 +97,7 @@
<box text="trainees" link="users" icon=" WMi-users" />
</div>
<div class="mr-5 section">
<box text="profile" link="profile" icon="WMi-user" />
<box text="profile" link="trainerProfile" icon="WMi-user" />
</div>
</div>
</div>
@ -153,7 +153,7 @@
<box text="bookmarks" link="bookmarks" icon="WMi-bookmark" />
</div>
<div class="mr-5 section">
<box text="programs" link="trainsPrograms" icon="WMi-align-left" />
<box text="programs" link="traineePrograms" icon="WMi-align-left" />
</div>
<div class="mr-5 section">
<box text="profile" link="profile" icon="WMi-user" />

@ -27,6 +27,8 @@
:color="color"
v-model="date"
:type="type"
:min="min"
:max="max"
@input="menu = false"
/>
</v-menu>
@ -42,6 +44,8 @@ export default {
type: {
default: "date",
},
min: {},
max: {},
dark: {
type: Boolean,
default: false,

@ -154,8 +154,8 @@ export default {
{
id: 3,
text: "my programs",
link: "trainsPrograms",
active: this.$route.name === "trainsPrograms",
link: "traineePrograms",
active: this.$route.name === "traineePrograms",
},
{
id: 5,

@ -90,7 +90,7 @@
label="description"
placeholder="description"
dark
v-model="form.description"
v-model.trim="form.description"
></v-textarea>
</v-col>
</v-row>

@ -10,7 +10,7 @@
:style="{ backgroundImage: `url('${product.thumbnail}')` }"
></div> -->
<img
class="w-100"
class="product__img w-100"
:src="
product.thumbnail ? product.thumbnail : 'https://via.placeholder.com/1080'
"
@ -48,9 +48,6 @@ export default {
}
.product__image .product__img {
border-radius: 20px;
height: 300px;
background-size: cover;
background-position: center;
}
.product__name {
line-height: 16px;

@ -77,7 +77,7 @@
class="no-error-msg"
label="Birthday"
dark
:max="new Date()"
:max="new Date().toISOString().slice(0, 10)"
v-model="form.birthday"
/></v-col>
<v-col cols="3"></v-col>

@ -90,7 +90,7 @@
class="no-error-msg"
label="Birthday"
dark
:max="new Date()"
:max="new Date().toISOString().slice(0, 10)"
v-model="form.birthday"
/></v-col>
<v-col cols="3"></v-col>

@ -62,7 +62,7 @@
<v-row>
<v-col cols="12">
<v-textarea
v-model="form.description"
v-model.trim="form.description"
rows="5"
label="description"
placeholder="description"

@ -10,8 +10,10 @@
}"
></div> -->
<img
class="w-100"
:src="program.thumbnail ? program.thumbnail : 'https://via.placeholder.com/1280x720'"
class="wa__program__image w-100"
:src="
program.thumbnail ? program.thumbnail : 'https://via.placeholder.com/1280x720'
"
alt="product image"
/>
<div class="wa__program__image__button">
@ -97,7 +99,7 @@ export default {
methods: {
...mapActions("programs", ["verifyProgram", "deleteProgram"]),
removeProgram(id) {
toast.question("Are sure delete brand?", "Delete Brand", () => {
toast.question("Are sure delete program?", "Delete program", () => {
this.deleteProgram(id);
});
},
@ -134,9 +136,6 @@ export default {
display: block;
transition: 0.5s ease;
backface-visibility: hidden;
height: 300px;
background-size: cover;
background-position: center;
}
.wa__program__image__button {
transition: 0.5s ease;

@ -11,7 +11,7 @@
</div>
</div>
</v-col>
<v-col cols="3">
<v-col cols="3" v-if="role === 'admin'">
<div class="d-flex align-center justify-center h-100">
<div class="user__role">
<small>Role:</small>
@ -38,7 +38,7 @@
<template v-else></template>
</div>
</v-col>
<v-col cols="3">
<v-col cols="3" v-if="role === 'admin'">
<div class="d-flex align-center h-100 justify-content-end">
<RectangleButton
height="35"

@ -20,6 +20,7 @@
label="manager image"
:url.sync="form.thumbnail"
v-model="fileForm"
:stencilProps="{ aspectRatio: 1280 / 720, checkImageOrigin: false }"
/>
</div>
</div>
@ -76,7 +77,7 @@
rows="3"
label="description"
placeholder="description"
v-model="form.description"
v-model.trim="form.description"
></v-textarea>
</v-col>
</v-row>

@ -2,11 +2,18 @@
<div class="border-bottom">
<v-row>
<v-col cols="4" class="pr-0">
<div
<!-- <div
class="workout__img"
:style="{ backgroundImage: `url('${workout.thumbnail}')` }"
></div
></v-col>
></div -->
<img
class="workout__img w-100"
:src="
workout.thumbnail ? workout.thumbnail : 'https://via.placeholder.com/1280x720'
"
alt="product image"
/>
</v-col>
<v-col cols="8">
<div class="details__card">
<div>
@ -74,9 +81,6 @@ export default {
<style scoped>
.workout__img {
border-radius: 20px;
height: 150px;
background-size: cover;
background-position: center;
}
.workout__title {
letter-spacing: 4px;

@ -102,7 +102,7 @@
class="no-error-msg"
dark
row="4"
v-model="form.description"
v-model.trim="form.description"
></v-textarea>
</v-col>
</v-row>
@ -183,8 +183,7 @@ export default {
methods: {
...mapActions("workoutToSeries", ["loadWorkoutsToSeries", "addWorkoutToSeries"]),
...mapMutations("workoutToSeries", ["SET_FILTER_WORKOUTS_TO_SERIES"]),
openModal() {
},
openModal() {},
async joinWorkout(id) {
this.workoutId = id;
let repository = new WorkoutToSeriesRepository();

@ -63,7 +63,7 @@ export default [
path: '/edit-program/:id?',
view: 'AddProgram',
name: 'editProgram',
meta: { auth: true, roles: ["admin"] }
meta: { auth: true, roles: ["admin","trainer"] }
},
{
path: '/add-workout',
@ -96,7 +96,7 @@ export default [
meta: { auth: true, roles: ["admin"] }
},
{
path: '/trains-programs',
path: '/trainee-programs',
view: 'TraineePrograms',
name: 'traineePrograms',

@ -9,9 +9,11 @@ const urls = {
// programs
indexProgram: "admin/courses",
showProgram: "admin/courses/:course",
showTrainerProgram: "trainer/courses/:course",
storeProgram: "trainer/courses",
verifyProgram: "admin/courses/verify-course/:course",
destroyProgram: "admin/courses/:course",
destroyTrainerProgram: "trainer/courses/:course",
updateProgram: "trainer/courses/:course",
// trainer programs
indexMyProgram: "trainer/courses",

@ -1,5 +1,7 @@
import ProgramRepository from "@/abstraction/repository/programRepository";
import { setQuery } from "@/abstraction/resources/programResource";
import { UserStorage } from "@/utils/storage";
let role = UserStorage.getRole() ? UserStorage.getRole() : null;
export default {
async loadPrograms({ state, commit }) {
try {
@ -31,7 +33,12 @@ export default {
},
async loadProgram({ commit }, courseId) {
let repository = new ProgramRepository();
const resource = await repository.show(courseId);
let resource;
if (role === 'admin') {
resource = await repository.show(courseId);
} else {
resource = await repository.showTrainer(courseId);
}
commit("SET_PROGRAM", resource);
},
async addProgram({ commit }, data) {
@ -46,7 +53,11 @@ export default {
},
async deleteProgram({ commit }, courseId) {
let repository = new ProgramRepository();
if (role === 'admin') {
await repository.delete(courseId);
} else {
await repository.deleteTrainer(courseId);
}
commit('DELETE_PROGRAM', courseId);
},
async verifyProgram({ commit }, courseId) {

@ -23,10 +23,8 @@ export default {
async addWorkoutToSeries({ commit }, data) {
let repository = new WorkoutToSeriesRepository();
const resource = await repository.store(data.data, data.seriesId, data.workoutId);
if (resource) {
commit("ADD_WORKOUT_TO_SERIES", resource.data);
return resource.data
}
commit("SET_PROGRAM_SERIES_WORKOUTS", resource.data);
},
async deleteWorkoutFromSeries({ commit }, data) {
let repository = new WorkoutToSeriesRepository();

@ -12,9 +12,6 @@ export default {
SET_FILTER_WORKOUTS_TO_SERIES(state, payload) {
Vue.set(state, "filters", payload);
},
ADD_WORKOUT_TO_SERIES(state, payload) {
state.workouts.push(payload);
},
DELETE_WORKOUT_FROM_SERIES(state, workoutId) {
const index = state.workouts.findIndex((x) => x.id === workoutId);
Vue.delete(state.workouts, index)

Loading…
Cancel
Save