From 94b08cb04d34616a204a7f3bfc1d729ae4f13ead Mon Sep 17 00:00:00 2001 From: lonetrinity Date: Mon, 8 Oct 2018 16:18:56 +0800 Subject: [PATCH] fix/uploadPoandMinorBugs --- app/Http/Controllers/BookingController.php | 42 +++++++------------ .../assets/js/pages/booking/uploadPo.vue | 38 ++++++++--------- 2 files changed, 33 insertions(+), 47 deletions(-) diff --git a/app/Http/Controllers/BookingController.php b/app/Http/Controllers/BookingController.php index 6eae55e3..144f556e 100644 --- a/app/Http/Controllers/BookingController.php +++ b/app/Http/Controllers/BookingController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers; use App\PurchaseOrder; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; +use App\Classes\Service\Base64Uploader; use App\Booking; use App\Rate; use App\UserBankSlip; @@ -608,15 +609,8 @@ class BookingController extends Controller if($bankslip_file = $request->input('slip_image')) { - $ext = explode('/', explode(':', substr($bankslip_file, 0, strpos($bankslip_file, ';')))[1])[1]; - $img = str_replace('data:image/'.$ext.';base64,', '', $bankslip_file); - $img = str_replace(' ', '+', $img); - $data = base64_decode($img); - $file_name = 'bank_slip_' . md5(time()).'.'.$ext; - if($bankslip_file!=""){ - // storing image in storage/app/public Folder - $upload_path = \Storage::disk('public')->put('user_bankslip'.'/'.$file_name, $data); - } + + $upload_path = (new Base64Uploader())->execute($bankslip_file, 'user_bankslip'); if($upload_path){ $user_bankslip = $booking->userBankSlip()->first(); @@ -626,7 +620,7 @@ class BookingController extends Controller $user_bankslip = new UserBankSlip; } $user_bankslip->booking_id = $booking->id; - $user_bankslip->bankslip_path = 'user_bankslip'.'/'.$file_name; + $user_bankslip->bankslip_path = 'user_bankslip'.'/'.$upload_path; $user_bankslip->transfer_amount = null; $user_bankslip->save(); @@ -668,7 +662,7 @@ class BookingController extends Controller return response()->json(["success"=>true],200); } - public function uploadPurchaseOrder(Request $request, $id) + private function uploadPurchaseOrder(Request $request, $id) { $booking = Booking::where('user_id',Auth::user()->id)->where('id',$id)->first(); @@ -696,26 +690,18 @@ class BookingController extends Controller // return response()->json(['message'=>'File too large, upload files up to 3 MB'], 400); // } - if(!$user_input_file = $request->file('file')) + if(!$user_input_file = $request->input('images')) { return response()->json(['message' => 'No file detected'], 404); } /* End Validation */ - - $filename = $user_input_file->getClientOriginalName(); - $ext = $user_input_file->getClientOriginalExtension(); - - $input['file'] = $filename; - $unique_name = 'purchase_order_' . md5($filename. time()); - $unique_image_path = $unique_name. '.' .$ext; - $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 = $upload_path; - $user_po->booking_id = $booking->id; - $user_po->save(); + foreach($request->input('images') as $file){ + $filename = (new Base64Uploader())->execute($file, 'purchase_order'); + $user_po = new PurchaseOrder; + $user_po->image_path = 'purchase_order/'.$filename; + $user_po->booking_id = $booking->id; + $user_po->save(); + } $booking->status = 6; // $booking->admin_status = 7; @@ -1002,7 +988,7 @@ class BookingController extends Controller } public function confirmPurchaseOrder($id, Request $request){ - dd($request->input('images')[0]); + $this->uploadPurchaseOrder($request, $id); $booking = Booking::where('user_id',Auth::user()->id)->where('id',$id)->first(); $purchase_order = $booking->purchaseOrder()->first(); diff --git a/resources/assets/js/pages/booking/uploadPo.vue b/resources/assets/js/pages/booking/uploadPo.vue index 784aac1a..76bbe7c4 100644 --- a/resources/assets/js/pages/booking/uploadPo.vue +++ b/resources/assets/js/pages/booking/uploadPo.vue @@ -241,26 +241,26 @@ export default { console.log(this.purchaseOrderArray); axios .post('/api/booking/' + this.$route.params.id + '/confirm-po', { images: this.purchaseOrderArray}) - // .then((response) => { - // this.$message({ - // showClose: true, - // message: 'Your PO has been uploaded. We are processing the Invoice.', - // type: 'success', - // duration: 5000 - // }) - // this.$router.push({ - // name: 'home' - // }) + .then((response) => { + this.$message({ + showClose: true, + message: 'Your PO has been uploaded. We are processing the Invoice.', + type: 'success', + duration: 5000 + }) + this.$router.push({ + name: 'home' + }) + this.loading_btn = false + }).catch((error) => { + this.$message({ + showClose: true, + message: "Please upload your purchase order", + type: 'error', + duration: 30000 + }) this.loading_btn = false - // }).catch((error) => { - // this.$message({ - // showClose: true, - // message: "Please upload your purchase order", - // type: 'error', - // duration: 30000 - // }) - // this.loading_btn = false - // }) + }) }, beforeFileUpload(file, fileList) { this.purchaseOrderArray = [];