<?php


namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;

/**
 * Profile page and profile settings
 */
class ProfileController extends Controller
{
    /**
     * Show the user's profile / dashboard.
     *
     * @return \Illuminate\View\View
     */
    public function view(User $user)
    {
        $tables = $user->tables()
            ->with('revision:id,row_count')
            ->orderByDesc('updated_at')
            ->paginate(10);

        return view('profile.view')->with(compact('tables', 'user'));
    }

    /**
     * Edit own profile (this does not include auth settings etc)
     *
     * @return \Illuminate\View\View
     */
    public function editProfile()
    {
        return view('profile.edit-profile')->with('user', \user());
    }

    /**
     * Store changed profile
     */
    public function storeProfile(Request $request)
    {
        $input = $this->validate($request, [
            'title' => ['required', VALI_LINE],
            'bio' => ['nullable', VALI_TEXT],
            'website' => ['nullable', VALI_LINE],
        ]);

        $user = user();
        $user->fill($input->all());
        $user->save();

        flash()->success('Settings saved');
        return back();
    }
}