PingController::store()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 23
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 5
Bugs 1 Features 0
Metric Value
c 5
b 1
f 0
dl 0
loc 23
rs 9.0856
cc 3
eloc 11
nc 3
nop 1
1
<?php
2
3
namespace App\Http\Controllers;
4
5
use \Auth;
6
use App\Ping;
7
use \Validator;
8
use App\Http\Requests;
9
use Illuminate\Http\Request;
10
use App\Http\Controllers\Controller;
11
12
class PingController extends Controller
13
{
14
    public function index(Request $request)
15
    {
16
        if ($request->wantsJson()) {
17
            return Ping::orderBy('created_at', 'asc')->get();
18
        }
19
20
        return view('template');
21
    }
22
23
    public function store(Request $request)
24
    {
25
        if (!$request->wantsJson()) {
26
            return response("Pings can only be created via json requests", 400);
27
        }
28
29
        sleep(1);
30
31
        $requestData = $request->all();
32
33
        $validator = Validator::make($requestData, [
34
            'name' => 'required|alpha_dash|max:255|unique:pings,name,NULL,id,deleted_at,NULL',
35
        ]);
36
37
        if ($validator->fails()) {
38
            /** @var \Illuminate\Validation\Validator $validator */
39
            return response($validator->getMessageBag(), 422);
40
        }
41
42
        $ping = Ping::createDefaultPing($requestData['name'], true, Auth::id());
43
44
        return Ping::findOrFail($ping->id);
45
    }
46
47
    public function update(Request $request, $id)
48
    {
49
        $validator = Validator::make($request->all(), [
50
            'name'            => 'required|max:255',
51
            'description'     => 'max:255',
52
            'tags'            => 'max:255',
53
            'frequency'       => 'required',
54
            'frequency_value' => 'required|numeric',
55
        ]);
56
57
        if ($validator->fails()) {
58
            return response($validator->errors()->all(), 422);
59
        }
60
61
        $ping = Ping::findOrFail($id);
62
63
        $ping->name            = $request->get('name');
64
        $ping->description     = $request->get('description');
65
        $ping->tags            = $request->get('tags');
66
        $ping->frequency       = $request->get('frequency');
67
        $ping->frequency_value = $request->get('frequency_value');
68
69
        $ping->updated_by = Auth::id();
70
71
        $ping->save();
72
73
        return $ping;
74
    }
75
76
    public function destroy(Request $request, $id)
77
    {
78
        Ping::findOrFail($id)->delete();
79
        if ($request->wantsJson()) {
80
            return 'OK';
81
        }
82
83
        return redirect('/cron');
84
    }
85
}
86