<?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()->forList()->orderByDesc('updated_at')->paginate(10);
        $tables_count = $user->tables()->count();

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

    /**
     * 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();
    }
}