<?php

namespace App\Http\Controllers\API;

use App\Exceptions\NoPermissionException;
use App\Exceptions\NotLoggedInException;
use App\Exceptions\ResourceNotFound;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Laravel\Lumen\Routing\Controller as BaseController;
use TaGeSo\APIResponse\Response;

class AccountController extends BaseController
{
    public function getUsers(Response $response) {
        if(!Auth::check()) {
            throw new NotLoggedInException();
        }

        if(!Auth::user()->admin) {
            throw new NoPermissionException();
        }

        $users = User::query()->paginate(100);
        $response->setPagination(
            $users->currentPage(),
            $users->lastPage(),
            $users->perPage()
        );
        return $response->withData(\App\Http\Resources\API\User::collection(($users)));
    }

    public function getUser(Response $response, $id) {
        if(!Auth::check()) {
            throw new NotLoggedInException();
        }

        if(!(Auth::user()->admin || Auth::user()->id == $id)) {
            throw new NoPermissionException();
        }

        $user = User::query()->where("id", "=", $id)->first();

        if($user == null) {
            throw new ResourceNotFound();
        }

        return $response->withData(new \App\Http\Resources\API\User($user));
    }
}