123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377 |
- <?php
- namespace App\Http\Controllers\Coach;
- use Illuminate\Http\Request;
- use App\Traits\ResponseTrait;
- use App\Http\Controllers\Controller;
- use Illuminate\Support\Facades\Auth;
- use App\Enums\TechnicianLocationType;
- use App\Services\Coach\AccountService;
- use App\Http\Requests\Coach\SubmitBaseInfoRequest;
- use App\Http\Requests\Coach\SubmitRealNameRequest;
- use App\Http\Requests\Coach\SubmitQualificationRequest;
- class AccountController extends Controller
- {
- use ResponseTrait;
- protected AccountService $service;
- public function __construct(AccountService $service)
- {
- $this->service = $service;
- }
-
- public function submitBaseInfo(SubmitBaseInfoRequest $request)
- {
- $data = $request->validated();
- return $this->success($this->service->submitBaseInfo(Auth::user(), $data));
- }
-
- public function submitQualification(SubmitQualificationRequest $request)
- {
- $data = $request->validated();
- return $this->success($this->service->submitQualification(Auth::user(), $data));
- }
-
- public function submitRealName(SubmitRealNameRequest $request)
- {
- $data = $request->validated();
- return $this->success($this->service->submitRealName(Auth::user(), $data));
- }
-
- public function info()
- {
- return $this->success($this->service->getCoachInfo(Auth::user()));
- }
-
- public function setLocation(Request $request)
- {
- $validated = $request->validate([
- 'latitude' => 'required|numeric|between:-90,90',
- 'longitude' => 'required|numeric|between:-180,180',
- 'type' => 'sometimes|integer|in:1,2',
- ]);
- $result = $this->service->setLocation(
- Auth::user()->coach->id,
- $validated['latitude'],
- $validated['longitude'],
- $validated['type'] ?? TechnicianLocationType::COMMON->value
- );
- return $this->success(['message' => '位置信息设置成功']);
- }
-
- public function getLocation()
- {
- $result = $this->service->getLocation(Auth::user()->id);
- return $this->success($result);
- }
-
- public function setSchedule(Request $request)
- {
- $validated = $request->validate([
- 'time_ranges' => 'required|array|min:1',
- 'time_ranges.*.start_time' => [
- 'required',
- 'string',
- 'regex:/^([01][0-9]|2[0-3]):[0-5][0-9]$/',
- ],
- 'time_ranges.*.end_time' => [
- 'required',
- 'string',
- 'regex:/^([01][0-9]|2[0-3]):[0-5][0-9]$/',
- ],
- ], [
- 'time_ranges.required' => '必须设置时间段',
- 'time_ranges.array' => '时间段必须是数组格式',
- 'time_ranges.min' => '至少设置一个时间段',
- 'time_ranges.*.start_time.required' => '开始时间不能为空',
- 'time_ranges.*.start_time.regex' => '开始时间格式错误,应为HH:mm格式',
- 'time_ranges.*.end_time.required' => '结���时间不能为空',
- 'time_ranges.*.end_time.regex' => '结束时间格式错误,应为HH:mm格式',
- ]);
- return $this->success(
- $this->service->setSchedule(Auth::user()->id, $validated['time_ranges'])
- );
- }
-
- public function updateWorkStatus(Request $request)
- {
- $validated = $request->validate([
- 'status' => 'required|integer|in:1,2',
- ], [
- 'status.required' => '状态不能为空',
- 'status.integer' => '状态必须是整数',
- 'status.in' => '无效的状态值',
- ]);
- return $this->success(
- $this->service->updateWorkStatus(Auth::user()->id, $validated['status'])
- );
- }
-
- public function getWorkStatus()
- {
- return $this->success(
- $this->service->getWorkStatus(Auth::user()->coach->id)
- );
- }
-
- public function getSchedule()
- {
- $schedule = $this->service->getSchedule(Auth::id());
- return $this->success($schedule);
- }
- }
|