123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- <?php
- namespace App\Http\Controllers;
- use App\Championship;
- use App\Expert;
- use App\Member;
- use Validator;
- use Illuminate\Http\Request;
- class ExpertsController extends Controller
- {
- public function one($id)
- {
- $expert = Expert::find($id);
- return response()->json($expert);
- }
- public function updateExpert(Request $request, $champ_id, $expert_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($champ_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');
- $expert = Expert::find($expert_id);
- if (!$expert)
- return response()
- ->json(["status" => false, "message" => "Expert not found"])
- ->setStatusCode(404, 'Expert not found');
- if ($expert->champ_id != $champ->id)
- return response()
- ->json(["status" => false, "message" => "Expert not found"])
- ->setStatusCode(404, 'Expert not found');
- $validator = Validator::make(
- $request->all(),
- [
- "name" => ['required'],
- ]
- );
- /*
- * Проверяем результаты валидации
- */
- if ($validator->fails())
- return response()
- ->json(["status" => false, "errors" => $validator->messages()])
- ->setStatusCode(400, "Error fields");
- $expert->name = $request->name;
- $expert->save();
- return response()
- ->json(["status" => false, "message" => "Expert is updated"])
- ->setStatusCode(202, 'Expert is updated');
- }
- public function removeExpert(Request $request, $champ_id, $member_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($champ_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');
- $expert = Expert::find($member_id);
- if (!$expert)
- return response()
- ->json(["status" => false, "message" => "Expert not found"])
- ->setStatusCode(404, 'Expert not found');
- if ($expert->champ_id != $champ->id)
- return response()
- ->json(["status" => false, "message" => "Expert not found"])
- ->setStatusCode(404, 'Expert not found');
- $expert->delete();
- return response()
- ->json(["status" => false, "message" => "Expert is deleted"])
- ->setStatusCode(200, 'Expert is deleted');
- }
- public function addExpert(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');
- $validator = Validator::make(
- $request->all(),
- [
- "name" => ['required']
- ]
- );
- /*
- * Проверяем результаты валидации
- */
- if ($validator->fails())
- return response()
- ->json(["status" => false, "errors" => $validator->messages()])
- ->setStatusCode(400, "Error fields");
- $expert = new Expert();
- $expert->name = $request->name;
- $expert->champ_id = $id;
- $expert->status = 1;
- $expert->save();
- return response()->json(['status' => true, "message" => "Expert is added"], 201);
- }
- }
|