Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
92.31% covered (success)
92.31%
12 / 13
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
StoreRolePlayProjectRequest
92.31% covered (success)
92.31%
12 / 13
50.00% covered (danger)
50.00%
1 / 2
4.01
0.00% covered (danger)
0.00%
0 / 1
 authorize
91.67% covered (success)
91.67%
11 / 12
0.00% covered (danger)
0.00%
0 / 1
3.01
 rules
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace App\Http\Requests\v2\RolePlay;
4
5use App\Http\Models\RolePlayProjects;
6use App\Http\Models\UserAddOns;
7use Illuminate\Foundation\Http\FormRequest;
8
9class StoreRolePlayProjectRequest extends FormRequest
10{
11    /**
12     * Determine if the user is authorized to make this request.
13     */
14    public function authorize(): bool
15    {
16        $user = $this->user();
17
18        $rolePlayAddOn = UserAddOns::where('user_id', $user->id)
19            ->where('product', 'RolePlay')
20            ->where('status', 'active')
21            ->orderBy('created_at', 'desc')
22            ->first();
23
24        if (! $rolePlayAddOn) {
25            return false;
26        }
27
28        $rolePlayAddOn->load('addOn');
29
30        $project_credits = $rolePlayAddOn->addOn->features['project_credits'] ?? 1;
31
32        $usedRolePlayProjects = RolePlayProjects::where('user_id', $user->id)->count() ?? 0;
33
34        return $project_credits === -1 || $usedRolePlayProjects < $project_credits;
35    }
36
37    /**
38     * Get the validation rules that apply to the request.
39     */
40    public function rules(): array
41    {
42        return RolePlayProjects::getRules();
43    }
44}