123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- <?php
- namespace App\Http\Controllers;
- use App\Criterion;
- use App\Http\Controllers\UserController;
- use App\Championship;
- use App\Member;
- use App\Module;
- use App\Result;
- use Illuminate\Http\Request;
- class GradingController extends Controller
- {
- public function get(Request $request, $id)
- {
- /*
- * Загружаем пользователя, который выполняет действие
- */
- $expert = UserController::getUserByToken($request->bearerToken());
- /*
- * Если пользователь не имеет статус 1 (главный эксперт), возвращаем ошибку 403
- */
- if ($expert->position !== 1)
- return response()
- ->json(["status" => false, "message" => "Permission denied"])
- ->setStatusCode(403, 'Permission denied');
- $champ = Championship::find($id);
- if (!$champ)
- return response()
- ->json(["status" => false, "message" => "Championship not found"])
- ->setStatusCode(404, 'Championship not found');
- if ($expert->position !== $champ->expert)
- return response()
- ->json(["status" => false, "message" => "Permission denied"])
- ->setStatusCode(403, 'Permission denied');
- $res = [
- "title" => $champ->title,
- "group" => $champ->group,
- "members" => $champ->members,
- "modules" => $champ->modules
- ];
- return response()->json($res, 200);
- }
- public function getCriteria(Request $request, $id)
- {
- /*
- * Загружаем пользователя, который выполняет действие
- */
- $expert = UserController::getUserByToken($request->bearerToken());
- /*
- * Если пользователь не имеет статус 1 (главный эксперт), возвращаем ошибку 403
- */
- if ($expert->position !== 1)
- return response()
- ->json(["status" => false, "message" => "Permission denied"])
- ->setStatusCode(403, 'Permission denied');
- $champ = Championship::find($id);
- if (!$champ)
- return response()
- ->json(["status" => false, "message" => "Championship not found"])
- ->setStatusCode(404, 'Championship not found');
- if ($expert->position !== $champ->expert)
- return response()
- ->json(["status" => false, "message" => "Permission denied"])
- ->setStatusCode(403, 'Permission denied');
- $module = Module::find($request->module);
- if ($module->championship != $champ->id || !$module)
- return response()
- ->json(["status" => false, "message" => "Module not found"])
- ->setStatusCode(404, 'Module not found');
- $member = Member::find($request->member);
- if (!$member || $member->championship != $champ->id)
- return response()
- ->json(["status" => false, "message" => "Member not found"])
- ->setStatusCode(404, 'Member not found');
- $criteria = Criterion::where('module', $module->id)->get();
- $res = [
- "results" => [],
- "criteria" => []
- ];
- foreach ($criteria as $criterion) {
- $result = Result::where('criterion_id', $criterion->id)
- ->where('module_id', $module->id)
- ->where('member_id', $member->id)
- ->first();
- if ($result) {
- $res["results"][] = [
- "title" => $result->criterion->title,
- "type" => $result->criterion->type,
- "max" => $result->criterion->max,
- "points" => $result->points
- ];
- continue;
- }
- $res["criteria"][] = $criterion;
- }
- return response()
- ->json($res,200);
- }
- public function lockCriterion(Request $request, $id)
- {
- /*
- * Загружаем пользователя, который выполняет действие
- */
- $expert = UserController::getUserByToken($request->bearerToken());
- /*
- * Если пользователь не имеет статус 1 (главный эксперт), возвращаем ошибку 403
- */
- if ($expert->position !== 1)
- return response()
- ->json(["status" => false, "message" => "Permission denied"])
- ->setStatusCode(403, 'Permission denied');
- $champ = Championship::find($id);
- if (!$champ)
- return response()
- ->json(["status" => false, "message" => "Championship not found"])
- ->setStatusCode(404, 'Championship not found');
- if ($expert->position !== $champ->expert)
- return response()
- ->json(["status" => false, "message" => "Permission denied"])
- ->setStatusCode(403, 'Permission denied');
- $module = Module::find($request->module);
- if ($module->championship != $champ->id || !$module)
- return response()
- ->json(["status" => false, "message" => "Module not found"])
- ->setStatusCode(404, 'Module not found');
- $member = Member::find($request->member);
- if (!$member || $member->championship != $champ->id)
- return response()
- ->json(["status" => false, "message" => "Member not found"])
- ->setStatusCode(404, 'Member not found');
- $criterion = Criterion::find($request->criterion);
- if ($criterion->module != $module->id || !$criterion)
- return response()
- ->json(["status" => false, "message" => "Criterion not found"])
- ->setStatusCode(404, 'Criterion not found');
- $result = Result::where('criterion_id', $criterion->id)
- ->where('module_id', $module->id)
- ->where('member_id', $member->id)
- ->first();
- if ($result)
- return response()
- ->json(["status" => false, "message" => "Result already exists"])
- ->setStatusCode(400, 'Result already exists');
- $result = new Result();
- $result->criterion_id = $criterion->id;
- $result->module_id = $module->id;
- $result->member_id = $member->id;
- $result->points = $request->points;
- $result->save();
- return response()
- ->json(["status" => true, "message" => "Result is saved"])
- ->setStatusCode(200, 'Result is saved');
- }
- }
|