diff --git a/components/AddClosedEndedQuestion.vue b/components/AddClosedEndedQuestion.vue index 9794c9a..37300de 100644 --- a/components/AddClosedEndedQuestion.vue +++ b/components/AddClosedEndedQuestion.vue @@ -52,7 +52,7 @@ import { collection, doc, addDoc, writeBatch } from 'firebase/firestore' // https://vee-validate.logaretm.com/v3/guide/basics.html import { ValidationProvider, ValidationObserver, extend } from 'vee-validate' import { required } from 'vee-validate/dist/rules' -import { ClosedEndedQuestion, ClosedEndedQuestionConverter } from '~/plugins/closed-ended-question' +import { ClosedEndedQuestion, ClosedEndedQuestionConverter, states } from '~/plugins/closed-ended-question' // Override the default error message of required fields extend('required', { @@ -75,6 +75,11 @@ export default { } }, methods: { + isAuthorized () { + const isTutor = this.$auth.currentUser.email.endsWith('@iu.org') + const isAdmin = this.$store.getters.isAdmin + return isTutor || isAdmin + }, submit () { this.loading = true @@ -86,14 +91,17 @@ export default { this.$auth.currentUser.uid, // Ref: https://firebase.google.com/docs/reference/js/v8/firebase.User Date.now() / 1000, // Current UNIX timestamp in seconds this.comment ? [this.comment] : [], - 'neu' + this.isAuthorized() ? states.approved : states.new ) // Add a new document with a generated id addDoc(collection(this.$db, `kurse/${this.$store.state.selectedCourse}/fragenGeschlossen`).withConverter(ClosedEndedQuestionConverter), q) .then((docRef) => { // Successfully added new question to database - this.$toast({ content: 'Deine Frage wurde eingereicht!', color: 'success' }) + const content = this.isAuthorized() + ? 'Die Frage wurde hinzugefügt!' + : 'Deine Frage wurde eingereicht und wartet auf Bestätigung durch den Tutor!' + this.$toast({ content, color: 'success' }) }) .catch((error) => { // Failed to add question to database; display error message @@ -131,7 +139,7 @@ export default { this.$auth.currentUser.uid, // Ref: https://firebase.google.com/docs/reference/js/v8/firebase.User Date.now() / 1000, // Current UNIX timestamp in seconds [], - 'genehmigt' + states.approved ) const questionRef = doc(collection(this.$db, `kurse/${this.$store.state.selectedCourse}/fragenGeschlossen`).withConverter(ClosedEndedQuestionConverter)) diff --git a/components/Challenge.vue b/components/Challenge.vue new file mode 100644 index 0000000..a45c3de --- /dev/null +++ b/components/Challenge.vue @@ -0,0 +1,35 @@ + + + \ No newline at end of file diff --git a/components/Coop.vue b/components/Coop.vue index b874841..2a14eb3 100644 --- a/components/Coop.vue +++ b/components/Coop.vue @@ -1,17 +1,22 @@ - - \ No newline at end of file diff --git a/pages/courses/_course/index.vue b/pages/courses/_course/index.vue index 6c5a7a0..68fef82 100644 --- a/pages/courses/_course/index.vue +++ b/pages/courses/_course/index.vue @@ -1,19 +1,22 @@ @@ -26,15 +29,14 @@ export default { } }, computed: { + isAuthorized () { + const isTutor = this.$auth.currentUser.email.endsWith('@iu.org') + const isAdmin = this.$store.getters.isAdmin + return isTutor || isAdmin + } }, created () { this.courseID = this.$route.params.course - }, - methods: { - playVersus () { - // TODO - this.$router.push(`${this.$route.path}/play`) - } } } diff --git a/pages/courses/_course/play.vue b/pages/courses/_course/play.vue index 151efb8..69f7878 100644 --- a/pages/courses/_course/play.vue +++ b/pages/courses/_course/play.vue @@ -41,7 +41,7 @@ import { import _sampleSize from 'lodash-es/sampleSize' import _shuffle from 'lodash-es/shuffle' import _capitalize from 'lodash-es/capitalize' -import { ClosedEndedQuestionConverter } from '~/plugins/closed-ended-question' +import { ClosedEndedQuestionConverter, states } from '~/plugins/closed-ended-question' import { Game, GameConverter } from '~/plugins/game' export default { @@ -101,7 +101,7 @@ export default { // Create a query against the collection. // Only questions with the status "approved" (=genehmigt) should be fetched from the database - const q = query(questionsRef, where('status', '==', 'genehmigt')) + const q = query(questionsRef, where('status', '==', states.approved)) // Execute the query return getDocs(q).then((querySnapshot) => { diff --git a/plugins/closed-ended-question.js b/plugins/closed-ended-question.js index 8d56c7d..eb042d7 100644 --- a/plugins/closed-ended-question.js +++ b/plugins/closed-ended-question.js @@ -11,6 +11,12 @@ export class ClosedEndedQuestion { } } +export const states = { + new: 'neu', + approved: 'genehmigt', + declined: 'abgelehnt' +} + // Firestore data converter export const ClosedEndedQuestionConverter = { toFirestore: (closedEndedQuestion) => {