diff --git a/app/Http/Controllers/ProjectController.php b/app/Http/Controllers/ProjectController.php index 5877c736..1b8c1865 100644 --- a/app/Http/Controllers/ProjectController.php +++ b/app/Http/Controllers/ProjectController.php @@ -26,7 +26,8 @@ public function mass_update(Request $request) // 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,9 +36,11 @@ public function destroy($projectId) Project::destroy($projectId); // TASK: change this Eloquent statement to include the soft-deletes records - $projects = Project::all(); + // $projects = Project::all(); + $projects = Project::withTrashed()->get(); return view('projects.index', compact('projects')); + } public function store_with_stats(Request $request) @@ -47,8 +50,8 @@ public function store_with_stats(Request $request) $project = new Project(); $project->name = $request->name; $project->save(); - return redirect('/')->with('success', 'Project created'); } } + diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 9b8c73dc..528e15b9 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -4,7 +4,9 @@ use App\Models\User; use Illuminate\Http\Request; - +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Str; class UserController extends Controller { public function index() @@ -14,8 +16,8 @@ public function index() // where email_verified_at is not null // order by created_at desc // limit 3 + $users =User::whereNotNull('email_verified_at')->orderBy('created_at','desc')->limit(3)->get(); - $users = User::all(); // replace this with Eloquent statement return view('users.index', compact('users')); } @@ -23,7 +25,10 @@ public function index() public function show($userId) { $user = NULL; // TASK: find user by $userId or show "404 not found" page - + $user = User::find($userId); + if(is_null($user)){ + abort(404); + } return view('users.show', compact('user')); } @@ -32,7 +37,10 @@ public function check_create($name, $email) // TASK: find a user by $name and $email // if not found, create a user with $name, $email and random password $user = NULL; - + $user = User::firstOrCreate( + ['name' => $name, 'email' => $email], + ['password' => Hash::make(Str::random(10))] + ); return view('users.show', compact('user')); } @@ -40,8 +48,23 @@ public function check_update($name, $email) { // 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 = NULL; // updated or created user + + //$user = DB::table('users')->updateOrInsert(['name' => $name, 'email' => $email]); + $user = User::where('name', $name)->first(); + + if ($user) { + // If user is found, update the email + $user->email = $email; + $user->save(); + } else { + // If user is not found, create a new user with a random password + $user = User::create([ + 'name' => $name, + 'email' => $email, + 'password' => Hash::make(Str::random(10)), + ]); + } return view('users.show', compact('user')); } @@ -52,7 +75,7 @@ public function destroy(Request $request) // $request->users is an array of IDs, ex. [1, 2, 3] // Insert Eloquent statement here - + User::whereIn('id', $request->users)->delete(); return redirect('/')->with('success', 'Users deleted'); } diff --git a/app/Models/Morningnews.php b/app/Models/Morningnews.php index 2335e17d..e4f00609 100644 --- a/app/Models/Morningnews.php +++ b/app/Models/Morningnews.php @@ -8,6 +8,7 @@ class Morningnews extends Model { use HasFactory; + protected $table = 'morning_news'; protected $fillable = ['title', 'news_text']; } diff --git a/app/Models/Project.php b/app/Models/Project.php index dc43be0e..d4d3ff71 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -9,4 +9,6 @@ class Project extends Model { use HasFactory, SoftDeletes; + protected $fillable = ['name']; + protected $dates = ['deleted_at']; } diff --git a/app/Models/User.php b/app/Models/User.php index e23e0905..44a19181 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -41,4 +41,8 @@ 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 00000000..b5003c02 --- /dev/null +++ b/app/Observers/ProjectObserver.php @@ -0,0 +1,49 @@ +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 ee8ca5bc..0b71d580 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -3,6 +3,8 @@ namespace App\Providers; use Illuminate\Support\ServiceProvider; +use App\Models\Project; +use App\Observers\ProjectObserver; class AppServiceProvider extends ServiceProvider { @@ -23,6 +25,6 @@ public function register() */ public function boot() { - // + Project::observe(ProjectObserver::class); } }