SubscriptionController::create()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 4
rs 10
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