ExpertsController.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Championship;
  4. use App\Expert;
  5. use App\Member;
  6. use Validator;
  7. use Illuminate\Http\Request;
  8. class ExpertsController extends Controller
  9. {
  10. public function one($id)
  11. {
  12. $expert = Expert::find($id);
  13. return response()->json($expert);
  14. }
  15. public function updateExpert(Request $request, $champ_id, $expert_id)
  16. {
  17. /*
  18. * Загружаем пользователя, который выполняет действие
  19. */
  20. $expert = UserController::getUserByToken($request->bearerToken());
  21. /*
  22. * Если пользователь не имеет статус 1 (главный эксперт), возвращаем ошибку 403
  23. */
  24. if ($expert->position !== 1)
  25. return response()
  26. ->json(["status" => false, "message" => "Permission denied"])
  27. ->setStatusCode(403, 'Permission denied');
  28. $champ = Championship::find($champ_id);
  29. if (!$champ)
  30. return response()
  31. ->json(["status" => false, "message" => "Championship not found"])
  32. ->setStatusCode(404, 'Championship not found');
  33. if ($expert->position !== $champ->expert)
  34. return response()
  35. ->json(["status" => false, "message" => "Permission denied"])
  36. ->setStatusCode(403, 'Permission denied');
  37. $expert = Expert::find($expert_id);
  38. if (!$expert)
  39. return response()
  40. ->json(["status" => false, "message" => "Expert not found"])
  41. ->setStatusCode(404, 'Expert not found');
  42. if ($expert->champ_id != $champ->id)
  43. return response()
  44. ->json(["status" => false, "message" => "Expert not found"])
  45. ->setStatusCode(404, 'Expert not found');
  46. $validator = Validator::make(
  47. $request->all(),
  48. [
  49. "name" => ['required'],
  50. ]
  51. );
  52. /*
  53. * Проверяем результаты валидации
  54. */
  55. if ($validator->fails())
  56. return response()
  57. ->json(["status" => false, "errors" => $validator->messages()])
  58. ->setStatusCode(400, "Error fields");
  59. $expert->name = $request->name;
  60. $expert->save();
  61. return response()
  62. ->json(["status" => false, "message" => "Expert is updated"])
  63. ->setStatusCode(202, 'Expert is updated');
  64. }
  65. public function removeExpert(Request $request, $champ_id, $member_id)
  66. {
  67. /*
  68. * Загружаем пользователя, который выполняет действие
  69. */
  70. $expert = UserController::getUserByToken($request->bearerToken());
  71. /*
  72. * Если пользователь не имеет статус 1 (главный эксперт), возвращаем ошибку 403
  73. */
  74. if ($expert->position !== 1)
  75. return response()
  76. ->json(["status" => false, "message" => "Permission denied"])
  77. ->setStatusCode(403, 'Permission denied');
  78. $champ = Championship::find($champ_id);
  79. if (!$champ)
  80. return response()
  81. ->json(["status" => false, "message" => "Championship not found"])
  82. ->setStatusCode(404, 'Championship not found');
  83. if ($expert->position !== $champ->expert)
  84. return response()
  85. ->json(["status" => false, "message" => "Permission denied"])
  86. ->setStatusCode(403, 'Permission denied');
  87. $expert = Expert::find($member_id);
  88. if (!$expert)
  89. return response()
  90. ->json(["status" => false, "message" => "Expert not found"])
  91. ->setStatusCode(404, 'Expert not found');
  92. if ($expert->champ_id != $champ->id)
  93. return response()
  94. ->json(["status" => false, "message" => "Expert not found"])
  95. ->setStatusCode(404, 'Expert not found');
  96. $expert->delete();
  97. return response()
  98. ->json(["status" => false, "message" => "Expert is deleted"])
  99. ->setStatusCode(200, 'Expert is deleted');
  100. }
  101. public function addExpert(Request $request, $id)
  102. {
  103. /*
  104. * Загружаем пользователя, который выполняет действие
  105. */
  106. $expert = UserController::getUserByToken($request->bearerToken());
  107. /*
  108. * Если пользователь не имеет статус 1 (главный эксперт), возвращаем ошибку 403
  109. */
  110. if ($expert->position !== 1)
  111. return response()->json(["status" => false, "message" => "Permission denied"])->setStatusCode(403, 'Permission denied');
  112. $champ = Championship::find($id);
  113. if (!$champ)
  114. return response()->json(["status" => false, "message" => "Championship not found"])->setStatusCode(404, 'Championship not found');
  115. if ($expert->position !== $champ->expert)
  116. return response()->json(["status" => false, "message" => "Permission denied"])->setStatusCode(403, 'Permission denied');
  117. $validator = Validator::make(
  118. $request->all(),
  119. [
  120. "name" => ['required']
  121. ]
  122. );
  123. /*
  124. * Проверяем результаты валидации
  125. */
  126. if ($validator->fails())
  127. return response()
  128. ->json(["status" => false, "errors" => $validator->messages()])
  129. ->setStatusCode(400, "Error fields");
  130. $expert = new Expert();
  131. $expert->name = $request->name;
  132. $expert->champ_id = $id;
  133. $expert->status = 1;
  134. $expert->save();
  135. return response()->json(['status' => true, "message" => "Expert is added"], 201);
  136. }
  137. }