Passed
Push — master ( b831b6...96f132 )
by John
06:04 queued 21s
created

ContestController   A

Complexity

Total Complexity 18

Size/Duplication

Total Lines 118
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 63
dl 0
loc 118
rs 10
c 1
b 0
f 1
wmc 18

6 Methods

Rating   Name   Duplication   Size   Complexity  
A fetchClarification() 0 14 2
A getAnalysisData() 0 13 2
A requestClarification() 0 17 2
B registContest() 0 28 7
A updateProfessionalRate() 0 14 3
A downloadPDF() 0 17 2
1
<?php
2
3
namespace App\Http\Controllers\Ajax;
4
5
use App\Models\ContestModel;
6
use App\Models\Eloquent\ContestModel as EloquentContestModel;
7
use App\Models\GroupModel;
8
use App\Models\ResponseModel;
9
use App\Http\Controllers\Controller;
10
use Illuminate\Http\Request;
11
use Auth;
12
use PDF;
13
14
class ContestController extends Controller
15
{
16
    public function fetchClarification(Request $request)
17
    {
18
        $request->validate([
19
            'cid' => 'required|integer',
20
        ]);
21
22
        $all_data=$request->all();
23
24
        $contestModel=new ContestModel();
25
        $clearance=$contestModel->judgeClearance($all_data["cid"], Auth::user()->id);
26
        if ($clearance<1) {
27
            return ResponseModel::err(2001);
28
        } else {
29
            return ResponseModel::success(200, null, $contestModel->fetchClarification($all_data["cid"]));
30
        }
31
    }
32
33
    public function updateProfessionalRate(Request $request)
34
    {
35
        if (Auth::user()->id!=1) {
36
            return ResponseModel::err(2001);
37
        }
38
39
        $request->validate([
40
            'cid' => 'required|integer'
41
        ]);
42
43
        $all_data=$request->all();
44
45
        $contestModel=new ContestModel();
46
        return $contestModel->updateProfessionalRate($all_data["cid"])?ResponseModel::success(200):ResponseModel::err(1001);
47
    }
48
49
    public function requestClarification(Request $request)
50
    {
51
        $request->validate([
52
            'cid' => 'required|integer',
53
            'title' => 'required|string|max:250',
54
            'content' => 'required|string|max:65536',
55
        ]);
56
57
        $all_data=$request->all();
58
59
        $contestModel=new ContestModel();
60
        $clearance=$contestModel->judgeClearance($all_data["cid"], Auth::user()->id);
61
        if ($clearance<2) {
62
            return ResponseModel::err(2001);
63
        } else {
64
            return ResponseModel::success(200, null, [
65
                "ccid" => $contestModel->requestClarification($all_data["cid"], $all_data["title"], $all_data["content"], Auth::user()->id)
66
            ]);
67
        }
68
    }
69
70
    public function registContest(Request $request)
71
    {
72
        $request->validate([
73
            'cid' => 'required|integer'
74
        ]);
75
76
        $all_data=$request->all();
77
78
        $contestModel=new ContestModel();
79
        $groupModel=new GroupModel();
80
        $basic=$contestModel->basic($all_data["cid"]);
81
82
        if(!$basic["registration"]){
83
            return ResponseModel::err(4003);
84
        }
85
        if(strtotime($basic["registration_due"])<time()){
86
            return ResponseModel::err(4004);
87
        }
88
        if(!$basic["registant_type"]){
89
            return ResponseModel::err(4005);
90
        }
91
        if($basic["registant_type"]==1 && !$groupModel->isMember($basic["gid"], Auth::user()->id)){
92
            return ResponseModel::err(4005);
93
        }
94
95
        $ret=$contestModel->registContest($all_data["cid"], Auth::user()->id);
96
97
        return $ret ? ResponseModel::success(200) : ResponseModel::err(4006);
98
    }
99
100
    public function getAnalysisData(Request $request)
101
    {
102
        $request->validate([
103
            'cid' => 'required|integer'
104
        ]);
105
        $cid = $request->input('cid');
106
107
        $contestModel=new ContestModel();
108
        $clearance=$contestModel->judgeClearance($cid, Auth::user()->id);
109
        if ($clearance < 1) {
110
            return ResponseModel::err(7002);
111
        }
112
        return ResponseModel::success(200,null,$contestModel->praticeAnalysis($cid));
113
    }
114
115
    public function downloadPDF(Request $request)
116
    {
117
        $request->validate([
118
            'cid' => 'required|integer'
119
        ]);
120
        $cid = $request->input('cid');
121
122
        $info=EloquentContestModel::find($cid);
123
124
        if (!$info->pdf){
125
            return abort('403');
0 ignored issues
show
Bug introduced by
Are you sure the usage of abort('403') is correct as it seems to always return null.

This check looks for function or method calls that always return null and whose return value is used.

class A
{
    function getObject()
    {
        return null;
    }

}

$a = new A();
if ($a->getObject()) {

The method getObject() can return nothing but null, so it makes no sense to use the return value.

The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.

Loading history...
126
        }
127
128
        return response()->file(storage_path("app/contest/pdf/$cid.pdf"), [
129
            'Content-Disposition' => "inline; filename=\"$info->name.pdf\"",
130
            'Content-Type' => 'application/pdf',
131
            'Cache-Control' => 'no-cache',
132
        ]);
133
    }
134
}
135