From 623b3d298b9fe788745f14a8e216858ffda92288 Mon Sep 17 00:00:00 2001
From: nicrausaz <n.crausaz99@gmail.com>
Date: Wed, 24 Apr 2019 09:14:02 +0200
Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20du=20statut=20(unique)?=
 =?UTF-8?q?=20fonctionnelle?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../app/Http/Controllers/StatusController.php |  3 +-
 canapGEST/API/resources/lang/fr/http.php      |  3 +-
 .../src/store/modules/applications/actions.js | 27 +++++++++++++++++
 .../store/modules/applications/mutations.js   |  4 +++
 .../src/store/modules/applications/state.js   |  3 +-
 canapGEST/Site/src/views/ApplicationsView.vue | 29 ++++++++++---------
 6 files changed, 53 insertions(+), 16 deletions(-)

diff --git a/canapGEST/API/app/Http/Controllers/StatusController.php b/canapGEST/API/app/Http/Controllers/StatusController.php
index 14aa82c..81e28a2 100644
--- a/canapGEST/API/app/Http/Controllers/StatusController.php
+++ b/canapGEST/API/app/Http/Controllers/StatusController.php
@@ -42,7 +42,8 @@ class StatusController extends Controller
 
       // Valide le status
       if (count(DB::table('status')->where('status_value', $new_status)->get())) {
-        return DB::table('applicant')->where('applicant_id', $id)->update(['fk_status' => $new_status]);
+        DB::table('applicant')->where('applicant_id', $id)->update(['fk_status' => $new_status]);
+        return ["message" => lang::get('http.success.updated.status'), "id" => $id];
       } else {
         return abort(404, lang::get('http.notfound'));
       }
diff --git a/canapGEST/API/resources/lang/fr/http.php b/canapGEST/API/resources/lang/fr/http.php
index c080d8b..7beeac9 100644
--- a/canapGEST/API/resources/lang/fr/http.php
+++ b/canapGEST/API/resources/lang/fr/http.php
@@ -16,7 +16,8 @@ return [
       'comment' => 'Commentaire modifié',
       'position' => 'Offre modifiée',
       'location' => 'Lieu modifié',
-      'job' => 'Métier modifié'
+      'job' => 'Métier modifié',
+      'status' => 'Statut modifié'
     ],
     'deleted' => [
       'marker' => 'Marqueur supprimé',
diff --git a/canapGEST/Site/src/store/modules/applications/actions.js b/canapGEST/Site/src/store/modules/applications/actions.js
index e586d98..3980537 100644
--- a/canapGEST/Site/src/store/modules/applications/actions.js
+++ b/canapGEST/Site/src/store/modules/applications/actions.js
@@ -11,4 +11,31 @@ export function getApplications(context) {
     .catch(err => {
       console.log(err)
     })
+}
+
+export function getAvailableStatus(context) {
+  axios({
+    method: 'get',
+    url: '/status'
+  })
+    .then(response => {
+      context.commit('setAvailableStatus', response.data)
+    })
+    .catch(err => {
+      console.log(err)
+    })
+}
+
+export function changeApplicationStatus(context, data) {
+  axios({
+    method: 'patch',
+    url: '/status/applicant/' + data.id,
+    data: data
+  })
+    .then(response => {
+      console.log(response.data)
+    })
+    .catch(err => {
+      console.log(err)
+    })
 }
\ No newline at end of file
diff --git a/canapGEST/Site/src/store/modules/applications/mutations.js b/canapGEST/Site/src/store/modules/applications/mutations.js
index 3e73566..3ee6e92 100644
--- a/canapGEST/Site/src/store/modules/applications/mutations.js
+++ b/canapGEST/Site/src/store/modules/applications/mutations.js
@@ -1,3 +1,7 @@
 export function setApplications (state, data) {
   state.applications = data
+}
+
+export function setAvailableStatus (state, data) {
+  state.available_status = data
 }
\ No newline at end of file
diff --git a/canapGEST/Site/src/store/modules/applications/state.js b/canapGEST/Site/src/store/modules/applications/state.js
index fb3ba69..d362043 100644
--- a/canapGEST/Site/src/store/modules/applications/state.js
+++ b/canapGEST/Site/src/store/modules/applications/state.js
@@ -1,4 +1,5 @@
 export default {
   applications: [],
-  currentApplication: {}
+  currentApplication: {},
+  available_status: []
 }
\ No newline at end of file
diff --git a/canapGEST/Site/src/views/ApplicationsView.vue b/canapGEST/Site/src/views/ApplicationsView.vue
index b8d9fa7..fa357d7 100644
--- a/canapGEST/Site/src/views/ApplicationsView.vue
+++ b/canapGEST/Site/src/views/ApplicationsView.vue
@@ -28,7 +28,6 @@
         :items="$store.state.moduleApplications.applications"
         item-key="applicant_id"
         :search="search"
-        :pagination.sync="pagination"
         select-all
       >
         <template v-slot:items="props">
@@ -41,7 +40,6 @@
             <td>{{ props.item.job_full_value }}, {{ props.item.location_site }}</td>
             <td>{{ props.item.applicant_address_street }} {{ props.item.applicant_address_npa }}</td>
             <td>{{ props.item.applicant_mail }}</td>
-            <td>{{ props.item.applicant_foreign_authorization }}</td>
             <td>{{ props.item.applicant_birthdate }}</td>
             <td>{{ props.item.applicant_has_majority }}</td>
             <td>{{ props.item.applicant_nationality }}</td>
@@ -49,9 +47,19 @@
             <td>{{ props.item.applicant_speaks_french }} {{ props.item.applicant_speaks_english }} {{ props.item.applicant_speaks_german }} {{ props.item.applicant_speaks_other }}</td>
             <td>{{ props.item.applicant_scolarity_end }}</td>
             <td>{{ props.item.applicant_application_date }}</td>
+            <td>
+              <v-select
+                :items="$store.state.moduleApplications.available_status"
+                label="Statut"
+                item-text="status_value"
+                item-value="status_value"
+                v-model="props.item.fk_status"
+                @change="updateStatus(props.item.applicant_id, props.item.fk_status)"
+              ></v-select>
+            </td>
             <td></td>
             <td>
-              <v-tooltip bottom>
+              <v-tooltip bottom class="mr-2">
                 <template v-slot:activator="{ on }">
                   <v-icon @click="navigateTo(props.item.applicant_id)" v-on="on">pageview</v-icon>
                 </template>
@@ -70,17 +78,14 @@ export default {
   name: 'applications-view',
   data() {
     return {
-      loaded: false,
       jobFilter: null,
       search: '',
-      pagination: {},
       selected: [],
       headers: [
         { text: 'Nom, Prénom', align: 'left', value: 'applicant_fsname' },
         { text: 'Formation, Lieu', value: 'applicant_formation' },
         { text: 'Adresse', value: 'applicant_npa' },
         { text: 'Email', value: 'applicant_mail' },
-        { text: 'Cat. permis étranger', value: 'applicant_foreign_authorization' },
         { text: 'Date naissance', value: 'applicant_birthdate' },
         { text: 'Majeur', value: 'applicant_has_majority' },
         { text: 'Nationalité', value: 'applicant_nationality' },
@@ -88,6 +93,7 @@ export default {
         { text: 'Langues', value: 'applicant_languages', sortable: false },
         { text: 'Fin de scolarité', value: 'applicant_scolarity_end' },
         { text: 'Date postulation', value: 'applicant_application_date' },
+        { text: 'Statut', value: 'fk_status' },
         { text: 'Indications', value: 'indications' },
         { text: 'Actions', value: 'actions', sortable: false },
       ]
@@ -96,20 +102,17 @@ export default {
   created() {
     this.loadApplications()
   },
-  computed: {
-    pages() {
-      if (this.pagination.rowsPerPage == null || this.pagination.totalItems == null) return 0
-      return Math.ceil(this.pagination.totalItems / this.pagination.rowsPerPage)
-    }
-  },
   methods: {
     loadApplications() {
       this.$store.dispatch('moduleApplications/getApplications')
+      this.$store.dispatch('moduleApplications/getAvailableStatus')
       this.$store.dispatch('moduleUser/getUserPermittedJobs')
-      // this.loaded = true
     },
     navigateTo(id) {
       this.$router.push('/application/' + id)
+    },
+    updateStatus (id, status) {
+      this.$store.dispatch('moduleApplications/changeApplicationStatus', {id: id, status: status})
     }
   }
 }
-- 
GitLab