TimesController.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <?php
  2. namespace App\Http\Controllers\Admin\School;
  3. use App\Http\Controllers\Controller;
  4. use App\Repositories\Enums\ModelStatusEnum;
  5. use App\Repositories\Enums\PermissionEnum;
  6. use App\Repositories\Enums\ResponseCodeEnum;
  7. use App\Repositories\Models\School\LessonTeacher;
  8. use App\Repositories\Models\School\Time;
  9. use App\Repositories\Presenters\School\TimePresenter;
  10. use Illuminate\Http\Request;
  11. use Jiannei\Response\Laravel\Support\Facades\Response;
  12. use Prettus\Validator\Contracts\ValidatorInterface;
  13. use App\Contracts\Repositories\School\TimeRepository;
  14. use App\Repositories\Validators\School\TimeValidator;
  15. /**
  16. * Class TimesController.
  17. *
  18. * @package namespace App\Http\Controllers\Mentor;
  19. */
  20. class TimesController extends Controller
  21. {
  22. /**
  23. * @var TimeRepository
  24. */
  25. protected $repository;
  26. /**
  27. * @var TimeValidator
  28. */
  29. protected $validator;
  30. /**
  31. * TimesController constructor.
  32. *
  33. * @param TimeRepository $repository
  34. * @param TimeValidator $validator
  35. */
  36. public function __construct(TimeRepository $repository, TimeValidator $validator)
  37. {
  38. parent::__construct();
  39. $this->repository = $repository;
  40. $this->validator = $validator;
  41. }
  42. /**
  43. * 列表
  44. * @param Request $request
  45. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  46. * Author: Mead
  47. */
  48. public function index(Request $request)
  49. {
  50. $this->isCan(PermissionEnum::controller_time_all);
  51. $lists = $this->repository->paginate($request->get('per_page', self::PAGE_NUM));
  52. return Response::success($lists);
  53. }
  54. /**
  55. * 详情
  56. * @param Request $request
  57. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource|void
  58. * @throws \Illuminate\Validation\ValidationException
  59. * Author: Mead
  60. */
  61. public function store(Request $request)
  62. {
  63. $this->isCan(PermissionEnum::controller_time_all);
  64. $this->validate($request, $this->validator->getRules(ValidatorInterface::RULE_CREATE));
  65. try {
  66. $model = $this->repository->create($request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_CREATE))));
  67. return Response::success($model);
  68. } catch (\Exception $e) {
  69. return $this->error($e);
  70. }
  71. }
  72. /**
  73. * 详情
  74. * @param $id
  75. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  76. * Author: Mead
  77. */
  78. public function show($id)
  79. {
  80. $data = $this->repository->find($id);
  81. return Response::success($data);
  82. }
  83. /**
  84. * 更新
  85. * @param Request $request
  86. * @param $id
  87. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  88. * @throws \Illuminate\Validation\ValidationException
  89. * Author: Mead
  90. */
  91. public function update(Request $request, $id)
  92. {
  93. $this->isCan(PermissionEnum::controller_time_all);
  94. $this->validate($request, $this->validator->getRules(ValidatorInterface::RULE_UPDATE));
  95. try {
  96. $data = $request->only(array_keys($this->validator->getRules(ValidatorInterface::RULE_CREATE)));
  97. $model = $this->repository->update($data, $id);
  98. return Response::success($model);
  99. } catch (\Exception $e) {
  100. $this->error($e);
  101. }
  102. }
  103. /**
  104. * 删除
  105. * @param $id
  106. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  107. * Author: Mead
  108. */
  109. public function destroy($id)
  110. {
  111. $this->isCan(PermissionEnum::controller_time_all);
  112. try {
  113. $this->repository->skipPresenter()->delete($id);
  114. return Response::success(null, T('successfully delete.'));
  115. } catch (\Exception $exception) {
  116. return Response::fail(T('Delete failed.'), ResponseCodeEnum::SERVICE_UPDATE_DATA_ERROR);
  117. }
  118. }
  119. /**
  120. * 批量删除
  121. * @param Request $request
  122. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  123. * Author: Mead
  124. */
  125. public function delete(Request $request)
  126. {
  127. $this->isCan(PermissionEnum::controller_time_all);
  128. try {
  129. $this->validate($request, [
  130. 'ids' => 'required|array',
  131. ]);
  132. $ids = $request->get('ids');
  133. $this->repository->whereIn('id', $ids)->delete();
  134. return Response::success(null, T('successfully delete.'));
  135. } catch (\Exception $exception) {
  136. return Response::fail(T('Delete failed.'), ResponseCodeEnum::SERVICE_UPDATE_DATA_ERROR);
  137. }
  138. }
  139. /**
  140. * 选项
  141. * @param Request $request
  142. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  143. * Author: Mead
  144. */
  145. public function selectOptions()
  146. {
  147. $data = $this->repository->skipPresenter()->all(['start_time', 'end_time', 'id', 'name']);
  148. return Response::success($data);
  149. }
  150. /**
  151. * 暂停
  152. * @param Request $request
  153. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  154. * @throws \Illuminate\Validation\ValidationException
  155. */
  156. public function pause(Request $request)
  157. {
  158. $this->isCan(PermissionEnum::controller_time_all);
  159. $this->validate($request, [
  160. 'id' => 'required|integer',
  161. 'type' => 'sometimes|nullable|integer',
  162. ]);
  163. $status = ModelStatusEnum::PAUSE;
  164. if ($request->get('type')) {
  165. $status = ModelStatusEnum::OK;
  166. }
  167. $re = Time::query()->where('id', $request->get('id'))->update(['status' => $status]);
  168. if ($re) {
  169. return Response::success([]);
  170. }
  171. return $this->error('操作失败');
  172. }
  173. }