From 3599405419071b5530106f1cf88b8aa248c9cdfe Mon Sep 17 00:00:00 2001 From: iamgergo Date: Sun, 25 Apr 2021 09:20:36 +0200 Subject: [PATCH] fix shipping driver issue --- config/bazar.php | 4 ++-- ...01_01_000600_create_bazar_transactions_table.php | 2 +- ...20_01_01_001000_create_bazar_shippings_table.php | 2 +- src/Concerns/InteractsWithItems.php | 5 ++++- src/Http/Controllers/OrdersController.php | 2 +- src/Models/Shipping.php | 13 ++++++++++++- 6 files changed, 21 insertions(+), 7 deletions(-) diff --git a/config/bazar.php b/config/bazar.php index 5e563b89..98296262 100644 --- a/config/bazar.php +++ b/config/bazar.php @@ -70,7 +70,7 @@ */ 'gateway' => [ - 'default' => 'transfer', + 'default' => env('BAZAR_GATEWAY_DRIVER', 'transfer'), 'drivers' => [ 'cash' => [], 'manual' => [], @@ -90,7 +90,7 @@ */ 'shipping' => [ - 'default' => 'local-pickup', + 'default' => env('BAZAR_SHIPPING_DRIVER', 'local-pickup'), 'drivers' => [ 'local-pickup' => [], ], diff --git a/database/migrations/2020_01_01_000600_create_bazar_transactions_table.php b/database/migrations/2020_01_01_000600_create_bazar_transactions_table.php index 47eb8aa4..53bfa353 100644 --- a/database/migrations/2020_01_01_000600_create_bazar_transactions_table.php +++ b/database/migrations/2020_01_01_000600_create_bazar_transactions_table.php @@ -17,7 +17,7 @@ public function up(): void $table->id(); $table->foreignId('order_id')->constrained('bazar_orders')->cascadeOnDelete(); $table->string('key')->nullable()->unique(); - $table->string('driver')->nullable(); + $table->string('driver'); $table->string('type'); $table->unsignedDecimal('amount'); $table->timestamp('completed_at')->nullable(); diff --git a/database/migrations/2020_01_01_001000_create_bazar_shippings_table.php b/database/migrations/2020_01_01_001000_create_bazar_shippings_table.php index b12b5c09..71429609 100644 --- a/database/migrations/2020_01_01_001000_create_bazar_shippings_table.php +++ b/database/migrations/2020_01_01_001000_create_bazar_shippings_table.php @@ -16,7 +16,7 @@ public function up(): void Schema::create('bazar_shippings', static function (Blueprint $table): void { $table->id(); $table->uuidMorphs('shippable'); - $table->string('driver')->default('local-pickup'); + $table->string('driver'); $table->unsignedDecimal('cost')->default(0); $table->unsignedDecimal('tax')->default(0); $table->timestamps(); diff --git a/src/Concerns/InteractsWithItems.php b/src/Concerns/InteractsWithItems.php index 5940cb6d..647eaaec 100644 --- a/src/Concerns/InteractsWithItems.php +++ b/src/Concerns/InteractsWithItems.php @@ -8,6 +8,7 @@ use Bazar\Models\Product; use Bazar\Models\Shipping; use Bazar\Models\User; +use Bazar\Support\Facades\Shipping as ShippingManager; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\MorphOne; use Illuminate\Database\Eloquent\Relations\MorphToMany; @@ -66,7 +67,9 @@ public function products(): MorphToMany */ public function shipping(): MorphOne { - return $this->morphOne(Shipping::getProxiedClass(), 'shippable')->withDefault(); + return $this->morphOne(Shipping::getProxiedClass(), 'shippable')->withDefault([ + 'driver' => ShippingManager::getDefaultDriver(), + ]); } /** diff --git a/src/Http/Controllers/OrdersController.php b/src/Http/Controllers/OrdersController.php index 30ae39c2..f13dffe6 100644 --- a/src/Http/Controllers/OrdersController.php +++ b/src/Http/Controllers/OrdersController.php @@ -74,7 +74,7 @@ public function create(): Response 'countries' => Countries::all(), 'currencies' => Bazar::currencies(), 'statuses' => Order::proxy()::statuses(), - 'drivers' => Collection::make(Shipping::enabled())->map->name(), + 'drivers' => Collection::make(Shipping::enabled())->map->name()->flip(), ]); } diff --git a/src/Models/Shipping.php b/src/Models/Shipping.php index a0d68cd0..7e04be63 100644 --- a/src/Models/Shipping.php +++ b/src/Models/Shipping.php @@ -39,7 +39,6 @@ class Shipping extends Model implements Contract protected $attributes = [ 'tax' => 0, 'cost' => 0, - 'driver' => 'local-pickup', ]; /** @@ -70,6 +69,18 @@ class Shipping extends Model implements Contract */ protected $table = 'bazar_shippings'; + /** + * The "booted" method of the model. + * + * @return void + */ + protected static function booted(): void + { + static::creating(static function (self $shipping): void { + $shipping->driver = $shipping->driver ?: Manager::getDefaultDriver(); + }); + } + /** * Get the proxied contract. *