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

ContestController::downloadPDF()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 17
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 2
eloc 10
nc 2
nop 1
dl 0
loc 17
rs 9.9332
c 1
b 0
f 1
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