TasksController   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 1 Features 0
Metric Value
wmc 8
eloc 25
c 1
b 1
f 0
dl 0
loc 60
ccs 0
cts 20
cp 0
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A output() 0 12 2
A __construct() 0 5 1
A index() 0 6 1
A update() 0 19 4
1
<?php
2
3
namespace Gameap\Http\Controllers\GdaemonAPI;
4
5
use Gameap\Models\DedicatedServer;
6
use Gameap\Models\GdaemonTask;
7
use Gameap\Repositories\GdaemonTaskRepository;
8
use Illuminate\Database\Eloquent\Collection;
9
use Illuminate\Http\JsonResponse;
10
use Illuminate\Http\Request;
11
use Illuminate\Http\Response;
12
use Spatie\QueryBuilder\QueryBuilder;
13
14
class TasksController extends Controller
15
{
16
    /**
17
     * The GdaemonTasksRepository instance.
18
     *
19
     * @var \Gameap\Repositories\GdaemonTaskRepository
20
     */
21
    protected $repository;
22
23
    public function __construct(GdaemonTaskRepository $repository)
24
    {
25
        parent::__construct();
26
27
        $this->repository = $repository;
28
    }
29
30
    /**
31
     * @return Collection|QueryBuilder[]
32
     */
33
    public function index(DedicatedServer $dedicatedServer)
34
    {
35
        return QueryBuilder::for(GdaemonTask::where('dedicated_server_id', $dedicatedServer->id))
0 ignored issues
show
Bug Best Practice introduced by
The expression return Spatie\QueryBuild...y('status_num'))->get() returns the type Spatie\QueryBuilder\QueryBuilder which is incompatible with the documented return type Spatie\QueryBuilder\Quer...ase\Eloquent\Collection.
Loading history...
36
            ->allowedFilters(['status'])
37
            ->allowedAppends(['status_num'])
38
            ->get();
39
    }
40
41
    public function update(GdaemonTask $gdaemonTask): JsonResponse
42
    {
43
        $status = request()->status;
44
45
        if (is_null($status)) {
46
            return response()->json(['message' => 'Empty status'], Response::HTTP_BAD_REQUEST);
47
        }
48
49
        if (!in_array($status, GdaemonTask::NUM_STATUSES, true)) {
50
            return response()->json(['message' => 'Invalid status'], Response::HTTP_BAD_REQUEST);
51
        }
52
53
        $gdaemonTask->status = is_int($status)
54
            ? array_flip(GdaemonTask::NUM_STATUSES)[$status]
55
            : $status;
56
57
        $gdaemonTask->update();
58
59
        return response()->json(['message' => 'success'], Response::HTTP_OK);
60
    }
61
62
    public function output(Request $request, int $gdaemonTaskId): JsonResponse
63
    {
64
        if (GdaemonTask::where('id', $gdaemonTaskId)->exists()) {
65
            $gdaemonTask = GdaemonTask::findOrFail($gdaemonTaskId);
66
            $this->repository->concatOutput($gdaemonTask, $request->output);
67
68
            $response = response()->json(['message' => 'success'], Response::HTTP_OK);
69
        } else {
70
            $response = response()->json(['message' => 'Task does not exist'], Response::HTTP_NOT_FOUND);
71
        }
72
73
        return $response;
74
    }
75
}
76