ali 2 anni fa
parent
commit
c371b8f5eb

+ 15 - 0
src/api/models/Classroom.js

@@ -11,6 +11,7 @@ export default class ClassroomAPI extends APIRepository {
       base: '/lma/classrooms',
       myAsGraderClassrooms: '/lma/classrooms/my_as_a_grader_classrooms',
       byId: (id) => '/lma/classrooms/' + id,
+      close: (id) => '/lma/classrooms/' + id + '/close',
       enroll: (id) => '/lma/classrooms/' + id + '/enroll',
       graders: (id) => '/lma/classrooms/' + id + '/graders',
       drop: (id) => '/lma/classrooms/' + id + '/drop',
@@ -102,6 +103,20 @@ export default class ClassroomAPI extends APIRepository {
     })
   }
 
+  close (id) {
+    return this.sendRequest({
+      apiMethod: 'put',
+      api: this.api,
+      request: this.APIAdresses.close(id),
+      resolveCallback: (response) => {
+        return new Classroom(response.data)
+      },
+      rejectCallback: (error) => {
+        return error
+      }
+    })
+  }
+
   enrollByUser (id) {
     return this.sendRequest({
       apiMethod: 'put',

+ 18 - 0
src/components/Widgets/Classroom/AdminClassroomShow/components/AnnounceResultList.vue

@@ -21,6 +21,12 @@
              outline
              class="q-ml-md"
              @click="notifyAnnounceResult" />
+      <q-btn label="بستن کلاس"
+             color="primary"
+             :loading="closeClassroomLoading"
+             outline
+             class="q-ml-md"
+             @click="closeClassroom" />
     </template>
     <template v-slot:entity-index-table-cell="{inputData}">
       <template v-if="inputData.col.name === 'actions'">
@@ -116,6 +122,7 @@ export default {
     return {
       mounted: false,
       exportReportLoading: false,
+      closeClassroomLoading: false,
       notifyAnnounceResultLoading: false,
       updateTranscriptSheetLoading: false,
 
@@ -223,6 +230,17 @@ export default {
     this.mounted = true
   },
   methods: {
+    closeClassroom () {
+      this.closeClassroomLoading = true
+      APIGateway.classroom.close(this.classroom.id)
+        .then(() => {
+          this.closeClassroomLoading = false
+          this.$refs.announceResultList.search()
+        })
+        .catch(() => {
+          this.closeClassroomLoading = false
+        })
+    },
     notifyAnnounceResult () {
       this.notifyAnnounceResultLoading = true
       APIGateway.classroom.notifyAnnounceResult(this.classroom.id)