From 9acf2a773e5d29cf220f053a301a5ba3bb0117ce Mon Sep 17 00:00:00 2001 From: Jack Goh Date: Thu, 21 Jun 2018 16:35:09 +0800 Subject: [PATCH 01/14] fix admin routes on vuejs --- app/Http/Controllers/UserController.php | 7 +++++-- app/User.php | 2 +- resources/assets/js/middleware/admin.js | 3 ++- resources/assets/js/middleware/auth.js | 2 +- resources/assets/js/store/modules/auth.js | 7 ++++++- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 58f9b8ab..392564cc 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; +use Auth; class UserController extends Controller { @@ -15,7 +16,9 @@ class UserController extends Controller * @return \Illuminate\Http\Response */ public function show(Request $request) - { - return $request->user(); + { + + $user = Auth::user(); + return $user; } } diff --git a/app/User.php b/app/User.php index 065b512e..855641bb 100644 --- a/app/User.php +++ b/app/User.php @@ -58,7 +58,7 @@ class User extends Authenticatable implements JWTSubject */ public function getRoleAttribute() { - // return $this->roles->first()->name; + return $this->roles->first()->name; } /** diff --git a/resources/assets/js/middleware/admin.js b/resources/assets/js/middleware/admin.js index 276ef3de..f2ccc855 100644 --- a/resources/assets/js/middleware/admin.js +++ b/resources/assets/js/middleware/admin.js @@ -1,7 +1,8 @@ import store from '~/store' export default (to, from, next) => { - if (store.getters['auth/user'].role !== 'admin') { + console.log(store.getters['auth/role']) + if (store.getters['auth/role'] !== 'admin') { next({ name: 'home' }) } else { next() diff --git a/resources/assets/js/middleware/auth.js b/resources/assets/js/middleware/auth.js index 138da317..d89739bb 100644 --- a/resources/assets/js/middleware/auth.js +++ b/resources/assets/js/middleware/auth.js @@ -3,7 +3,7 @@ import store from '~/store' export default async (to, from, next) => { if (!store.getters['auth/check']) { next({ name: 'login' }) - } else if (store.getters['auth/user'].role == 'admin') { + } else if (store.getters['auth/role'] == 'admin') { next({ name: 'admin.home' }) } else { next() diff --git a/resources/assets/js/store/modules/auth.js b/resources/assets/js/store/modules/auth.js index 742199b0..11fe5241 100644 --- a/resources/assets/js/store/modules/auth.js +++ b/resources/assets/js/store/modules/auth.js @@ -5,13 +5,15 @@ import * as types from '../mutation-types' // state export const state = { user: null, - token: Cookies.get('token') + token: Cookies.get('token'), + role: null } // getters export const getters = { user: state => state.user, token: state => state.token, + role: state => state.role, check: state => state.user !== null } @@ -23,7 +25,9 @@ export const mutations = { }, [types.FETCH_USER_SUCCESS] (state, { user }) { + console.log(user) state.user = user + state.role = user.role }, [types.FETCH_USER_FAILURE] (state) { @@ -33,6 +37,7 @@ export const mutations = { [types.LOGOUT] (state) { state.user = null + state.role = null state.token = null Cookies.remove('token') From b5d8fd4e7200466035f78b2c5edbe2a1a5e0de6e Mon Sep 17 00:00:00 2001 From: Jack Goh Date: Thu, 21 Jun 2018 16:38:59 +0800 Subject: [PATCH 02/14] added bookingtable --- resources/assets/js/pages/admin/home.vue | 53 +++++++++++++++++++++--- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/resources/assets/js/pages/admin/home.vue b/resources/assets/js/pages/admin/home.vue index f5f67c94..841b541b 100644 --- a/resources/assets/js/pages/admin/home.vue +++ b/resources/assets/js/pages/admin/home.vue @@ -1,15 +1,58 @@ From b9c0bc53fdf32e0b53dec4c1afcc761f862f6a72 Mon Sep 17 00:00:00 2001 From: Jack Goh Date: Thu, 21 Jun 2018 17:35:08 +0800 Subject: [PATCH 03/14] added booking table to admin home integrate booking list to admin home --- app/Http/Controllers/BookingController.php | 12 +++++++-- resources/assets/js/pages/admin/home.vue | 29 +++++++++++++++++++++- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/BookingController.php b/app/Http/Controllers/BookingController.php index 89c78366..bed53474 100644 --- a/app/Http/Controllers/BookingController.php +++ b/app/Http/Controllers/BookingController.php @@ -18,9 +18,17 @@ class BookingController extends Controller { public function index(){ + $user = Auth::user(); + + if ($user->roles->first()->name == 'admin'){ + $bookings = Booking::select('id', 'created_at', 'status', 'rate', 'term', 'amount', 'bia', 'verification_status') + ->get(); + } + else{ $bookings = Booking::select('id', 'created_at', 'status', 'rate', 'term', 'amount', 'bia', 'verification_status') - ->where('user_id',Auth::user()->id) - ->get(); + ->where('user_id', $user->id) + ->get(); + } // reformat to fit frontend structure foreach ($bookings as $booking) { diff --git a/resources/assets/js/pages/admin/home.vue b/resources/assets/js/pages/admin/home.vue index 841b541b..56a63f93 100644 --- a/resources/assets/js/pages/admin/home.vue +++ b/resources/assets/js/pages/admin/home.vue @@ -45,6 +45,8 @@ From ee66f7614f61875a13c7cd63c75d197c6d566ec1 Mon Sep 17 00:00:00 2001 From: Jack Goh Date: Thu, 21 Jun 2018 17:51:47 +0800 Subject: [PATCH 04/14] added admin progress track component --- .../js/components/AdminProgressTrack.vue | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 resources/assets/js/components/AdminProgressTrack.vue diff --git a/resources/assets/js/components/AdminProgressTrack.vue b/resources/assets/js/components/AdminProgressTrack.vue new file mode 100644 index 00000000..e5217e78 --- /dev/null +++ b/resources/assets/js/components/AdminProgressTrack.vue @@ -0,0 +1,47 @@ + + + + + + \ No newline at end of file From 81a8505fb139fb4a156d9c4339f5372051848742 Mon Sep 17 00:00:00 2001 From: Jack Goh Date: Thu, 21 Jun 2018 18:02:08 +0800 Subject: [PATCH 05/14] added nessasary files for the admin pages --- resources/assets/js/pages/admin/booking/supplierBooking.vue | 0 resources/assets/js/pages/admin/booking/supplierReport.vue | 0 resources/assets/js/pages/admin/booking/uploadChinaBankslip.vue | 0 resources/assets/js/pages/admin/booking/uploadInvoice.vue | 0 resources/assets/js/pages/admin/booking/verification.vue | 0 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 resources/assets/js/pages/admin/booking/supplierBooking.vue create mode 100644 resources/assets/js/pages/admin/booking/supplierReport.vue create mode 100644 resources/assets/js/pages/admin/booking/uploadChinaBankslip.vue create mode 100644 resources/assets/js/pages/admin/booking/uploadInvoice.vue create mode 100644 resources/assets/js/pages/admin/booking/verification.vue diff --git a/resources/assets/js/pages/admin/booking/supplierBooking.vue b/resources/assets/js/pages/admin/booking/supplierBooking.vue new file mode 100644 index 00000000..e69de29b diff --git a/resources/assets/js/pages/admin/booking/supplierReport.vue b/resources/assets/js/pages/admin/booking/supplierReport.vue new file mode 100644 index 00000000..e69de29b diff --git a/resources/assets/js/pages/admin/booking/uploadChinaBankslip.vue b/resources/assets/js/pages/admin/booking/uploadChinaBankslip.vue new file mode 100644 index 00000000..e69de29b diff --git a/resources/assets/js/pages/admin/booking/uploadInvoice.vue b/resources/assets/js/pages/admin/booking/uploadInvoice.vue new file mode 100644 index 00000000..e69de29b diff --git a/resources/assets/js/pages/admin/booking/verification.vue b/resources/assets/js/pages/admin/booking/verification.vue new file mode 100644 index 00000000..e69de29b From 401b016fe0616952c4f6b97aee417b799083038b Mon Sep 17 00:00:00 2001 From: Jack Goh Date: Thu, 21 Jun 2018 19:07:21 +0800 Subject: [PATCH 06/14] updated routes --- .../js/pages/admin/booking/verification.vue | 117 ++++++++++++++++++ resources/assets/js/pages/admin/home.vue | 48 +++++++ resources/assets/js/router/routes.js | 17 +++ 3 files changed, 182 insertions(+) diff --git a/resources/assets/js/pages/admin/booking/verification.vue b/resources/assets/js/pages/admin/booking/verification.vue index e69de29b..c9c7b4d9 100644 --- a/resources/assets/js/pages/admin/booking/verification.vue +++ b/resources/assets/js/pages/admin/booking/verification.vue @@ -0,0 +1,117 @@ + + + \ No newline at end of file diff --git a/resources/assets/js/pages/admin/home.vue b/resources/assets/js/pages/admin/home.vue index 56a63f93..f311b69d 100644 --- a/resources/assets/js/pages/admin/home.vue +++ b/resources/assets/js/pages/admin/home.vue @@ -79,6 +79,54 @@ export default { const property = column['property'] return row[property] === value }, + BookingStatus(status, booking_id) { + console.log(status) + // TODO : Get booking status from server + this.status = status + + switch (this.status) { + case 1: + this.$router.push({ + name: 'booking.user.upload', + params: {id: booking_id } + }) + + case 2: + this.$router.push({ + name: 'booking.confirmation', + params: {id: booking_id } + }) + break; + case 3: + this.$router.push({ + name: 'booking.transfer', + params: {id: booking_id } + }) + break; + case 4: + this.$router.push({ + name: 'booking.user.uploadpo', + params: {id: booking_id } + }) + break; + + case 5: + this.$router.push({ + name: 'booking.user.pocomplete', + params: {id: booking_id } + }) + break; + + case 6: + this.$router.push({ + name: 'booking.complete', + params: {id: booking_id } + }) + break; + default: + break + } + } } } diff --git a/resources/assets/js/router/routes.js b/resources/assets/js/router/routes.js index e9fd43c9..7b746eed 100644 --- a/resources/assets/js/router/routes.js +++ b/resources/assets/js/router/routes.js @@ -19,6 +19,15 @@ const PoComplete = () => import('~/pages/booking/poComplete').then(m => m.defaul const Completed = () => import('~/pages/booking/completed').then(m => m.default || m) +// Admin booking +const Verification = () => import('~/pages/admin/booking/verification').then(m => m.default || m) +const Supplier = () => import('~/pages/admin/booking/supplierBooking').then(m => m.default || m) +const SupplierReport = () => import('~/pages/admin/booking/supplierReport').then(m => m.default || m) +const UploadCNSlip = () => import('~/pages/admin/booking/uploadChinaBankslip').then(m => m.default || m) +const UploadInvoice = () => import('~/pages/admin/booking/uploadInvoice').then(m => m.default || m) +//const Completed = () => import('~/pages/booking/uploadUserBankSlip').then(m => m.default || m) + + const AdminHome = () => import('~/pages/admin/home').then(m => m.default || m) export default [ @@ -45,6 +54,14 @@ export default [ { path: '/booking/:id/po-complete', name: 'booking.user.pocomplete', component: PoComplete }, { path: '/booking/:id/complete', name: 'booking.complete', component: Completed }, + // Admin booking + { path: '/booking/:id/verification', name: 'booking.admin.verification', component: Verification }, + { path: '/booking/:id/supplier', name: 'booking.confirmation', component: Supplier }, + { path: '/booking/:id/supplier-report', name: 'booking.transfer', component: SupplierReport }, + { path: '/booking/:id/upload-cn-bankslip', name: 'booking.user.uploadpo', component: UploadCNSlip }, + { path: '/booking/:id/upload-invoice', name: 'booking.user.pocomplete', component: UploadInvoice }, + { path: '/booking/:id/complete', name: 'booking.complete', component: Completed }, + { path: '/admin', name: 'admin.home', component: AdminHome }, { path: '*', name:'notfound', component: NotFound } From 8ff5abcc2b9988a549f0fc6333a12bc0d2dcacf6 Mon Sep 17 00:00:00 2001 From: Jack Goh Date: Thu, 21 Jun 2018 19:12:17 +0800 Subject: [PATCH 07/14] updated routes name --- resources/assets/js/router/routes.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/resources/assets/js/router/routes.js b/resources/assets/js/router/routes.js index 7b746eed..351dacfa 100644 --- a/resources/assets/js/router/routes.js +++ b/resources/assets/js/router/routes.js @@ -56,11 +56,11 @@ export default [ // Admin booking { path: '/booking/:id/verification', name: 'booking.admin.verification', component: Verification }, - { path: '/booking/:id/supplier', name: 'booking.confirmation', component: Supplier }, - { path: '/booking/:id/supplier-report', name: 'booking.transfer', component: SupplierReport }, - { path: '/booking/:id/upload-cn-bankslip', name: 'booking.user.uploadpo', component: UploadCNSlip }, - { path: '/booking/:id/upload-invoice', name: 'booking.user.pocomplete', component: UploadInvoice }, - { path: '/booking/:id/complete', name: 'booking.complete', component: Completed }, + { path: '/booking/:id/supplier', name: 'booking.admin.supplier', component: Supplier }, + { path: '/booking/:id/supplier-report', name: 'booking.admin.supplier.report', component: SupplierReport }, + { path: '/booking/:id/upload-cn-bankslip', name: 'booking.admin.cnslip', component: UploadCNSlip }, + { path: '/booking/:id/upload-invoice', name: 'booking.admin.invoice', component: UploadInvoice }, + //{ path: '/booking/:id/complete', name: 'booking.complete', component: Completed }, { path: '/admin', name: 'admin.home', component: AdminHome }, From 47b2c34bf94baf65911032577986e7ac7564403f Mon Sep 17 00:00:00 2001 From: Jack Goh Date: Thu, 21 Jun 2018 21:55:38 +0800 Subject: [PATCH 08/14] update booking status redirection --- .../js/pages/admin/booking/verification.vue | 42 ------------------- resources/assets/js/pages/admin/home.vue | 10 ++--- 2 files changed, 5 insertions(+), 47 deletions(-) diff --git a/resources/assets/js/pages/admin/booking/verification.vue b/resources/assets/js/pages/admin/booking/verification.vue index c9c7b4d9..6134675b 100644 --- a/resources/assets/js/pages/admin/booking/verification.vue +++ b/resources/assets/js/pages/admin/booking/verification.vue @@ -65,48 +65,6 @@ data() { return { status: 4, - bookingConfirmTable: [{ - data1: 'Order Number :', - data2: '001' - }, { - data1: 'Date :', - data2: '25/5/2018' - }, { - data1: 'Customer Marking :', - data2: 'CIEF/150ECE' - }, { - data1: '', - data2: '' - }, { - data1: 'Payment Method :', - data2: 'Cash/Bank Transfer' - }, { - data1: '', - data2: '' - }], - bookingConfirmTable2:[{ - data1: 'CNY/RMB :', - data2: 'CNY 120,500.00' - }, { - data1: '+ Service Charge :', - data2: 'CNY 20.00' - }, { - data1: '/ RATE :', - data2: '1.63' - }, { - data1: '', - data2: 'MYR 73,848.04' - }, { - data1: '+ GST 6% :', - data2: 'MYR 4,430.88' - }, { - data1: '', - data2: 'MYR 78,278.92' - }, { - data1: '', - data2: '' - } - ] } }, methods: { diff --git a/resources/assets/js/pages/admin/home.vue b/resources/assets/js/pages/admin/home.vue index f311b69d..220120b8 100644 --- a/resources/assets/js/pages/admin/home.vue +++ b/resources/assets/js/pages/admin/home.vue @@ -87,32 +87,32 @@ export default { switch (this.status) { case 1: this.$router.push({ - name: 'booking.user.upload', + name: 'booking.admin.verification', params: {id: booking_id } }) case 2: this.$router.push({ - name: 'booking.confirmation', + name: 'booking.admin.supplier', params: {id: booking_id } }) break; case 3: this.$router.push({ - name: 'booking.transfer', + name: 'booking.admin.supplier.report', params: {id: booking_id } }) break; case 4: this.$router.push({ - name: 'booking.user.uploadpo', + name: 'booking.admin.cnslip', params: {id: booking_id } }) break; case 5: this.$router.push({ - name: 'booking.user.pocomplete', + name: 'booking.admin.invoice', params: {id: booking_id } }) break; From bc49e39df700178f1139b0aa7b7dbb101a15e5af Mon Sep 17 00:00:00 2001 From: Jack Goh Date: Fri, 22 Jun 2018 12:31:51 +0800 Subject: [PATCH 09/14] added admin status to booking table updated admin progress track steps added dummy template in admin booking --- ...42127_add_adminstatus_to_booking_table.php | 33 ++ ...ange_adminstatus_default_booking_table.php | 29 ++ .../js/components/AdminProgressTrack.vue | 25 +- .../assets/js/components/ProgressTrack.vue | 23 +- .../pages/admin/booking/supplierBooking.vue | 74 +++ .../js/pages/admin/booking/supplierReport.vue | 74 +++ .../admin/booking/uploadChinaBankslip.vue | 74 +++ .../js/pages/admin/booking/uploadInvoice.vue | 74 +++ .../js/pages/admin/booking/verification.vue | 227 +++++++-- resources/assets/js/pages/admin/home.vue | 209 ++++---- resources/assets/js/pages/auth/login.vue | 6 +- .../assets/js/pages/booking/completed.vue | 301 ++++++----- .../assets/js/pages/booking/confirmation.vue | 119 +++-- .../assets/js/pages/booking/poComplete.vue | 271 +++++----- .../assets/js/pages/booking/transfer.vue | 119 +++-- .../assets/js/pages/booking/uploadPo.vue | 377 +++++++------- .../js/pages/booking/uploadUserBankSlip.vue | 297 ++++++----- resources/assets/js/pages/home.vue | 478 +++++++++--------- resources/assets/js/router/routes.js | 13 +- resources/assets/js/store/modules/auth.js | 2 +- 20 files changed, 1646 insertions(+), 1179 deletions(-) create mode 100644 database/migrations/2018_06_22_042127_add_adminstatus_to_booking_table.php create mode 100644 database/migrations/2018_06_22_042911_change_adminstatus_default_booking_table.php diff --git a/database/migrations/2018_06_22_042127_add_adminstatus_to_booking_table.php b/database/migrations/2018_06_22_042127_add_adminstatus_to_booking_table.php new file mode 100644 index 00000000..4e7e93a9 --- /dev/null +++ b/database/migrations/2018_06_22_042127_add_adminstatus_to_booking_table.php @@ -0,0 +1,33 @@ +integer('admin_status')->default(1); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('bookings', function (Blueprint $table) { + $table->dropColumn('admin_status'); + // $table->dropColumn('reject_reason'); + }); + } +} diff --git a/database/migrations/2018_06_22_042911_change_adminstatus_default_booking_table.php b/database/migrations/2018_06_22_042911_change_adminstatus_default_booking_table.php new file mode 100644 index 00000000..5047f990 --- /dev/null +++ b/database/migrations/2018_06_22_042911_change_adminstatus_default_booking_table.php @@ -0,0 +1,29 @@ +integer('admin_status')->default(0)->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + } +} diff --git a/resources/assets/js/components/AdminProgressTrack.vue b/resources/assets/js/components/AdminProgressTrack.vue index e5217e78..dfae9647 100644 --- a/resources/assets/js/components/AdminProgressTrack.vue +++ b/resources/assets/js/components/AdminProgressTrack.vue @@ -1,18 +1,17 @@ - + diff --git a/resources/assets/js/pages/admin/booking/supplierReport.vue b/resources/assets/js/pages/admin/booking/supplierReport.vue index e69de29b..37196cb3 100644 --- a/resources/assets/js/pages/admin/booking/supplierReport.vue +++ b/resources/assets/js/pages/admin/booking/supplierReport.vue @@ -0,0 +1,74 @@ + + + diff --git a/resources/assets/js/pages/admin/booking/uploadChinaBankslip.vue b/resources/assets/js/pages/admin/booking/uploadChinaBankslip.vue index e69de29b..37196cb3 100644 --- a/resources/assets/js/pages/admin/booking/uploadChinaBankslip.vue +++ b/resources/assets/js/pages/admin/booking/uploadChinaBankslip.vue @@ -0,0 +1,74 @@ + + + diff --git a/resources/assets/js/pages/admin/booking/uploadInvoice.vue b/resources/assets/js/pages/admin/booking/uploadInvoice.vue index e69de29b..37196cb3 100644 --- a/resources/assets/js/pages/admin/booking/uploadInvoice.vue +++ b/resources/assets/js/pages/admin/booking/uploadInvoice.vue @@ -0,0 +1,74 @@ + + + diff --git a/resources/assets/js/pages/admin/booking/verification.vue b/resources/assets/js/pages/admin/booking/verification.vue index 6134675b..e5d77ade 100644 --- a/resources/assets/js/pages/admin/booking/verification.vue +++ b/resources/assets/js/pages/admin/booking/verification.vue @@ -1,40 +1,34 @@ \ No newline at end of file +} + diff --git a/resources/assets/js/pages/admin/home.vue b/resources/assets/js/pages/admin/home.vue index 220120b8..c601ea0e 100644 --- a/resources/assets/js/pages/admin/home.vue +++ b/resources/assets/js/pages/admin/home.vue @@ -1,47 +1,46 @@ diff --git a/resources/assets/js/pages/auth/login.vue b/resources/assets/js/pages/auth/login.vue index 054eb81f..06c5e6b4 100644 --- a/resources/assets/js/pages/auth/login.vue +++ b/resources/assets/js/pages/auth/login.vue @@ -80,11 +80,9 @@ export default { methods: { async login () { - // Submit the form. const { data } = await this.form.post('/api/login') - // Add loading screen const loading = this.$loading({ lock: true, @@ -96,14 +94,12 @@ export default { // Save the token. this.$store.dispatch('auth/saveToken', { token: data.token, - remember: this.remember, + remember: this.remember }) // Fetch the user. await this.$store.dispatch('auth/fetchUser') - - // Redirect home. if (store.getters['auth/user'].role === 'admin') { this.$router.push({ name: 'admin.home' }) diff --git a/resources/assets/js/pages/booking/completed.vue b/resources/assets/js/pages/booking/completed.vue index 1cb07172..42585d3c 100644 --- a/resources/assets/js/pages/booking/completed.vue +++ b/resources/assets/js/pages/booking/completed.vue @@ -1,103 +1,103 @@ \ No newline at end of file + }, + methods: { + + } +} + diff --git a/resources/assets/js/pages/booking/confirmation.vue b/resources/assets/js/pages/booking/confirmation.vue index 58812c71..8e2ce4bf 100644 --- a/resources/assets/js/pages/booking/confirmation.vue +++ b/resources/assets/js/pages/booking/confirmation.vue @@ -1,6 +1,6 @@