SubscriptionController   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 11
c 2
b 0
f 0
dl 0
loc 39
rs 10
wmc 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A create() 0 4 1
A approveSubscription() 0 9 2
1
<?php
2
3
namespace Faithgen\Miscellaneous\Http\Controllers;
4
5
use Faithgen\Miscellaneous\Http\Requests\SubscriptionCreateRequest;
6
use Faithgen\Miscellaneous\Models\Subscription;
7
use Faithgen\Miscellaneous\Services\SubscriptionService;
8
use Illuminate\Routing\Controller;
9
10
class SubscriptionController extends Controller
11
{
12
    /**
13
     * @var SubscriptionService
14
     */
15
    private SubscriptionService $subscriptionService;
16
17
    /**
18
     * SubscriptionController constructor.
19
     *
20
     * @param  SubscriptionService  $subscriptionService
21
     */
22
    public function __construct(SubscriptionService $subscriptionService)
23
    {
24
        $this->subscriptionService = $subscriptionService;
25
    }
26
27
    /**
28
     * Subscribes a user to FaithGen.
29
     *
30
     * @param  SubscriptionCreateRequest  $request
31
     *
32
     * @return \Illuminate\Http\JsonResponse
33
     */
34
    public function create(SubscriptionCreateRequest $request)
35
    {
36
        return $this->subscriptionService->create($request->validated(),
37
            'Subscription requested. Please check your email to confirm');
38
    }
39
40
    public function approveSubscription(Subscription $subscription, string $email)
41
    {
42
        if ($subscription->email === $email) {
43
            $subscription->confirmed = true;
44
            $subscription->save();
45
46
            return redirect()->away(config('miscellaneous.success-subscription-url').$email);
47
        } else {
48
            abort(422, 'Can not approve this subscription');
49
        }
50
    }
51
}
52