diff --git a/package-lock.json b/package-lock.json index b09c956..8bb17a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1768,63 +1768,6 @@ "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=", "dev": true }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "optional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "optional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "optional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "optional": true - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "optional": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, "ssri": { "version": "8.0.1", "resolved": "https://registry.nlark.com/ssri/download/ssri-8.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fssri%2Fdownload%2Fssri-8.0.1.tgz", @@ -1833,28 +1776,6 @@ "requires": { "minipass": "^3.1.1" } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "optional": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "vue-loader-v16": { - "version": "npm:vue-loader@16.8.1", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.1.tgz", - "integrity": "sha512-V53TJbHmzjBhCG5OYI2JWy/aYDspz4oVHKxS43Iy212GjGIG1T3EsB3+GWXFm/1z5VwjdjLmdZUFYM70y77vtQ==", - "dev": true, - "optional": true, - "requires": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "loader-utils": "^2.0.0" - } } } }, @@ -11492,6 +11413,87 @@ } } }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.8.2", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.2.tgz", + "integrity": "sha512-Nkq+z9mAsMEK+qkXgK+9Ia7D8w9uu9j4ut0IMT5coMfux3rCgIp1QBB1CYwY0M34A1nRMSONEaWXxAAw6xSl/Q==", + "dev": true, + "optional": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "optional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "optional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "optional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true + }, + "loader-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.1.tgz", + "integrity": "sha512-g4miPa9uUrZz4iElkaVJgDFwKJGh8aQGM7pUL4ejXl6cu7kSb30seQOVGNMP6sW8j7DW77X68hJZ+GM7UGhXeQ==", + "dev": true, + "optional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "vue-meta": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/vue-meta/-/vue-meta-2.4.0.tgz", diff --git a/src/abstraction/Faker.js b/src/abstraction/Faker.js new file mode 100644 index 0000000..fa643fd --- /dev/null +++ b/src/abstraction/Faker.js @@ -0,0 +1,7 @@ +export default (data) => { + return new Promise((resolve) => { + setTimeout(() => { + resolve(data); + }, 500); + }); +} \ No newline at end of file diff --git a/src/abstraction/repository/authRepository.js b/src/abstraction/repository/authRepository.js index 02c04bf..fa21772 100644 --- a/src/abstraction/repository/authRepository.js +++ b/src/abstraction/repository/authRepository.js @@ -1,16 +1,15 @@ import axios from "axios"; import url from "@/router/url"; -import { setData } from "../resources/authResource"; +import { setData, getJson } from "../resources/authResource"; export default class AuthRepository { async login(data) { let json = setData(data); let response = await axios.post(url("login"), json); if (response.status === 200) { - return response.data.data; + return getJson(response.data.data); } } - async logout() { let response = await axios.post(url("logout")); if (response.status === 200) { @@ -25,7 +24,6 @@ export default class AuthRepository { return response.data; } } - async resetPassword(data) { let json = setData(data); let response = await axios.post(url("resetPassword"), json); diff --git a/src/abstraction/repository/programSerieRepository.js b/src/abstraction/repository/programSerieRepository.js index d40c86d..463a815 100644 --- a/src/abstraction/repository/programSerieRepository.js +++ b/src/abstraction/repository/programSerieRepository.js @@ -1,18 +1,24 @@ import axios from "axios"; import url from "@/router/url"; -import { getJson, setData } from "../resources/programSerieResource"; +import { getArray, getJson, setData } from "../resources/programSerieResource"; export default class ProgramSerieRepository { - async show(courseId) { - let response = await axios.get(url("showProgram", { course: courseId })); + async index(courseId) { + let response = await axios.get(url("indexSeries", { course: courseId })); if (response.status === 200) { - return getJson(response.data.data); + return getArray(response.data); } } + // async show(courseId) { + // let response = await axios.get(url("showProgram", { course: courseId })); + // if (response.status === 200) { + // return getJson(response.data.data); + // } + // } async store(data, courseId) { let json = setData(data); let response = await axios.post(url("storeSerie", { course: courseId }), json); if (response.status === 201 || response.status === 200) { - return getJson(response.data); + return getJson(response.data.data); } } async delete(data) { diff --git a/src/abstraction/repository/programSerieWorkoutsRepository.js b/src/abstraction/repository/programSerieWorkoutsRepository.js new file mode 100644 index 0000000..7da629c --- /dev/null +++ b/src/abstraction/repository/programSerieWorkoutsRepository.js @@ -0,0 +1,5 @@ +import { getArray } from '../resources/programSerieWorkoutsResource'; + +export default class ProgramSerieWorkoutsRepository { + +} \ No newline at end of file diff --git a/src/abstraction/repository/statisticRepository.js b/src/abstraction/repository/statisticRepository.js new file mode 100644 index 0000000..a6d00a9 --- /dev/null +++ b/src/abstraction/repository/statisticRepository.js @@ -0,0 +1,23 @@ +import axios from "axios"; +import url from "@/router/url" +import { getJson } from "../resources/statisticResource"; +export default class StatisticRepository { + async indexStatisticAdmin() { + let response = await axios.get(url("indexStatisticAdmin")); + if (response.status === 200) { + return getJson(response.data.data) + } + } + async indexStatisticTrainer() { + let response = await axios.get(url("indexStatisticTrainer")); + if (response.status === 200) { + return getJson(response.data.data) + } + } + async indexStatisticTrainee() { + let response = await axios.get(url("indexStatisticTrainee")); + if (response.status === 200) { + return getJson(response.data.data) + } + } +} \ No newline at end of file diff --git a/src/abstraction/repository/workoutToSerieRepository.js b/src/abstraction/repository/workoutToSerieRepository.js index 1116cf3..0cf2623 100644 --- a/src/abstraction/repository/workoutToSerieRepository.js +++ b/src/abstraction/repository/workoutToSerieRepository.js @@ -3,6 +3,13 @@ import url from "@/router/url"; import { getJson, getArray, setQuery, setData } from "../resources/workoutResource.js"; export default class WorkoutToSerieRepository { async index(data) { + console.log(data); + let response = await axios.get(url("indexSerieWorkouts", { serie: data.serieId, course: data.courseId })); + if (response.status === 200) { + return getArray(response.data); + } + } + async indexWorkoutToSerie(data) { let params = setQuery(data); let response = await axios.get(url("indexClientWorkout"), { params }); if (response.status === 200) { diff --git a/src/abstraction/resources/authResource.js b/src/abstraction/resources/authResource.js index 860befe..491dfa3 100644 --- a/src/abstraction/resources/authResource.js +++ b/src/abstraction/resources/authResource.js @@ -1,9 +1,13 @@ +import { getJson as getJsonUser } from './usersResource' +export const getJson = (data) => ({ + token: data.token, + user: data.user ? getJsonUser(data.user) : {} +}); export const setData = (data) => ({ - first_name: data.first_name, - last_name: data.last_name, - email: data.email, - username: data.username, - password: data.password, - password_confirmation: data.password_confirmation, - }); - \ No newline at end of file + first_name: data.first_name, + last_name: data.last_name, + email: data.email, + username: data.username, + password: data.password, + password_confirmation: data.password_confirmation, +}); diff --git a/src/abstraction/resources/programSerieResource.js b/src/abstraction/resources/programSerieResource.js index 6633fe5..10f682f 100644 --- a/src/abstraction/resources/programSerieResource.js +++ b/src/abstraction/resources/programSerieResource.js @@ -18,6 +18,10 @@ export const getJson = (data) => ({ repeat: data.repeat, name: data.name }); +export const getArray = ({ data }) => { + data = data.map(serie => getJson(serie)); + return { data } +} export const setData = (data) => { let formData = { name: data.name, diff --git a/src/abstraction/resources/programSerieWorkoutsResource.js b/src/abstraction/resources/programSerieWorkoutsResource.js new file mode 100644 index 0000000..b70382a --- /dev/null +++ b/src/abstraction/resources/programSerieWorkoutsResource.js @@ -0,0 +1,27 @@ +export const getJson = (data) => ({ + "id": data.id, + "name": data.name, + "local_name": data.local_name, + "description": data.description, + "thumbnail": data.thumbnail, + "title": data.title, + "workout_category": { + "id": data.workout_category.id, + "name": data.workout_category.name, + "local_name": data.workout_category.local_name, + "language_id": data.workout_category.language_id + }, + "video": data.video, + "set": data.set, + "per_set": data.per_set, + "trainer_description": data.trainer_description, + "estimate_time": data.estimate_time, + "suggested_time": data.suggested_time, + "suggested_per_set": data.suggested_per_set, + "suggested_set": data.suggested_set +}); + +export const getArray = ({ data }) => { + data = data.map(serie => getJson(serie)); + return { data } +} \ No newline at end of file diff --git a/src/abstraction/resources/statisticResource.js b/src/abstraction/resources/statisticResource.js new file mode 100644 index 0000000..cfe18c0 --- /dev/null +++ b/src/abstraction/resources/statisticResource.js @@ -0,0 +1,8 @@ +export const getJson = (data) => ({ + trainees_count: data.trainees_count, + trainers_count: data.trainers_count, + courses_count: data.courses_count, + workouts_count: data.workouts_count, + joined_courses_count: data.joined_courses_count, + total_series_done: data.total_series_done +}) \ No newline at end of file diff --git a/src/abstraction/resources/usersResource.js b/src/abstraction/resources/usersResource.js index 7612a88..0218193 100644 --- a/src/abstraction/resources/usersResource.js +++ b/src/abstraction/resources/usersResource.js @@ -15,6 +15,11 @@ export const getJson = (data) => ({ cell_number: data.cell_number, is_admin: data.is_admin, is_trainer: data.is_trainer, + role: data.is_admin + ? "admin" + : data.is_trainer + ? "trainer" + : "trainee", created_courses_count: data.created_courses_count, joined_courses_count: data.joined_courses_count }); diff --git a/src/abstraction/resources/workoutResource.js b/src/abstraction/resources/workoutResource.js index be643c4..2a0f47e 100644 --- a/src/abstraction/resources/workoutResource.js +++ b/src/abstraction/resources/workoutResource.js @@ -14,6 +14,8 @@ export const getJson = (data) => ({ thumbnail: data.thumbnail, title: data.title, video: data.video, + set: data.set, + per_set: data.per_set, }); export const setData = (data, isUpdate = false) => { let formData = { @@ -31,7 +33,7 @@ export const setData = (data, isUpdate = false) => { tags: data.tags, set: data.set, per_set: data.per_set, - estimate_time: data.estimate_time + estimate_time: data.estimate_time, }; if (isUpdate) { formData["_method"] = "put"; @@ -39,9 +41,12 @@ export const setData = (data, isUpdate = false) => { return objectToFormData(formData); }; export const getArray = ({ data, meta }) => { - const pagination = SetPagination(meta); data = data.map((workout) => getJson(workout)); - return { data, pagination }; + if (meta) { + const pagination = SetPagination(meta); + return { data, pagination }; + } + return { data } }; export const setQuery = (data) => { diff --git a/src/components/Admin/Main.vue b/src/components/Admin/Main.vue index 1ee5cf9..0d400db 100644 --- a/src/components/Admin/Main.vue +++ b/src/components/Admin/Main.vue @@ -1,7 +1,8 @@ @@ -67,12 +218,35 @@ import Box from "../Global/Section/Box.vue"; import Notification from "../Global/Section/Notification.vue"; import UserName from "../Global/Section/UserName.vue"; +import { UserStorage } from "@/utils/storage"; +import StatisticRepository from "@/abstraction/repository/statisticRepository.js"; export default { components: { UserName, Box, Notification, }, + data: () => ({ + role: UserStorage.get() ? UserStorage.get().role : null, + statistics: {}, + }), + methods: { + async loadStatistic() { + let repository = new StatisticRepository(); + this.statistics = + this.role === "admin" + ? await repository.indexStatisticAdmin() + : this.role === "trainer" + ? await repository.indexStatisticTrainer() + : this.role === "trainee" + ? await repository.indexStatisticTrainee() + : false; + console.log(this.statistics); + }, + }, + created() { + this.loadStatistic(); + }, }; \ No newline at end of file diff --git a/src/components/WorkoutsSeries/Item.vue b/src/components/WorkoutsSeries/Item.vue index f235669..ec95ef7 100644 --- a/src/components/WorkoutsSeries/Item.vue +++ b/src/components/WorkoutsSeries/Item.vue @@ -91,10 +91,11 @@ export default { serieId: this.serieId, workoutId: workout.id, }); - this.$emit("deleteWorkoutFromSerie", this.serieId); - console.log("this.getWorkoutsToSerie after", this.getWorkoutsToSerie); }, }, + created() { + console.log(this.seriesWorkout); + }, };