FundDef   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 83
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 18
dl 0
loc 83
rs 10
c 1
b 0
f 0
wmc 7

7 Methods

Rating   Name   Duplication   Size   Complexity  
A funds() 0 3 1
A scopeActive() 0 3 1
A scopeAuto() 0 3 1
A guild() 0 3 1
A scopeUser() 0 3 1
A typeUser() 0 4 1
A typeAuto() 0 4 1
1
<?php
2
3
namespace Siak\Tontine\Model;
4
5
use Illuminate\Database\Eloquent\Casts\Attribute;
6
use Illuminate\Database\Eloquent\Builder;
7
8
class FundDef extends Base
9
{
10
    /**
11
     * @var int
12
     */
13
    public const TYPE_AUTO = 0;
14
15
    /**
16
     * @var int
17
     */
18
    public const TYPE_USER = 1;
19
20
    /**
21
     * Indicates if the model should be timestamped.
22
     *
23
     * @var bool
24
     */
25
    public $timestamps = false;
26
27
    /**
28
     * The attributes that are mass assignable.
29
     *
30
     * @var array
31
     */
32
    protected $fillable = [
33
        'type',
34
        'title',
35
        'notes',
36
        'active',
37
    ];
38
39
    public function typeAuto(): Attribute
40
    {
41
        return Attribute::make(
42
            get: fn() => $this->type === self::TYPE_AUTO,
43
        );
44
    }
45
46
    public function typeUser(): Attribute
47
    {
48
        return Attribute::make(
49
            get: fn() => $this->type === self::TYPE_USER,
50
        );
51
    }
52
53
    public function funds()
54
    {
55
        return $this->hasMany(Fund::class, 'def_id');
56
    }
57
58
    public function guild()
59
    {
60
        return $this->belongsTo(Guild::class);
61
    }
62
63
    /**
64
     * @param  Builder  $query
65
     *
66
     * @return Builder
67
     */
68
    public function scopeAuto(Builder $query): Builder
69
    {
70
        return $query->where('type', self::TYPE_AUTO);
71
    }
72
73
    /**
74
     * @param  Builder  $query
75
     *
76
     * @return Builder
77
     */
78
    public function scopeUser(Builder $query): Builder
79
    {
80
        return $query->where('type', self::TYPE_USER);
81
    }
82
83
    /**
84
     * @param  Builder  $query
85
     *
86
     * @return Builder
87
     */
88
    public function scopeActive(Builder $query): Builder
89
    {
90
        return $query->where('active', true);
91
    }
92
}
93