Skip to content
15 changes: 11 additions & 4 deletions app/Http/Controllers/ProjectController.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,13 @@ class ProjectController extends Controller
public function store(Request $request)
{
// TASK: Currently this statement fails. Fix the underlying issue.
Project::create([
'name' => $request->name
]);
// Project::create([
// 'name' => $request->name
// ]);

$project=new Project();
$project->name=$request->name;
$project->save();

return redirect('/')->with('success', 'Project created');
}
Expand All @@ -26,6 +30,9 @@ 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');
}
Expand All @@ -35,7 +42,7 @@ public function destroy($projectId)
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'));
}
Expand Down
15 changes: 11 additions & 4 deletions app/Http/Controllers/UserController.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;

class UserController extends Controller
{
Expand All @@ -15,14 +16,14 @@ public function index()
// order by created_at desc
// limit 3

$users = User::all(); // replace this with Eloquent statement
$users = User::whereNotNull('email_verified_at')->orderBy('created_at','desc')->limit(3)->get(); // replace this with Eloquent statement

return view('users.index', compact('users'));
}

public function show($userId)
{
$user = NULL; // TASK: find user by $userId or show "404 not found" page
$user = User::findOrFail($userId); // TASK: find user by $userId or show "404 not found" page

return view('users.show', compact('user'));
}
Expand All @@ -31,7 +32,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('random_password')]);

return view('users.show', compact('user'));
}
Expand All @@ -40,8 +44,10 @@ 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 = User::updateOrCreate(['name'=>$name,'email'=>$email],['password'=>Hash::make('random_password')]); // updated or created user



return view('users.show', compact('user'));
}

Expand All @@ -52,6 +58,7 @@ public function destroy(Request $request)
// $request->users is an array of IDs, ex. [1, 2, 3]

// Insert Eloquent statement here
User::destroy($request->users);

return redirect('/')->with('success', 'Users deleted');
}
Expand Down
2 changes: 1 addition & 1 deletion app/Models/Morningnews.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Morningnews extends Model
class MorningNews extends Model
{
use HasFactory;

Expand Down
2 changes: 2 additions & 0 deletions app/Models/Project.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@
class Project extends Model
{
use HasFactory, SoftDeletes;

protected $fillable=['name'];
}
5 changes: 5 additions & 0 deletions app/Models/User.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
use Illuminate\Database\Eloquent\Builder;

class User extends Authenticatable
{
Expand Down Expand Up @@ -41,4 +42,8 @@ class User extends Authenticatable
protected $casts = [
'email_verified_at' => 'datetime',
];

public function scopeActive(Builder $query){
$query->whereNotNull('email_verified_at');
}
}
38 changes: 38 additions & 0 deletions app/Observers/ProjectObserver.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?php



namespace App\Observers;



use App\Models\Project;
use App\Models\Stat;



class ProjectObserver

{

/**

* Handle the User "created" event.

*/

public function created(Project $project): void

{

// ...
Stat::increment('projects_count');

}






}
3 changes: 3 additions & 0 deletions app/Providers/EventServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Event;
use App\Models\Project;
use App\Observers\ProjectObserver;

class EventServiceProvider extends ServiceProvider
{
Expand All @@ -28,5 +30,6 @@ class EventServiceProvider extends ServiceProvider
public function boot()
{
//
Project::observe(ProjectObserver::class);
}
}