Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Done! #328

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Done! #328

Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Done!
Bender-0 committed Nov 17, 2023
commit 1c3115c5aff34a7d408e16b76e9c063c8053009f
8 changes: 5 additions & 3 deletions app/Http/Controllers/ProjectController.php
Original file line number Diff line number Diff line change
@@ -3,7 +3,6 @@
namespace App\Http\Controllers;

use App\Models\Project;
use App\Models\Stat;
use Illuminate\Http\Request;

class ProjectController extends Controller
@@ -14,7 +13,7 @@ public function store(Request $request)
Project::create([
'name' => $request->name
]);

return redirect('/')->with('success', 'Project created');
}

@@ -26,6 +25,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');
}
@@ -35,7 +37,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'));
}
22 changes: 17 additions & 5 deletions app/Http/Controllers/UserController.php
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Support\Str;
use Illuminate\Http\Request;

class UserController extends Controller
@@ -15,14 +16,17 @@ 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();

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'));
}
@@ -31,7 +35,11 @@ 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' => bcrypt(Str::random(10))
]);

return view('users.show', compact('user'));
}
@@ -40,7 +48,11 @@ 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'=> bcrypt(Str::random(10)),
]);

return view('users.show', compact('user'));
}
@@ -51,7 +63,7 @@ public function destroy(Request $request)
// SQL: delete from users where id in ($request->users)
// $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');
}
2 changes: 2 additions & 0 deletions app/Models/Morningnews.php
Original file line number Diff line number Diff line change
@@ -9,5 +9,7 @@ class Morningnews extends Model
{
use HasFactory;

protected $table = 'morning_news';

protected $fillable = ['title', 'news_text'];
}
4 changes: 4 additions & 0 deletions app/Models/Project.php
Original file line number Diff line number Diff line change
@@ -9,4 +9,8 @@
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
@@ -41,4 +41,9 @@ class User extends Authenticatable
protected $casts = [
'email_verified_at' => 'datetime',
];

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

namespace App\Observers;

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

class ProjectObserver
{
/**
* Handle the Project "created" event.
*/
public function created(Project $project): void
{
Stat::increment('projects_count', 1);
}

/**
* 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
{
//
}
}
6 changes: 4 additions & 2 deletions app/Providers/EventServiceProvider.php
Original file line number Diff line number Diff line change
@@ -2,10 +2,12 @@

namespace App\Providers;

use App\Models\Project;
use App\Observers\ProjectObserver;
use Illuminate\Support\Facades\Event;
use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Event;

class EventServiceProvider extends ServiceProvider
{
@@ -27,6 +29,6 @@ class EventServiceProvider extends ServiceProvider
*/
public function boot()
{
//
Project::observe(ProjectObserver::class);
}
}