Passed
Branch dev (36fa10)
by John
04:08
created

GroupAdminController::generateContestAccount()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 20
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 14
c 1
b 0
f 0
nc 2
nop 1
dl 0
loc 20
rs 9.7998
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 Illuminate\Support\Facades\Storage;
13
use Auth;
14
15
class GroupAdminController extends Controller
16
{
17
    public function generateContestAccount(Request $request)
18
    {
19
        $request->validate([
20
            'cid' => 'required|integer',
21
            'ccode' => 'required|min:3|max:10',
22
            'num' => 'required|integer'
23
        ]);
24
25
        $all_data=$request->all();
26
27
        $groupModel=new GroupModel();
28
        $contestModel=new ContestModel();
29
        $gid=$contestModel->gid($all_data["cid"]);
30
        $clearance=$groupModel->judgeClearance($gid, Auth::user()->id);
31
        if ($clearance<3) {
32
            return ResponseModel::err(2001);
33
        }
34
        $accountModel=new AccountModel();
35
        $ret=$accountModel->generateContestAccount($all_data["cid"], $all_data["ccode"], $all_data["num"]);
36
        return ResponseModel::success(200, null, $ret);
37
    }
38
39
    public function addProblemTag(Request $request)
40
    {
41
        $request->validate([
42
            'gid' => 'required|integer',
43
            'pid' => 'required|integer',
44
            'tag' => 'required|string',
45
        ]);
46
47
        $all_data=$request->all();
48
49
        $groupModel=new GroupModel();
50
        $clearance=$groupModel->judgeClearance($all_data["gid"], Auth::user()->id);
51
        if ($clearance < 2) {
52
            return ResponseModel::err(7002);
53
        }
54
        $tags = $groupModel->problemTags($all_data['gid'],$all_data['pid']);
55
        if(in_array($all_data['tag'],$tags)){
56
            return ResponseModel::err(7007);
57
        }
58
59
        $groupModel->problemAddTag($all_data["gid"], $all_data["pid"], $all_data["tag"]);
60
        return ResponseModel::success(200);
61
    }
62
63
    public function removeProblemTag(Request $request)
64
    {
65
        $request->validate([
66
            'gid' => 'required|integer',
67
            'pid' => 'required|integer',
68
            'tag' => 'required|string',
69
        ]);
70
71
        $all_data=$request->all();
72
73
        $groupModel=new GroupModel();
74
        $clearance=$groupModel->judgeClearance($all_data["gid"], Auth::user()->id);
75
        if ($clearance>1) {
76
            $groupModel->problemRemoveTag($all_data["gid"], $all_data["pid"], $all_data["tag"]);
77
            return ResponseModel::success(200);
78
        }
79
        return ResponseModel::err(7002);
80
    }
81
82
    public function refreshElo(Request $request)
83
    {
84
        $request->validate([
85
            'gid' => 'required|string',
86
        ]);
87
        $gid = $request->input('gid');
88
        $groupModel=new GroupModel();
89
        if($groupModel->judgeClearance($gid,Auth::user()->id) < 2) {
90
            return ResponseModel::err(2001);
91
        }
92
        $groupModel->refreshElo($gid);
93
        return ResponseModel::success(200);
94
    }
95
}
96