Passed
Branch dev (b46dca)
by John
04:11
created

ContestController   A

Complexity

Total Complexity 16

Size/Duplication

Total Lines 99
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 53
c 1
b 0
f 0
dl 0
loc 99
rs 10
wmc 16

5 Methods

Rating   Name   Duplication   Size   Complexity  
A getAnalysisData() 0 13 2
A requestClarification() 0 17 2
B registContest() 0 28 7
A updateProfessionalRate() 0 14 3
A fetchClarification() 0 14 2
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\Http\Controllers\Controller;
9
use Illuminate\Http\Request;
10
use Auth;
11
12
class ContestController extends Controller
13
{
14
    public function fetchClarification(Request $request)
15
    {
16
        $request->validate([
17
            'cid' => 'required|integer',
18
        ]);
19
20
        $all_data=$request->all();
21
22
        $contestModel=new ContestModel();
23
        $clearance=$contestModel->judgeClearance($all_data["cid"], Auth::user()->id);
24
        if ($clearance<1) {
25
            return ResponseModel::err(2001);
26
        } else {
27
            return ResponseModel::success(200, null, $contestModel->fetchClarification($all_data["cid"]));
28
        }
29
    }
30
31
    public function updateProfessionalRate(Request $request)
32
    {
33
        if (Auth::user()->id!=1) {
34
            return ResponseModel::err(2001);
35
        }
36
37
        $request->validate([
38
            'cid' => 'required|integer'
39
        ]);
40
41
        $all_data=$request->all();
42
43
        $contestModel=new ContestModel();
44
        return $contestModel->updateProfessionalRate($all_data["cid"])?ResponseModel::success(200):ResponseModel::err(1001);
45
    }
46
47
    public function requestClarification(Request $request)
48
    {
49
        $request->validate([
50
            'cid' => 'required|integer',
51
            'title' => 'required|string|max:250',
52
            'content' => 'required|string|max:65536',
53
        ]);
54
55
        $all_data=$request->all();
56
57
        $contestModel=new ContestModel();
58
        $clearance=$contestModel->judgeClearance($all_data["cid"], Auth::user()->id);
59
        if ($clearance<2) {
60
            return ResponseModel::err(2001);
61
        } else {
62
            return ResponseModel::success(200, null, [
63
                "ccid" => $contestModel->requestClarification($all_data["cid"], $all_data["title"], $all_data["content"], Auth::user()->id)
64
            ]);
65
        }
66
    }
67
68
    public function registContest(Request $request)
69
    {
70
        $request->validate([
71
            'cid' => 'required|integer'
72
        ]);
73
74
        $all_data=$request->all();
75
76
        $contestModel=new ContestModel();
77
        $groupModel=new GroupModel();
78
        $basic=$contestModel->basic($all_data["cid"]);
79
80
        if(!$basic["registration"]){
81
            return ResponseModel::err(4003);
82
        }
83
        if(strtotime($basic["registration_due"])<time()){
84
            return ResponseModel::err(4004);
85
        }
86
        if(!$basic["registant_type"]){
87
            return ResponseModel::err(4005);
88
        }
89
        if($basic["registant_type"]==1 && !$groupModel->isMember($basic["gid"], Auth::user()->id)){
90
            return ResponseModel::err(4005);
91
        }
92
93
        $ret=$contestModel->registContest($all_data["cid"], Auth::user()->id);
94
95
        return $ret ? ResponseModel::success(200) : ResponseModel::err(4006);
96
    }
97
98
    public function getAnalysisData(Request $request)
99
    {
100
        $request->validate([
101
            'cid' => 'required|integer'
102
        ]);
103
        $cid = $request->input('cid');
104
105
        $contestModel=new ContestModel();
106
        $clearance=$contestModel->judgeClearance($cid, Auth::user()->id);
107
        if ($clearance < 1) {
108
            return ResponseModel::err(7002);
109
        }
110
        return ResponseModel::success(200,null,$contestModel->praticeAnalysis($cid));
111
    }
112
}
113