From c7bf3ea95d68c15961a2fc8f2dfdd3e547059dcd Mon Sep 17 00:00:00 2001 From: Thuan Bui <9248622+10h30@users.noreply.github.com> Date: Fri, 4 Apr 2025 11:57:49 +0900 Subject: [PATCH] Complete all stats --- app/Http/Controllers/ProjectController.php | 7 ++- app/Http/Controllers/UserController.php | 10 ++++- app/Models/Project.php | 1 + app/Models/User.php | 5 +++ app/Observers/ProjectObserver.php | 50 ++++++++++++++++++++++ app/Providers/AppServiceProvider.php | 3 ++ 6 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 app/Observers/ProjectObserver.php diff --git a/app/Http/Controllers/ProjectController.php b/app/Http/Controllers/ProjectController.php index 5877c73..a14bc86 100644 --- a/app/Http/Controllers/ProjectController.php +++ b/app/Http/Controllers/ProjectController.php @@ -12,7 +12,7 @@ class ProjectController extends Controller { // TASK: Currently this statement fails. Fix the underlying issue. Project::create([ - 'name' => $request->name + 'name' => $request->name, ]); return redirect('/')->with('success', 'Project created'); @@ -26,6 +26,9 @@ class ProjectController extends Controller // where name = $request->old_name // Insert Eloquent statement below + Project::where('name', $request->old_name) + ->update(['name' => $request->new_name]); + return redirect('/')->with('success', 'Projects updated'); } @@ -35,7 +38,7 @@ class ProjectController extends Controller Project::destroy($projectId); // TASK: change this Eloquent statement to include the soft-deletes records - $projects = Project::all(); + $projects = Project::withTrashed()->get(); return view('projects.index', compact('projects')); } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 8ffc7fc..c824105 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -45,7 +45,13 @@ class UserController extends Controller { // TASK: find a user by $name and update it with $email // if not found, create a user with $name, $email and random password - $user = NULL; // updated or created user + $user = User::updateOrCreate( + ['name' => $name], + [ + 'email' => $email, + 'password' => Hash::make(Str::random(12)), + ] + ); return view('users.show', compact('user')); } @@ -57,7 +63,7 @@ class UserController extends Controller // $request->users is an array of IDs, ex. [1, 2, 3] // Insert Eloquent statement here - + $users = User::whereIn('id', $request->users)->delete(); return redirect('/')->with('success', 'Users deleted'); } diff --git a/app/Models/Project.php b/app/Models/Project.php index dc43be0..cd28928 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -9,4 +9,5 @@ use Illuminate\Database\Eloquent\SoftDeletes; class Project extends Model { use HasFactory, SoftDeletes; + protected $fillable = ['name']; } diff --git a/app/Models/User.php b/app/Models/User.php index e23e090..c435e56 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -41,4 +41,9 @@ class User extends Authenticatable protected $casts = [ 'email_verified_at' => 'datetime', ]; + + public function scopeActive($query) + { + return $query->whereNotNull('email_verified_at'); + } } diff --git a/app/Observers/ProjectObserver.php b/app/Observers/ProjectObserver.php new file mode 100644 index 0000000..b631ddf --- /dev/null +++ b/app/Observers/ProjectObserver.php @@ -0,0 +1,50 @@ +increment('projects_count'); + } + + /** + * Handle the Project "updated" event. + */ + public function updated(Project $project): void + { + // + } + + /** + * Handle the Project "deleted" event. + */ + public function deleted(Project $project): void + { + // + } + + /** + * Handle the Project "restored" event. + */ + public function restored(Project $project): void + { + // + } + + /** + * Handle the Project "force deleted" event. + */ + public function forceDeleted(Project $project): void + { + // + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index ee8ca5b..6aee21e 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,6 +2,8 @@ namespace App\Providers; +use App\Models\Project; +use App\Observers\ProjectObserver; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider @@ -24,5 +26,6 @@ class AppServiceProvider extends ServiceProvider public function boot() { // + Project::observe(ProjectObserver::class); } }