Skip to content

Commit 0b882f6

Browse files
committed
fix: delete purchase orders when an item is deleted
1 parent 1a00178 commit 0b882f6

File tree

9 files changed

+40
-9
lines changed

9 files changed

+40
-9
lines changed

app/Http/Controllers/Backend/Product/ProductController.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use App\Models\Product;
99
use App\Models\ProductCategory;
1010
use App\Models\ProductSubCategory;
11+
use App\Models\Purchase;
1112
use Illuminate\Support\Facades\Auth;
1213

1314
class ProductController extends Controller
@@ -121,7 +122,7 @@ public function update(UpdateProductRequest $request, Product $product)
121122
*/
122123
public function destroy(Product $product)
123124
{
124-
Product::find($product->id)->delete();
125+
$product->delete();
125126

126127
return redirect()
127128
->back()

app/Models/Book.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace App\Models;
44

5+
use App\Traits\HasPurchases;
56
use Illuminate\Database\Eloquent\Model;
67
use Illuminate\Database\Eloquent\Builder;
78
use Illuminate\Database\Eloquent\Casts\Attribute;
@@ -10,7 +11,7 @@
1011

1112
class Book extends Model
1213
{
13-
use HasFactory;
14+
use HasFactory, HasPurchases;
1415
/**
1516
* Get all of the book's reviews.
1617
*/

app/Models/CaseStudy.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
namespace App\Models;
44

55
use App\Models\CaseStudyCategory;
6+
use App\Traits\HasPurchases;
67
use Illuminate\Database\Eloquent\Model;
78
use Illuminate\Database\Eloquent\Casts\Attribute;
89
use Illuminate\Database\Eloquent\Relations\BelongsTo;
910
use Illuminate\Database\Eloquent\Factories\HasFactory;
1011

1112
class CaseStudy extends Model
1213
{
13-
use HasFactory;
14+
use HasFactory, HasPurchases;
1415

1516
function caseStudyPackage(): BelongsTo
1617
{

app/Models/CaseStudyPackage.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22

33
namespace App\Models;
44

5+
use App\Traits\HasPurchases;
56
use Illuminate\Database\Eloquent\Model;
67
use Illuminate\Database\Eloquent\Casts\Attribute;
78
use Illuminate\Database\Eloquent\Factories\HasFactory;
89
use Illuminate\Database\Eloquent\Relations\HasMany;
910

1011
class CaseStudyPackage extends Model
1112
{
12-
use HasFactory;
13+
use HasFactory, HasPurchases;
1314

1415
function caseStudies(): HasMany
1516
{

app/Models/Course.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace App\Models;
44

55
use App\Casts\Json;
6+
use App\Traits\HasPurchases;
67
use App\Traits\IsPurchased;
78
use Illuminate\Database\Eloquent\Model;
89
use Illuminate\Database\Eloquent\Casts\Attribute;
@@ -11,7 +12,7 @@
1112

1213
class Course extends Model
1314
{
14-
use HasFactory, IsPurchased;
15+
use HasFactory, IsPurchased, HasPurchases;
1516
protected $guarded = [ ];
1617
protected $casts = [
1718
'page_cards' => Json::class,

app/Models/Product.php

+7-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use Illuminate\Support\Arr;
77
use App\Models\ProductCategory;
88
use App\Models\ProductSubCategory;
9+
use App\Traits\HasPurchases;
910
use Illuminate\Database\Eloquent\Casts\Attribute;
1011
use Illuminate\Database\Eloquent\Model;
1112
use Illuminate\Database\Eloquent\Relations\MorphMany;
@@ -14,6 +15,7 @@
1415
class Product extends Model
1516
{
1617
use HasFactory;
18+
use HasPurchases;
1719

1820
/**
1921
* The attributes that are mass assignable.
@@ -72,21 +74,24 @@ public static function mappedProducts(array $queries) : array
7274

7375
public function purchase()
7476
{
75-
return $this->morphOne(Purchase::class, 'purchasable');
77+
return $this->morphMany(Purchase::class, 'purchasable');
7678
}
7779
public function isPurchased(int $userId = null)
7880
{
7981
if ($userId === null) {
8082
$userId = auth()->id();
8183
}
82-
return $this->morphOne(Purchase::class, 'purchasable')->where('user_id', $userId);
84+
return $this->morphMany(Purchase::class, 'purchasable')->where('user_id', $userId);
8385
}
8486

8587

8688

8789
public function price() : Attribute
8890
{
8991
$commission = app('setting')->reference->partner_commission;
92+
/**
93+
* @var User $user
94+
*/
9095
$user = auth()->user();
9196
return Attribute::make(
9297
get: fn ($value) => $user?->isPartner() ? $value - ($value * $commission / 100) : $value

app/Models/Service.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace App\Models;
44

5+
use App\Traits\HasPurchases;
56
use App\Traits\HasSections;
67
use Illuminate\Database\Eloquent\Model;
78
use Illuminate\Database\Eloquent\Casts\Attribute;
@@ -10,7 +11,7 @@
1011

1112
class Service extends Model
1213
{
13-
use HasFactory;
14+
use HasFactory, HasPurchases;
1415

1516
// user defined traits
1617
use HasSections;

app/Traits/HasPurchases.php

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
namespace App\Traits;
4+
5+
use App\Models\Purchase;
6+
use Illuminate\Database\Eloquent\Model;
7+
8+
trait HasPurchases
9+
{
10+
11+
public static function bootHasPurchases():void{
12+
static::deleting(function (Model $model) {
13+
$model->purchases()->delete();
14+
});
15+
}
16+
public function purchases()
17+
{
18+
return $this->morphMany(Purchase::class, 'purchasable');
19+
}
20+
}

app/Traits/IsPurchased.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ public function isPurchased(int $userId = null)
1010
if ($userId === null) {
1111
$userId = auth()->id();
1212
}
13-
return $this->morphOne(Purchase::class, 'purchasable')->where('user_id', $userId)->where('approved', 1);
13+
return $this->morphMany(Purchase::class, 'purchasable')->where('user_id', $userId)->where('approved', 1)->first();
1414
}
1515
}

0 commit comments

Comments
 (0)