From 62d0d83cb6fc61317005ab2bd0adb4aff1dc2f9e Mon Sep 17 00:00:00 2001 From: Jack Goh Date: Mon, 25 Jun 2018 17:34:34 +0800 Subject: [PATCH 01/14] attempt to fetch user bankslip --- app/Http/Controllers/BookingController.php | 10 +++++----- .../assets/js/pages/admin/booking/verification.vue | 5 +++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/BookingController.php b/app/Http/Controllers/BookingController.php index ea7332b2..f18d5a76 100644 --- a/app/Http/Controllers/BookingController.php +++ b/app/Http/Controllers/BookingController.php @@ -144,8 +144,8 @@ class BookingController extends Controller public function adminShow($id) { $booking = Booking::where('id', $id)->first(); - return $booking->userBankSlip()->get(); - + $booking->user_bankslip_path = $booking->userBankSlip()->first()->bankslip_path; + if($booking){ $date1 = new DateTime($booking->created_at); $date2 = new DateTime(); @@ -315,7 +315,7 @@ class BookingController extends Controller $unique_name = 'bank_slip_' . md5($filename. time()); // probably not a good idea $unique_image_path = $unique_name. '.' .$ext; Storage::putFileAs( - 'user_bankslip', $bankslip_file, $unique_image_path + 'user_bankslip', $bankslip_file, $unique_image_path, 'public' ); $user_bankslip = new UserBankSlip; @@ -372,7 +372,7 @@ class BookingController extends Controller $unique_name = 'purchase_order_' . md5($filename. time()); $unique_image_path = $unique_name. '.' .$ext; Storage::putFileAs( - 'purchase_order',/*folder name*/ $user_input_file, $unique_image_path + 'purchase_order',/*folder name*/ $user_input_file, $unique_image_path, 'public' ); $user_po = new PurchaseOrder; @@ -553,7 +553,7 @@ class BookingController extends Controller $unique_name = 'invoice' . md5($filename. time()); $unique_file_url = $unique_name. '.' .$ext; Storage::putFileAs( - 'invoice',/*folder name*/ $input_file, $unique_file_url + 'invoice',/*folder name*/ $input_file, $unique_file_url, 'public' ); $invoice = new Invoice; diff --git a/resources/assets/js/pages/admin/booking/verification.vue b/resources/assets/js/pages/admin/booking/verification.vue index 20bac84b..d01ceba4 100644 --- a/resources/assets/js/pages/admin/booking/verification.vue +++ b/resources/assets/js/pages/admin/booking/verification.vue @@ -198,7 +198,7 @@ - + @@ -235,7 +235,8 @@ id: null, amount: null, bia: null, - } + user_bankslip_path: null, + }, } }, beforeCreate () { From ffe1023bba6e57b2b33286451631b9668c88f0c0 Mon Sep 17 00:00:00 2001 From: Jack Goh Date: Mon, 25 Jun 2018 17:48:51 +0800 Subject: [PATCH 02/14] added credit limit seeder, it causes error when creating booking --- app/Http/Controllers/BookingController.php | 7 ++++++- database/seeds/CreditTableSeeder.php | 22 ++++++++++++++++++++++ database/seeds/DatabaseSeeder.php | 1 + 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 database/seeds/CreditTableSeeder.php diff --git a/app/Http/Controllers/BookingController.php b/app/Http/Controllers/BookingController.php index f18d5a76..6e192344 100644 --- a/app/Http/Controllers/BookingController.php +++ b/app/Http/Controllers/BookingController.php @@ -165,7 +165,12 @@ class BookingController extends Controller $rates = Rate::orderby('updated_at','desc')->first(); $term = $request->input('term'); $amount = $request->input("amount"); // in RMB - $creditLimit = SettingCredit::orderby('updated_at','desc')->first(); + $creditLimit = SettingCredit::orderby('updated_at','desc')->first(); + + if (!$creditLimit){ + return response()->json("Credit limit not set, please contact admin", 405); + } + if($amount > $creditLimit->rmb_credit_limit){ return response()->json("Exceed credit limit, need approved from admin", 401); } diff --git a/database/seeds/CreditTableSeeder.php b/database/seeds/CreditTableSeeder.php new file mode 100644 index 00000000..0f6e4932 --- /dev/null +++ b/database/seeds/CreditTableSeeder.php @@ -0,0 +1,22 @@ +insert([ + 'rmb_credit_limit' => 20000, + 'usd_credit_limit' => 20000, + 'created_at' => Carbon::now()->format('Y-m-d H:i:s'), + 'updated_at' => Carbon::now()->format('Y-m-d H:i:s'), + ]); + } +} diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index 098d40f3..95fb2c2f 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -16,5 +16,6 @@ class DatabaseSeeder extends Seeder $this->call(UserRoleSeeder::class); $this->call(RateTableSeeder::class); $this->call(BookTableSeeder::class); + $this->call(CreditTableSeeder::class); } } From 89f5e34aa8019e334abed3cbf861c239758682ac Mon Sep 17 00:00:00 2001 From: Jack Goh Date: Mon, 25 Jun 2018 17:52:41 +0800 Subject: [PATCH 03/14] update booking status on stage 2 --- app/Http/Controllers/BookingController.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/BookingController.php b/app/Http/Controllers/BookingController.php index 6e192344..59fe7006 100644 --- a/app/Http/Controllers/BookingController.php +++ b/app/Http/Controllers/BookingController.php @@ -339,7 +339,13 @@ class BookingController extends Controller if(!$user_bankslip){ return response()->json(["message"=> "not found"],400); - } + } + + // update booking status + $booking->status = 3; + $booking->admin_status = 2; + $booking->save(); + $user_bankslip->transfer_amount = $request->input('transfer_amount'); $user_bankslip->save(); return response()->json(["message"=> "Success"],200); From 20923d8f4a1ad9ec656e2c35f5d013e1ea27eafe Mon Sep 17 00:00:00 2001 From: Jack Goh Date: Tue, 26 Jun 2018 12:07:27 +0800 Subject: [PATCH 04/14] updated upload path --- app/Http/Controllers/BookingController.php | 41 ++++++++++++++-------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/app/Http/Controllers/BookingController.php b/app/Http/Controllers/BookingController.php index 607d70b2..6cbeebd2 100644 --- a/app/Http/Controllers/BookingController.php +++ b/app/Http/Controllers/BookingController.php @@ -29,8 +29,7 @@ class BookingController extends Controller // set timeout $date1 = new DateTime($booking->created_at); $date2 = new DateTime(); - $time_in_seconds = SettingCredit::orderby('updated_at','desc')->first()->time_limit; - $difference_in_seconds = ($date1->format('U') + $time_in_seconds) - ($date2->format('U')); + $difference_in_seconds = ($date1->format('U') + 600) - ($date2->format('U')); $booking->timeout = $difference_in_seconds; // TODO : you can make it better @@ -146,7 +145,7 @@ class BookingController extends Controller public function adminShow($id) { $booking = Booking::where('id', $id)->first(); - return $booking->userBankSlip()->get(); + $booking->user_bankslip_path = Storage::url('user_bankslip/', 'bank_slip_598c85be224d7842102e99321c427e72.jpg'); if($booking){ $date1 = new DateTime($booking->created_at); @@ -167,7 +166,12 @@ class BookingController extends Controller $rates = Rate::orderby('updated_at','desc')->first(); $term = $request->input('term'); $amount = $request->input("amount"); // in RMB - $creditLimit = SettingCredit::orderby('updated_at','desc')->first(); + $creditLimit = SettingCredit::orderby('updated_at','desc')->first(); + + if (!$creditLimit){ + return response()->json("Credit limit not set, please contact admin", 405); + } + if($amount > $creditLimit->rmb_credit_limit){ return response()->json("Exceed credit limit, need approved from admin", 401); } @@ -315,14 +319,15 @@ class BookingController extends Controller $input['file'] = $filename; $unique_name = 'bank_slip_' . md5($filename. time()); // probably not a good idea - $unique_image_path = $unique_name. '.' .$ext; - Storage::putFileAs( + $unique_image_path = $unique_name. '.' .$ext; + + $upload_path = Storage::disk('public')->putFileAs( 'user_bankslip', $bankslip_file, $unique_image_path - ); + ); $user_bankslip = new UserBankSlip; $user_bankslip->booking_id = $booking->id; - $user_bankslip->bankslip_path = $unique_image_path; + $user_bankslip->bankslip_path = $upload_path; $user_bankslip->transfer_amount = $request->input('transfer_amount'); $user_bankslip->save(); @@ -336,7 +341,13 @@ class BookingController extends Controller if(!$user_bankslip){ return response()->json(["message"=> "not found"],400); - } + } + + // update booking status + $booking->status = 3; + $booking->admin_status = 2; + $booking->save(); + $user_bankslip->transfer_amount = $request->input('transfer_amount'); $user_bankslip->save(); return response()->json(["message"=> "Success"],200); @@ -373,12 +384,12 @@ class BookingController extends Controller $input['file'] = $filename; $unique_name = 'purchase_order_' . md5($filename. time()); $unique_image_path = $unique_name. '.' .$ext; - Storage::putFileAs( - 'purchase_order',/*folder name*/ $user_input_file, $unique_image_path + $upload_path = Storage::disk('public')->putFileAs( + 'purchase_order',/*folder name*/ $user_input_file, $unique_image_path, 'public' ); $user_po = new PurchaseOrder; - $user_po->image_path = $unique_image_path; + $user_po->image_path = $upload_path; $user_po->book_id = $booking->id; $user_po->save(); @@ -554,12 +565,12 @@ class BookingController extends Controller $input['invoice_path'] = $filename; $unique_name = 'invoice' . md5($filename. time()); $unique_file_url = $unique_name. '.' .$ext; - Storage::putFileAs( - 'invoice',/*folder name*/ $input_file, $unique_file_url + $upload_path = Storage::disk('public')->putFileAs( + 'invoice',/*folder name*/ $input_file, $unique_file_url, 'public' ); $invoice = new Invoice; - $invoice->invoice_path = $unique_file_url; + $invoice->invoice_path = $upload_path; $invoice->amount = $request->input('amount'); $invoice->booking_id = $booking->id; $invoice->save(); From 9fff113250989ed3d97c7b3918047d40dd45162a Mon Sep 17 00:00:00 2001 From: Jack Goh Date: Tue, 26 Jun 2018 12:08:43 +0800 Subject: [PATCH 05/14] updated dockerfile to add storage symlink --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 5eb8b990..9efcd1c2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,5 +9,5 @@ RUN composer install COPY wait.sh /usr/local/bin/wait.sh RUN chmod +x /usr/local/bin/wait.sh -CMD /usr/local/bin/wait.sh && composer dumpautoload && php artisan migrate && php artisan db:seed && php artisan serve --host=0.0.0.0 --port=8000 +CMD /usr/local/bin/wait.sh && composer dumpautoload && php artisan storage:link && php artisan migrate && php artisan db:seed && php artisan serve --host=0.0.0.0 --port=8000 EXPOSE 8000 From ae85886365924cd6717ce77d83366abfd8e6c130 Mon Sep 17 00:00:00 2001 From: Jack Goh Date: Tue, 26 Jun 2018 12:12:02 +0800 Subject: [PATCH 06/14] updated user bankslip path in verification frontend --- resources/assets/js/pages/admin/booking/verification.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/assets/js/pages/admin/booking/verification.vue b/resources/assets/js/pages/admin/booking/verification.vue index 20bac84b..8d29575e 100644 --- a/resources/assets/js/pages/admin/booking/verification.vue +++ b/resources/assets/js/pages/admin/booking/verification.vue @@ -198,7 +198,7 @@ - + @@ -235,6 +235,7 @@ id: null, amount: null, bia: null, + user_bankslip_path: null, } } }, From 852c64f35bf81b65f4000a8190884fe68573be80 Mon Sep 17 00:00:00 2001 From: Jack Goh Date: Tue, 26 Jun 2018 12:27:09 +0800 Subject: [PATCH 07/14] completed display user bankslip in verification frontend --- app/Http/Controllers/BookingController.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/BookingController.php b/app/Http/Controllers/BookingController.php index 6cbeebd2..ec90a1ab 100644 --- a/app/Http/Controllers/BookingController.php +++ b/app/Http/Controllers/BookingController.php @@ -145,7 +145,8 @@ class BookingController extends Controller public function adminShow($id) { $booking = Booking::where('id', $id)->first(); - $booking->user_bankslip_path = Storage::url('user_bankslip/', 'bank_slip_598c85be224d7842102e99321c427e72.jpg'); + $user_bankslip_path = $booking->userBankSlip()->first()->bankslip_path; + $booking->user_bankslip_path = Storage::url($user_bankslip_path); if($booking){ $date1 = new DateTime($booking->created_at); From 53663534842f76d8eb5a1a89e1958ba07bd1524c Mon Sep 17 00:00:00 2001 From: Jack Goh Date: Tue, 26 Jun 2018 14:41:37 +0800 Subject: [PATCH 08/14] updated loading button param --- resources/assets/js/pages/admin/booking/verification.vue | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/resources/assets/js/pages/admin/booking/verification.vue b/resources/assets/js/pages/admin/booking/verification.vue index 8d29575e..54da4315 100644 --- a/resources/assets/js/pages/admin/booking/verification.vue +++ b/resources/assets/js/pages/admin/booking/verification.vue @@ -206,8 +206,8 @@ - Aprroved - Rejected + Aprroved + Rejected @@ -230,7 +230,7 @@ data() { return { status: 2, - loading: false, + loading_btn: false, booking_details:{ id: null, amount: null, @@ -263,6 +263,7 @@ }, methods: { approveUserSlip() { + this.loading_btn = true // axios.get('api/booking') // .then((response) => { // console.log(response) @@ -270,6 +271,8 @@ // }) }, rejectUserSlip() { + // TODO reject with reason + this.loading_btn = true // axios.get('api/booking') // .then((response) => { // console.log(response) From 20230502186f0d03b21df61f18f7e0da15c0ceb2 Mon Sep 17 00:00:00 2001 From: Jack Goh Date: Tue, 26 Jun 2018 14:44:48 +0800 Subject: [PATCH 09/14] fix conflict --- database/seeds/DatabaseSeeder.php | 4 ---- resources/assets/js/pages/admin/booking/verification.vue | 8 -------- 2 files changed, 12 deletions(-) diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index ec23be1c..95fb2c2f 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -16,10 +16,6 @@ class DatabaseSeeder extends Seeder $this->call(UserRoleSeeder::class); $this->call(RateTableSeeder::class); $this->call(BookTableSeeder::class); -<<<<<<< HEAD - $this->call(SettingCreditSeeder::class); -======= $this->call(CreditTableSeeder::class); ->>>>>>> 89f5e34aa8019e334abed3cbf861c239758682ac } } diff --git a/resources/assets/js/pages/admin/booking/verification.vue b/resources/assets/js/pages/admin/booking/verification.vue index ac1699ab..54da4315 100644 --- a/resources/assets/js/pages/admin/booking/verification.vue +++ b/resources/assets/js/pages/admin/booking/verification.vue @@ -198,11 +198,7 @@ -<<<<<<< HEAD -======= - ->>>>>>> 89f5e34aa8019e334abed3cbf861c239758682ac @@ -240,11 +236,7 @@ amount: null, bia: null, user_bankslip_path: null, -<<<<<<< HEAD } -======= - }, ->>>>>>> 89f5e34aa8019e334abed3cbf861c239758682ac } }, beforeCreate () { From fd03f5b24844fb55187eb04511fe377313542b1d Mon Sep 17 00:00:00 2001 From: Jack Goh Date: Tue, 26 Jun 2018 17:40:44 +0800 Subject: [PATCH 10/14] updated approvebankslip booking not found updated update status upon userbankslip approved updated update status upon userbankslip rejected updated supplier index to display value and label for input select updated supplierBooking frontend completed booking accept and reject integration --- app/Http/Controllers/BookingController.php | 23 +- .../Controllers/SettingSupplierController.php | 8 +- .../pages/admin/booking/supplierBooking.vue | 366 ++++++++++++++++-- .../js/pages/admin/booking/verification.vue | 66 +++- 4 files changed, 423 insertions(+), 40 deletions(-) diff --git a/app/Http/Controllers/BookingController.php b/app/Http/Controllers/BookingController.php index 90418e5c..3c192c5c 100644 --- a/app/Http/Controllers/BookingController.php +++ b/app/Http/Controllers/BookingController.php @@ -489,14 +489,16 @@ class BookingController extends Controller public function approveBankSlip(Request $request, $book_id) { - if (!$booking = Booking::where('user_id',Auth::user()->id)->where('id',$book_id)->first()) + $booking = Booking::where('id',$book_id)->first(); + + if (!$booking) { - return response()->json(['message'=>'Access denied'], 200); + return response()->json(['message'=>'Booking not found'], 400); } if(!$userBankSlip = UserBankSlip::where('booking_id',$booking->id)->first()) { - return response()->json(['message'=>'Access denied'], 200); + return response()->json(['message'=>'User bankslip not found'], 400); } // Rejected bankslip cannot be approve again @@ -508,12 +510,19 @@ class BookingController extends Controller $userBankSlip->is_approve = 1; $userBankSlip->estimated_arrival_time = $request->input('estimated_arrival_time'); $userBankSlip->save(); + + // update booking status + $booking->status = 4; + $booking->admin_status = 3; + $booking->save(); + return response()->json(['message'=>'Success'],200); } public function rejectBankSlip(Request $request, $book_id) { - if (!$booking = Booking::where('user_id',Auth::user()->id)->where('id',$book_id)->first()) + $booking = Booking::where('id',$book_id)->first(); + if (!$booking) { return response()->json(['message'=>'Access denied'], 200); } @@ -533,6 +542,12 @@ class BookingController extends Controller $userBankSlip->reject_reason = $request->reject_reason; $userBankSlip->save(); + // TODO : reject user bankinslip + // update booking status + $booking->status = 0; + $booking->admin_status = 0; + $booking->save(); + return response()->json(['message'=>'Success'],200); } diff --git a/app/Http/Controllers/SettingSupplierController.php b/app/Http/Controllers/SettingSupplierController.php index 96f0a861..6b1f8f12 100644 --- a/app/Http/Controllers/SettingSupplierController.php +++ b/app/Http/Controllers/SettingSupplierController.php @@ -9,7 +9,13 @@ class SettingSupplierController extends Controller { public function index() { - return SettingSupplier::all(); + $suppliers = SettingSupplier::all(); + + foreach ($suppliers as $supplier) { + $supplier->value = $supplier->company_name; + $supplier->label = $supplier->company_name; + } + return $suppliers; } public function show(SettingSupplier $supplier) diff --git a/resources/assets/js/pages/admin/booking/supplierBooking.vue b/resources/assets/js/pages/admin/booking/supplierBooking.vue index 37196cb3..f2feaa71 100644 --- a/resources/assets/js/pages/admin/booking/supplierBooking.vue +++ b/resources/assets/js/pages/admin/booking/supplierBooking.vue @@ -1,13 +1,13 @@