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/Booking.php b/app/Booking.php index cffe157c..fec84e1c 100644 --- a/app/Booking.php +++ b/app/Booking.php @@ -27,11 +27,15 @@ class Booking extends Model 'bank_branch', 'company_name']; public $timestamps = true; - + public function user(){ return $this->belongsTo('app\User'); } + public function bookingSupplier(){ + return $this->belongsTo('app\BookingSupplier '); + } + public function userBankSlip(){ return $this->hasOne(UserBankSlip::class); } 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 ea7332b2..f893d614 100644 --- a/app/Http/Controllers/BookingController.php +++ b/app/Http/Controllers/BookingController.php @@ -79,7 +79,8 @@ class BookingController extends Controller // set timeout $date1 = new DateTime($booking->created_at); $date2 = new DateTime(); - $difference_in_seconds = ($date1->format('U') + 600) - ($date2->format('U')); + $time_in_seconds = SettingCredit::orderby('updated_at','desc')->first()->time_limit; + $difference_in_seconds = ($date1->format('U') + $time_in_seconds) - ($date2->format('U')); $booking->timeout = $difference_in_seconds; // TODO : you can make it better @@ -144,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); @@ -162,10 +164,15 @@ class BookingController extends Controller public function store(Request $request) { - $rates = Rate::orderby('updated_at','desc')->first(); $term = $request->input('term'); $amount = $request->input("amount"); // in RMB - $creditLimit = SettingCredit::orderby('updated_at','desc')->first(); + $rates = Rate::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); } @@ -282,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(); @@ -302,9 +309,30 @@ 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(!$bankslip_file = $request->file('file')) { + $bankslip_file = $request->file('file'); + $filename = $bankslip_file->getClientOriginalName(); + $unique_name = 'bank_slip_' . md5($filename. time()); + + $file = $request->file('file'); + $ext = $file->getClientOriginalExtension(); + $input['bankslip_file'] = $filename; + Storage::putFileAs( + 'bankslip_file',/*folder name*/ $file, $unique_name. '.' .$ext + ); + $user_bankslip->bankslip_file = $unique_name. '.' .$ext; //update database + } //end if + else { return response()->json(['message' => 'No file detected'], 400); } /* End Validation */ @@ -313,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(); @@ -334,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); @@ -359,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); @@ -371,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(); @@ -475,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 @@ -492,13 +538,21 @@ 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); } @@ -518,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(); @@ -540,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); @@ -552,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/BookingSupplierController.php b/app/Http/Controllers/BookingSupplierController.php new file mode 100644 index 00000000..8a358a6e --- /dev/null +++ b/app/Http/Controllers/BookingSupplierController.php @@ -0,0 +1,134 @@ + $bookingsupplier + ]; + + return response()->json($response, 200); + } + + public function show($id) + { + $bookingsupplier = SupplierBooking::has('supplier-booking')->findOrFail($id); + + $response = [ + 'supplier-booking' => $bookingsupplier + ]; + + return response()->json($response, 200); + } + + // Only for single booking + // TODO : Multiple booking + public function store(Request $request) + { + + $transfer_amount = $request->input("transfer_amount"); + $supplier_id = $request->input("supplier_id"); + $booking_id = $request->input("booking_id"); + $rate = $request->input('rate'); + $rebate = $request->input('rebate'); + + if ($supplierbooking = SupplierBooking::where('book_id', $booking_id)->first()){ + return response()->json(['success'=>false, 'message'=>'Bad request, please contact support'], 400); + } + + + // Calculation + $amountInRMB = $transfer_amount * $rate; + $billing = 0.015 * $transfer_amount; + $sales_tax = 0.10 * $transfer_amount; + $gst = 0 * $transfer_amount; // do we still need this ? + $customerBankInAmount = round($transfer_amount + $gst + $sales_tax + $billing,2); + $rmbBankAmount = $customerBankInAmount + $rebate; + + $user = Auth::user(); + $supplier = SettingSupplier::find($supplier_id); + $booking = Booking::find($booking_id); + + $bookingsupplier = new SupplierBooking(); + $bookingsupplier->supplier_id = $supplier->id; + $bookingsupplier->payment_method = $request->input('payment_method'); + $bookingsupplier->transfer_amount = $transfer_amount; + $bookingsupplier->rate = $rate; + $bookingsupplier->rebate = $rebate; + $bookingsupplier->amountInRMB = $amountInRMB; + $bookingsupplier->rmbBankAmount = $rmbBankAmount; + $bookingsupplier->book_id = $booking->id; + $bookingsupplier->save(); + + // update booking status + $booking->status = 5; + $booking->admin_status = 4; + $booking->save(); + + // TODO : generate a jpg version of report and save the path + + return response()->json($bookingsupplier, 201); + } + + + public function update(Request $request, $id) + { + $bookingsupplier = BSupplierBooking::find($id); + $bookingsupplier->payment_method = $request->input('payment_method'); + $bookingsupplier->transfer_amount = $request->input('transfer_amount'); + $bookingsupplier->rate = $request->input('rate'); + $bookingsupplier->rebate = $request->input('rebate'); + // calculation + $amountInRMB = $amount * $rate; + $billing = 0.015 * $amount; + $sales_tax = 0.10 * $amount; + $gst = 0 * $amount; + $customerBankInAmount = round($amount + $gst + $sales_tax + $billing,2); + $rmbBankAmount = $customerBankInAmount + $rebate; + + // save amount in rmb + $bookingsupplier->amountInRMB = $amountInRMB; + // save rmb bank amount + $bookingsupplier->rmbBankAmount = $rmbBankAmount; + $bookingsupplier->save(); + + // $supplierbookingitems = $request->input("supplierbookingitem"); + // foreach ($bookings as $booking) + // { + // $update_supplierbookingitem = SupplierBookingItem::where('supplierbooking_id', $id)->first(); + // $update_supplierbookingitem->china_bankslip_url = $booking['china_bankslip_url']; + // $update_supplierbookingitem->bank_in_amount = $booking['bank_in_amount']; + // $update_supplierbookingitem->date = $booking['date']; + // $update_supplierbookingitem->details = $booking['details']; + // $update_supplierbookingitem->save(); + // } + return response()->json(['book_id'=>$book_id],201); + } + + + public function report(Request $request, $id) + { + $supplier_booking = Booking::firstOrFail($id)->supplierBooking()->firstOrFail(); + + return response()->json($supplier_booking ,200); + } + + +} 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..d6bf1eda 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->id; + $supplier->label = $supplier->company_name; + } + return $suppliers; } public function show(SettingSupplier $supplier) diff --git a/app/SettingCredit.php b/app/SettingCredit.php index 872fec8e..5d567ab3 100644 --- a/app/SettingCredit.php +++ b/app/SettingCredit.php @@ -6,5 +6,5 @@ use Illuminate\Database\Eloquent\Model; class SettingCredit extends Model { - protected $fillable = ['rmb_credit_limit','usd_credit_limit']; + protected $fillable = ['rmb_credit_limit','usd_credit_limit','time_limit']; } diff --git a/app/SupplierBooking.php b/app/SupplierBooking.php new file mode 100644 index 00000000..9f660105 --- /dev/null +++ b/app/SupplierBooking.php @@ -0,0 +1,27 @@ +belongsTo('app\User'); + } + + public function booking(){ + return $this->hasOne('App\Booking'); + } + + public function supplierBookingTtem() + { + return $this->hasMany('App\SupplierBookingItem'); + } + +} diff --git a/app/SupplierBookingItem.php b/app/SupplierBookingItem.php new file mode 100644 index 00000000..c0073d18 --- /dev/null +++ b/app/SupplierBookingItem.php @@ -0,0 +1,25 @@ +belongsTo('App\BookingSupplier'); + } + + +} diff --git a/app/UserBankSlip.php b/app/UserBankSlip.php index 3e3e6678..eb6ddc0e 100644 --- a/app/UserBankSlip.php +++ b/app/UserBankSlip.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; class UserBankSlip extends Model { - protected $fillable = ['bank_slip_type','bankslip_url','transfer_amount','booking_id','cust_marking']; + protected $fillable = ['bank_slip_type','bankslip_url','transfer_amount','booking_id','cust_marking','estimated_arrival_time']; public function booking() { diff --git a/artisan b/artisan old mode 100755 new mode 100644 diff --git a/database/factories/SettingCreditFactory.php b/database/factories/SettingCreditFactory.php index 2eb3fafc..f1d4eeba 100644 --- a/database/factories/SettingCreditFactory.php +++ b/database/factories/SettingCreditFactory.php @@ -5,6 +5,7 @@ use Faker\Generator as Faker; $factory->define(App\SettingCredit::class, function (Faker $faker) { return [ 'rmb_credit_limit' => $faker->randomDigit, - 'usd_credit_limit' => $faker->randomDigit + 'usd_credit_limit' => $faker->randomDigit, + 'time_limit' => $faker->randomDigit ]; }); diff --git a/database/factories/SupplierBookingItemFactory.php b/database/factories/SupplierBookingItemFactory.php new file mode 100644 index 00000000..514eae24 --- /dev/null +++ b/database/factories/SupplierBookingItemFactory.php @@ -0,0 +1,9 @@ +define(App\SupplierBookingItem::class, function (Faker $faker) { + return [ + // + ]; +}); diff --git a/database/factories/UserBankSlipFactory.php b/database/factories/UserBankSlipFactory.php index 9ac7db69..e5406866 100644 --- a/database/factories/UserBankSlipFactory.php +++ b/database/factories/UserBankSlipFactory.php @@ -11,5 +11,6 @@ $factory->define(App\UserBankSlip::class, function (Faker $faker) { 'transfer_amount' => $faker->randomDigit, 'cust_marking' => str_random(10), 'booking_id' => $faker->randomElement($book_id), + 'estimated_arrival_time' => $faker->randomDigit ]; }); diff --git a/database/migrations/2018_06_21_025734_supplier_booking_table.php b/database/migrations/2018_06_21_025734_supplier_booking_table.php new file mode 100644 index 00000000..2369cf24 --- /dev/null +++ b/database/migrations/2018_06_21_025734_supplier_booking_table.php @@ -0,0 +1,44 @@ +increments('id'); + $table->string('payment_method'); + $table->double('transfer_amount'); + $table->double('rate'); + $table->double('rebate'); + $table->double('amountInRMB'); + $table->double('rmbBankAmount'); + + $table->integer('book_id')->unsigned(); + $table->foreign('book_id')->references('id')->on('bookings'); + + $table->integer('supplier_id')->unsigned(); + $table->foreign('supplier_id')->references('id')->on('setting_suppliers'); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('supplier_bookings'); + } +} diff --git a/database/migrations/2018_06_21_034658_supplierbooking_customerbooking_table.php b/database/migrations/2018_06_21_034658_supplierbooking_customerbooking_table.php new file mode 100644 index 00000000..bf18bb6a --- /dev/null +++ b/database/migrations/2018_06_21_034658_supplierbooking_customerbooking_table.php @@ -0,0 +1,34 @@ +integer('supplierbooking_id')->unsigned(); + $table->integer('booking_id')->unsigned(); + + $table->foreign('supplierbooking_id')->references('id')->on('supplier_bookings'); + $table->foreign('booking_id')->references('id')->on('bookings'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('supplierbooking_customerbooking'); + } +} diff --git a/database/migrations/2018_06_25_101043_add_time_limit_setting_credit_table.php b/database/migrations/2018_06_25_101043_add_time_limit_setting_credit_table.php new file mode 100644 index 00000000..4e0aefef --- /dev/null +++ b/database/migrations/2018_06_25_101043_add_time_limit_setting_credit_table.php @@ -0,0 +1,32 @@ +integer('time_limit'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('setting_credits', function (Blueprint $table) { + // $table->dropColumn('time_limit'); + }); + } +} \ No newline at end of file diff --git a/database/migrations/2018_06_25_120731_create_supplier_booking_items_table.php b/database/migrations/2018_06_25_120731_create_supplier_booking_items_table.php new file mode 100644 index 00000000..fad1a1c3 --- /dev/null +++ b/database/migrations/2018_06_25_120731_create_supplier_booking_items_table.php @@ -0,0 +1,37 @@ +increments('id'); + $table->string('china_bankslip_url'); + $table->integer('book_id')->unsigned(); + $table->foreign('book_id')->references('id')->on('bookings'); + $table->double('bank_in_amount'); + $table->integer('supplierbooking_id')->unsigned(); + $table->foreign('supplierbooking_id')->references('id')->on('supplier_bookings'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('supplier_booking_items'); + } +} diff --git a/database/migrations/2018_06_26_035802_add_eta_user_bank_slip_table.php b/database/migrations/2018_06_26_035802_add_eta_user_bank_slip_table.php new file mode 100644 index 00000000..acd53a08 --- /dev/null +++ b/database/migrations/2018_06_26_035802_add_eta_user_bank_slip_table.php @@ -0,0 +1,34 @@ +integer('estimated_arrival_time'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + if (Schema::hasColumn('user_bank_slips', 'estimated_arrival_time')) { + Schema::table('user_bank_slips', function (Blueprint $table) { + // $table->dropColumn('estimated_arrival_time'); + }); + } + } +} 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/migrations/2018_06_27_035705_make_paymentmethod_nulltable_in_supplierbooking_table.php b/database/migrations/2018_06_27_035705_make_paymentmethod_nulltable_in_supplierbooking_table.php new file mode 100644 index 00000000..8baebdac --- /dev/null +++ b/database/migrations/2018_06_27_035705_make_paymentmethod_nulltable_in_supplierbooking_table.php @@ -0,0 +1,31 @@ +string('payment_method')->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index 098d40f3..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(CreditTableSeeder::class); } } diff --git a/database/seeds/SettingCreditSeeder.php b/database/seeds/SettingCreditSeeder.php new file mode 100644 index 00000000..0087203e --- /dev/null +++ b/database/seeds/SettingCreditSeeder.php @@ -0,0 +1,21 @@ +insert([ + 'rmb_credit_limit' => '4000', + 'usd_credit_limit' => '5000', + 'time_limit' => '600' + ]); + } +} diff --git a/public/bankslip/hello.jpg b/public/bankslip/hello.jpg old mode 100755 new mode 100644 diff --git a/resources/assets/js/components/LocaleDropdown.vue b/resources/assets/js/components/LocaleDropdown.vue index 9fcb2565..544f4d6d 100644 --- a/resources/assets/js/components/LocaleDropdown.vue +++ b/resources/assets/js/components/LocaleDropdown.vue @@ -1,7 +1,7 @@