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 diff --git a/app/ChinaBankSlip.php b/app/ChinaBankSlip.php index c607ec34..d7354956 100644 --- a/app/ChinaBankSlip.php +++ b/app/ChinaBankSlip.php @@ -6,5 +6,5 @@ use Illuminate\Database\Eloquent\Model; class ChinaBankSlip extends Model { - protected $fillable = ['actual_transfer_amount','date','details','china_bank_slips']; + protected $fillable = ['actual_transfer_amount','date','details','china_bank_slip_path']; } diff --git a/app/Http/Controllers/BookingController.php b/app/Http/Controllers/BookingController.php index dade691e..f190aefb 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,8 @@ class BookingController extends Controller public function adminShow($id) { $booking = Booking::where('id', $id)->first(); - return $booking->userBankSlip()->get(); + $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); @@ -167,7 +167,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); } @@ -284,7 +289,7 @@ class BookingController extends Controller return response()->json(['book_id'=>$book_id],200); } - + //upload public function uploadbankslip(Request $request, $id) { $booking = Booking::where('user_id',Auth::user()->id)->where('id',$id)->first(); @@ -304,7 +309,16 @@ class BookingController extends Controller return response()->json(['message'=>'Incorrect format'],200); } - if($file = $request->file('file')) + $validator = Validator::make($request->all(), [ + 'file' => 'max:3072' + ]); + + if($validator->fails()) + { + return response()->json(['message'=>'Image too large, upload files up to 3 MB'], 400); + } + + if(!$bankslip_file = $request->file('file')) { $bankslip_file = $request->file('file'); $filename = $bankslip_file->getClientOriginalName(); @@ -327,14 +341,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(); @@ -348,7 +363,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,6 +394,15 @@ class BookingController extends Controller return response()->json(['message'=>'Incorrect format'],200); } + $validator = Validator::make($request->all(), [ + 'file' => 'max:3072' + ]); + + if($validator->fails()) + { + return response()->json(['message'=>'Image too large, upload files up to 3 MB'], 400); + } + if(!$user_input_file = $request->file('file')) { return response()->json(['message' => 'No file detected'], 400); @@ -385,12 +415,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(); @@ -489,14 +519,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 +540,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,9 +572,15 @@ 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); } - + //upload public function uploadInvoice(Request $request, $id) { $booking = Booking::where('user_id',Auth::user()->id)->where('id',$id)->first(); @@ -555,6 +600,15 @@ class BookingController extends Controller return response()->json(['message'=>'Incorrect format'],200); } + $validator = Validator::make($request->all(), [ + 'invoice_path' => 'max:3072' + ]); + + if($validator->fails()) + { + return response()->json(['message'=>'Image too large, upload files up to 3 MB'], 400); + } + if(!$input_file = $request->file('invoice_path')) { return response()->json(['message'=>'No file detected'], 400); @@ -567,12 +621,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(); diff --git a/app/Http/Controllers/ChinaBankSlipController.php b/app/Http/Controllers/ChinaBankSlipController.php index 9a2048d6..7e860d62 100644 --- a/app/Http/Controllers/ChinaBankSlipController.php +++ b/app/Http/Controllers/ChinaBankSlipController.php @@ -4,6 +4,8 @@ namespace App\Http\Controllers; use App\ChinaBankSlip; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Storage; +use Validator; class ChinaBankSlipController extends Controller { @@ -45,6 +47,16 @@ class ChinaBankSlipController extends Controller $extension = $request->file('china_bank_slips')->getClientOriginalExtension(); // Filename to store $fileNameToStore= $filename.'_'.time().'.'.$extension; + + // File size checking + $validator = Validator::make($request->all(), [ + 'china_bank_slips' => 'max:3072' + ]); + + if($validator->fails()) + { + return response()->json(['message'=>'Image too large, upload files up to 3 MB'], 400); + } // Upload Image $path = $request->file('china_bank_slips')->storeAs('public/bankslip', $fileNameToStore); } else { @@ -55,8 +67,9 @@ class ChinaBankSlipController extends Controller $post->actual_transfer_amount = $request->input('actual_transfer_amount'); $post->date = $request->input('date'); $post->details = $request->input('details'); - $post->china_bank_slips = $fileNameToStore; - $post->save();; + $post->china_bank_slip_path = $fileNameToStore; + $post->save(); + return response()->json(['message'=>$post], 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/database/migrations/2018_06_26_141337_rename_bankslip_url_to_chinabanksli_path_in_china_bank_slip_table.php b/database/migrations/2018_06_26_141337_rename_bankslip_url_to_chinabanksli_path_in_china_bank_slip_table.php new file mode 100644 index 00000000..9c23bfc8 --- /dev/null +++ b/database/migrations/2018_06_26_141337_rename_bankslip_url_to_chinabanksli_path_in_china_bank_slip_table.php @@ -0,0 +1,31 @@ +renameColumn('bankslip_url', 'china_bank_slip_path'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index bcf98f78..0834c81d 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -1,6 +1,7 @@ call(UserRoleSeeder::class); $this->call(RateTableSeeder::class); $this->call(BookTableSeeder::class); - $this->call(SettingCreditSeeder::class); + $this->call(CreditTableSeeder::class); } } diff --git a/resources/assets/js/pages/admin/booking/supplierBooking.vue b/resources/assets/js/pages/admin/booking/supplierBooking.vue index 37196cb3..095440a9 100644 --- a/resources/assets/js/pages/admin/booking/supplierBooking.vue +++ b/resources/assets/js/pages/admin/booking/supplierBooking.vue @@ -1,13 +1,13 @@