Passed
Push — master ( 0d9fa9...456d1a )
by John
04:48
created

ContestController::rejudge()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 19
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 10
nc 3
nop 1
dl 0
loc 19
rs 9.9332
c 0
b 0
f 0
1
<?php
2
3
namespace App\Http\Controllers\Ajax;
4
5
use App\Models\ContestModel;
6
use App\Models\GroupModel;
7
use App\Models\ResponseModel;
8
use App\Models\AccountModel;
9
use App\Http\Controllers\Controller;
10
use Illuminate\Http\Request;
11
use Illuminate\Http\Response;
12
use App\Jobs\ProcessSubmission;
13
use Auth;
14
15
class ContestController extends Controller
16
{
17
    public function fetchClarification(Request $request)
18
    {
19
        $request->validate([
20
            'cid' => 'required|integer',
21
        ]);
22
23
        $all_data=$request->all();
24
25
        $contestModel=new ContestModel();
26
        $clearance=$contestModel->judgeClearance($all_data["cid"], Auth::user()->id);
27
        if ($clearance<1) {
28
            return ResponseModel::err(2001);
29
        } else {
30
            return ResponseModel::success(200, null, $contestModel->fetchClarification($all_data["cid"]));
31
        }
32
    }
33
34
    public function updateProfessionalRate(Request $request)
35
    {
36
        if (Auth::user()->id!=1) {
37
            return ResponseModel::err(2001);
38
        }
39
40
        $request->validate([
41
            'cid' => 'required|integer'
42
        ]);
43
44
        $all_data=$request->all();
45
46
        $contestModel=new ContestModel();
47
        return $contestModel->updateProfessionalRate($all_data["cid"])?ResponseModel::success(200):ResponseModel::err(1001);
48
    }
49
50
    public function requestClarification(Request $request)
51
    {
52
        $request->validate([
53
            'cid' => 'required|integer',
54
            'title' => 'required|string|max:250',
55
            'content' => 'required|string|max:65536',
56
        ]);
57
58
        $all_data=$request->all();
59
60
        $contestModel=new ContestModel();
61
        $clearance=$contestModel->judgeClearance($all_data["cid"], Auth::user()->id);
62
        if ($clearance<2) {
63
            return ResponseModel::err(2001);
64
        } else {
65
            return ResponseModel::success(200, null, [
66
                "ccid" => $contestModel->requestClarification($all_data["cid"], $all_data["title"], $all_data["content"], Auth::user()->id)
67
            ]);
68
        }
69
    }
70
71
    public function rejudge(Request $request)
72
    {
73
        $request->validate([
74
            'cid' => 'required|integer'
75
        ]);
76
77
        $all_data=$request->all();
78
        if (Auth::user()->id!=1) {
79
            return ResponseModel::err(2001);
80
        }
81
82
        $contestModel=new ContestModel();
83
        $rejudgeQueue=$contestModel->getRejudgeQueue($all_data["cid"]);
84
85
        foreach ($rejudgeQueue as $r) {
86
            dispatch(new ProcessSubmission($r))->onQueue($r["oj"]);
87
        }
88
89
        return ResponseModel::success(200);
90
    }
91
}
92