Tokens.php
3.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
/**
* App\Models\Tokens
*
* @property int $id
* @property string $token
* @property string $login
* @property string $api
* @property string|null $type
* @property int $created_by
* @property string|null $timestamp
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property int $limit
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Campaigns[] $campaigns
* @property-read int|null $campaigns_count
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Dictionary[] $cities
* @property-read int|null $cities_count
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Dictionary[] $campaignsForManaged
* @property-read int|null $campaignsForManaged_count
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Dictionary[] $campaignsNotForManaged
* @property-read int|null $campaignsNotForManaged_count
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Limits[] $limits
* @property-read int|null $limits_count
* @method static \Illuminate\Database\Eloquent\Builder|Tokens filter(array $filters)
* @method static \Illuminate\Database\Eloquent\Builder|Tokens newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Tokens newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Tokens query()
* @method static \Illuminate\Database\Eloquent\Builder|Tokens whereApi($value)
* @method static \Illuminate\Database\Eloquent\Builder|Tokens whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Tokens whereCreatedBy($value)
* @method static \Illuminate\Database\Eloquent\Builder|Tokens whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Tokens whereLimit($value)
* @method static \Illuminate\Database\Eloquent\Builder|Tokens whereLogin($value)
* @method static \Illuminate\Database\Eloquent\Builder|Tokens whereTimestamp($value)
* @method static \Illuminate\Database\Eloquent\Builder|Tokens whereToken($value)
* @method static \Illuminate\Database\Eloquent\Builder|Tokens whereType($value)
* @method static \Illuminate\Database\Eloquent\Builder|Tokens whereUpdatedAt($value)
* @mixin \Eloquent
*/
class Tokens extends Model
{
CONST MAIN = 'main';
CONST GOAL = 'goal';
protected $fillable = ['token', 'login', 'type'];
public function scopeFilter($query, array $filters)
{
$query->when($filters['login'] ?? null, function ($query, $search) {
$query->where('login', 'like', '%'.$search.'%');
})->when($filters['type'] ?? null, function ($query, $type) {
$query->where('type', $type);
})->when($filters['api'] ?? null, function ($query, $api) {
$query->where('api', $api);
});
}
public function isMain()
{
return $this->type === $this::MAIN;
}
public function limits()
{
return $this->hasMany(Limits::class, 'token', 'id')
->orderBy('updated_at', 'DESC');
}
public function campaigns()
{
return $this->hasMany(Campaigns::class, 'token', 'id')
->orderBy('updated_at', 'DESC');
}
public function cities()
{
return $this->hasMany(Dictionary::class, 'token_id', 'id')
->orderBy('updated_at', 'DESC');
}
public function campaignsForManaged()
{
return $this->campaigns()->forManaged();
}
public function campaignsNotForManaged()
{
return $this->campaigns()->notForManaged();
}
}