middleware('auth:sanctum'); $this->authorizeResource(Account::class,'account'); } public function index(Request $request) { $filter = new AccountFilter(); $filterItems = $filter->transform($request); $includeSubmissions = $request->query('includeSubmissions'); $includeDoctorProfiles = $request->query('includeDoctorProfiles'); $accounts = Account::where($filterItems); if ($includeSubmissions) { $accounts = $accounts->with('submission'); } if ($includeDoctorProfiles) { $accounts = $accounts->with('doctorProfile'); } return new AccountCollection($accounts->paginate()->appends($request->query())); } public function listDoctors(Request $request) { $search = $request->query('search'); $query = Account::where('role', 'doctor'); if ($search) { $query->where('name', 'like', "%{$search}%"); } if ($limit = (int) $request->query('limit', 0)) { $query->limit($limit); } $doctors = $query->orderBy('name')->get(['id', 'name']); return DoctorListResource::collection($doctors); } public function welcome(Request $request) { $user = $request->user(); $firstName = explode(' ', trim($user->name))[0] ?? $user->name; $id = $user->id; $role = ucfirst($user->role); $message = "Welcome back, {$firstName}! (You are logged in as {$role})"; return response()->json([ 'accountId' => $id, 'message' => $message, 'firstName' => $firstName, 'role' => $user->role, ]); } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(StoreAccountRequest $request) { // return new AccountResource(Account::create($request->all())); } /** * Display the specified resource. */ public function show(Account $account) { // $includeSubmissions = request()->query('includeSubmissions'); if ($includeSubmissions) { $account->loadMissing('submission'); } $includeDoctorProfiles = request()->query('includeDoctorProfiles'); if ($includeDoctorProfiles) { $account->loadMissing('doctorProfile'); } return new AccountResource($account); } /** * Show the form for editing the specified resource. */ public function edit(Account $account) { // } /** * Update the specified resource in storage. */ public function update(UpdateAccountRequest $request, Account $account) { // $account->update($request->validated()); return new AccountResource($account->fresh()); } /** * Remove the specified resource from storage. */ public function destroy(Account $account) { // $account->delete(); return response()->json(['message' => 'Account deleted.']); } }