Test Failed
Push — dev6 ( ab8d6f...f89a9a )
by Ron
19:50
created

TechTipBookmarkController   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 3
eloc 13
c 2
b 0
f 0
dl 0
loc 31
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 26 3
1
<?php
2
3
namespace App\Http\Controllers\TechTips;
4
5
use App\Http\Controllers\Controller;
6
use App\Http\Requests\TechTips\TipBookmarkRequest;
7
use App\Models\UserTechTipBookmark;
8
use Exception;
9
10
class TechTipBookmarkController extends Controller
11
{
12
    /**
13
     * Toggle a Tech Tip bookmark on and off
14
     */
15
    public function __invoke(TipBookmarkRequest $request)
16
    {
17
        if($request->state)
18
        {
19
            try
20
            {
21
                UserTechTipBookmark::create([
22
                    'user_id' => $request->user()->user_id,
23
                    'tip_id'  => $request->tip_id,
24
                ]);
25
            }
26
            catch(Exception $e)
27
            {
28
                //  If for some reason the add fails, trigger error
29
                report('User '.$request->user()->username.' is trying to bookmark a Tech Tip that is already bookmarked');
30
                report($e);
31
                abort(409, 'Bookmark already exists');
32
            }
33
        }
34
        else
35
        {
36
            //  Remove the bookmark
37
            UserTechTipBookmark::where('user_id', $request->user()->user_id)->where('tip_id', $request->tip_id)->first()->delete();
38
        }
39
40
        return response()->noContent();
41
    }
42
}
43