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

TechTipBookmarkController::__invoke()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 26
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 12
c 2
b 0
f 0
dl 0
loc 26
rs 9.8666
cc 3
nc 3
nop 1
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