Files
dockergprompt/app/Http/Controllers/ProfileController.php
2026-09-01 09:22:30 -03:00

59 lines
1.6 KiB
PHP
Executable File

<?php
declare(strict_types=1);
namespace App\Http\Controllers;
use App\Models\PromptGeneration;
use App\Models\PromptProject;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
class ProfileController extends Controller
{
public function index(): View
{
$user = auth()->user();
$stats = [
'projects' => PromptProject::where('user_id', $user->id)->count(),
'generations' => PromptGeneration::where('user_id', $user->id)->count(),
'tokens' => PromptGeneration::where('user_id', $user->id)->sum('tokens_used') ?? 0,
];
return view('profile.index', compact('user', 'stats'));
}
public function edit(): View
{
$user = auth()->user();
return view('profile.edit', compact('user'));
}
public function update(Request $request): RedirectResponse
{
$user = auth()->user();
$validated = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|max:255|unique:users,email,' . $user->id,
'avatar' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048',
]);
if ($request->hasFile('avatar')) {
$path = $request->file('avatar')->store('avatars', 'public');
$user->avatar = $path;
}
$user->name = $validated['name'];
$user->email = $validated['email'];
$user->save();
return redirect()->route('profile.index')
->with('success', 'Perfil atualizado com sucesso.');
}
}