feat: review submission

This commit is contained in:
Jannat Patel
2023-12-21 17:25:08 +05:30
parent afcb15148f
commit e1d61c9eb9
7 changed files with 70 additions and 20 deletions

View File

@@ -14,7 +14,7 @@
<div class="mb-2">
{{ reviews.data.length }} {{ __("reviews") }}
</div>
<Button @click="openReviewModal()">
<Button v-if="membership" @click="openReviewModal()">
<span>
{{ __("Write a review") }}
</span>
@@ -62,7 +62,7 @@
</div>
</div>
</div>
<ReviewModal v-model="showReviewModal" v-model:reloadReviews="reviews"/>
<ReviewModal v-model="showReviewModal" v-model:reloadReviews="reviews" :courseName="courseName"/>
</template>
<script setup>
import { Star } from 'lucide-vue-next'
@@ -80,6 +80,10 @@ const props = defineProps({
type: Number,
required: true,
},
membership: {
type: Object,
required: true,
},
});
@@ -94,7 +98,7 @@ const reviews = createResource({
},
auto: true,
});
console.log(reviews)
const rating_percent = computed(() => {
let rating_count = {};
let rating_percent = {};

View File

@@ -16,7 +16,7 @@ const props = defineProps({
default: '',
},
modelValue: {
type: String,
type: Number,
default: 0,
},
})

View File

@@ -6,7 +6,7 @@
{
label: "Submit",
variant: "solid",
onClick: ({ close }) => submitReview(close)
onClick: (close) => submitReview(close)
}
]
}'>
@@ -30,12 +30,23 @@
</template>
<script setup>
import { Dialog, Textarea, createResource } from 'frappe-ui'
import { defineModel, ref } from "vue"
import { defineModel, reactive } from "vue"
import Rating from '@/components/Rating.vue';
import { createToast } from "@/utils/"
const show = defineModel()
const reviews = defineModel("reloadReviews")
let review = ref({})
let review = reactive({
review: "",
rating: 0,
})
const props = defineProps({
courseName: {
type: String,
required: true,
},
})
const createReview = createResource({
url: "frappe.client.insert",
@@ -43,22 +54,28 @@ const createReview = createResource({
return {
doc: {
doctype: "LMS Course Review",
course: props.courseName,
...values,
}
}
}
})
function submitReview(close) {
review.rating = (review.rating)/5;
createReview.submit(review, {
validate() {
/* if (!review.value.rating) {
return __("Please select a rating")
if (!review.rating) {
return "Please enter a rating."
}
if (!review.value.review) {
return __("Please write a review")
} */
}, onSuccess() {
reviews.reload()
reviews.value.reload()
},
onError(err) {
createToast({
text: err.messages?.[0] || err,
icon: 'x',
iconClasses: 'text-red-600 bg-red-300',
})
}
})
close();