From 2b60d07fa740e587b4844f2ae854180a089b4567 Mon Sep 17 00:00:00 2001 From: icalF <laser.survivor@gmail.com> Date: Tue, 3 May 2016 23:31:57 +0700 Subject: [PATCH] logger event --- app/Events/TableAccessed.php | 36 +++++++++++++++++++ app/Events/TableModified.php | 36 +++++++++++++++++++ app/Http/Controllers/RoleController.php | 10 ++++-- app/Http/Controllers/ScheduleController.php | 6 ++++ app/Http/Controllers/TpsController.php | 3 ++ app/Http/Controllers/UserController.php | 3 ++ app/Listeners/LastAccessUpdate.php | 36 +++++++++++++++++++ app/Listeners/LastModifyUpdate.php | 35 ++++++++++++++++++ app/Listeners/LoginLogger.php | 34 ++++++++++++++++++ app/Providers/EventServiceProvider.php | 10 ++++-- ...5_add_last_login_column_to_users_table.php | 31 ++++++++++++++++ .../views/auth/passwords/email.blade.php | 1 + 12 files changed, 237 insertions(+), 4 deletions(-) create mode 100644 app/Events/TableAccessed.php create mode 100644 app/Events/TableModified.php create mode 100644 app/Listeners/LastAccessUpdate.php create mode 100644 app/Listeners/LastModifyUpdate.php create mode 100644 app/Listeners/LoginLogger.php create mode 100644 database/migrations/2016_05_01_163505_add_last_login_column_to_users_table.php diff --git a/app/Events/TableAccessed.php b/app/Events/TableAccessed.php new file mode 100644 index 0000000..63c8e35 --- /dev/null +++ b/app/Events/TableAccessed.php @@ -0,0 +1,36 @@ +<?php + +namespace App\Events; + +use App\Events\Event; +use Illuminate\Queue\SerializesModels; +use Illuminate\Contracts\Broadcasting\ShouldBroadcast; + +class TableAccessed extends Event +{ + use SerializesModels; + + private $model; + + /** + * Create a new event instance. + * + * @return void + */ + public function __construct($model) + { + $this->model = $model; + } + + /** + * Get the channels the event should be broadcast on. + * + * @return array + */ + public function broadcastOn() + { + return []; + } + + public function getModel() { return $this->model; } +} diff --git a/app/Events/TableModified.php b/app/Events/TableModified.php new file mode 100644 index 0000000..186e969 --- /dev/null +++ b/app/Events/TableModified.php @@ -0,0 +1,36 @@ +<?php + +namespace App\Events; + +use App\Events\Event; +use Illuminate\Queue\SerializesModels; +use Illuminate\Contracts\Broadcasting\ShouldBroadcast; + +class TableModified extends Event +{ + use SerializesModels; + + private $model; + + /** + * Create a new event instance. + * + * @return void + */ + public function __construct($model) + { + $this->model = $model; + } + + /** + * Get the channels the event should be broadcast on. + * + * @return array + */ + public function broadcastOn() + { + return []; + } + + public function getModel() { return $this->model; } +} diff --git a/app/Http/Controllers/RoleController.php b/app/Http/Controllers/RoleController.php index 72801ef..3c8a11c 100644 --- a/app/Http/Controllers/RoleController.php +++ b/app/Http/Controllers/RoleController.php @@ -36,13 +36,19 @@ class RoleController extends Controller public function index($userId) { - return view('menu.manageRole', ['id'=>$userId,'dataRole' => User::find($userId)->roles()->get()]); + $model = User::find($userId)->roles()->get(); + \Event::fire(new \App\Events\TableAccessed($model)); + return view('menu.manageRole', ['id'=>$userId,'dataRole' => $model]); } public function store($userId) { $data = Input::all(); - if (UsersRoles::create(["id_user"=>$userId, "id_role"=>Input::get('id_role')])){} + if (UsersRoles::create([ + "id_user"=>$userId, + "id_role"=>Input::get('id_role'), + 'created_by' => Auth::user()->id + ])){} return redirect('/user/'.$userId.'/role'); } diff --git a/app/Http/Controllers/ScheduleController.php b/app/Http/Controllers/ScheduleController.php index 2c284c2..c95d537 100644 --- a/app/Http/Controllers/ScheduleController.php +++ b/app/Http/Controllers/ScheduleController.php @@ -59,6 +59,8 @@ class ScheduleController extends Controller { $all = Schedule::where('id_user', Auth::user()->id)->get(); } + + // \Event::fire(new \App\Events\TableAccessed($all)); foreach ($all as $jadwal) { $tmp = []; $tmp = $jadwal; @@ -83,6 +85,7 @@ class ScheduleController extends Controller $sched->time = Input::get('time',''); $sched->amount = Input::get('amount',1); $sched->is_done = Input::get('is_done', 0); + $sched->created_by = Auth::user()->id; $sched->id = 0; $sched->save(); $tps = Tps::find($sched->id_tps); @@ -141,6 +144,7 @@ class ScheduleController extends Controller if(Input::has('amount')) $sched->amount = Input::get('amount'); $sched->is_done = Input::get('is_done'); + \Event::fire(new \App\Events\TableModified($sched)); $sched->save(); $tps = Tps::find($sched->id_tps); $this->notifySupir('TPS '.$tps->nama.' penuh, jadwal anda di TPS tersebut berubah'); @@ -150,6 +154,7 @@ class ScheduleController extends Controller { if($sched->is_done!=Input::get('is_done')){ $sched->is_done = Input::get('is_done'); + \Event::fire(new \App\Events\TableModified($sched)); $sched->save(); $tps = Tps::find($sched->id_tps); $tps->capacity_now += $sched->amount; @@ -159,6 +164,7 @@ class ScheduleController extends Controller $tps->capacity_now = $tps->capacity_full; $tps->is_full = 1; } + \Event::fire(new \App\Events\TableModified($tps)); $tps->save(); } return redirect('/schedule'); diff --git a/app/Http/Controllers/TpsController.php b/app/Http/Controllers/TpsController.php index 469a242..e221069 100644 --- a/app/Http/Controllers/TpsController.php +++ b/app/Http/Controllers/TpsController.php @@ -53,6 +53,7 @@ class TpsController extends Controller { $all = Tps::where('id_manager', Auth::user()->id)->get(); } + \Event::fire(new \App\Events\TableAccessed($all)); foreach ($all as $tps) { $tmp = []; $tmp = $tps; @@ -70,6 +71,7 @@ class TpsController extends Controller $tps->nama = Input::get('name',''); $tps->is_full = Input::get('is_full', 0); $tps->id_manager = Input::get('idPengelola', 0); + $tps->created_by = Auth::user()->id; $tps->id = 0; $tps->save(); //$tps = Tps::create(Input::all()); @@ -109,6 +111,7 @@ class TpsController extends Controller $tps->is_full = Input::get('is_full', 0); $tps->id_manager = Input::get('idPengelola', 0); $tps->save(); + \Event::fire(new \App\Events\TableModified($tps)); return redirect('/tps'); } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index ff94410..fbc9c3b 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -44,6 +44,7 @@ class UserController extends Controller public function index() { + \Event::fire(new \App\Events\TableAccessed(User::all())); return view('menu.user', ['data' => User::all()]); } @@ -53,6 +54,7 @@ class UserController extends Controller 'name' => Input::get('name'), 'email' => Input::get('email'), 'password' => bcrypt(Input::get('password')), + 'created_by' => Auth::user()->id ]); return redirect('/user'); } @@ -85,6 +87,7 @@ class UserController extends Controller 'email' => Input::get('email'), 'password' => bcrypt(Input::get('password')), ]); + \Event::fire(new \App\Events\TableModified($user)); return redirect('/user'); } diff --git a/app/Listeners/LastAccessUpdate.php b/app/Listeners/LastAccessUpdate.php new file mode 100644 index 0000000..878620a --- /dev/null +++ b/app/Listeners/LastAccessUpdate.php @@ -0,0 +1,36 @@ +<?php + +namespace App\Listeners; + +use App\Events\TableAccessed; +use Illuminate\Queue\InteractsWithQueue; +use Illuminate\Contracts\Queue\ShouldQueue; +use Carbon\Carbon; + +class LastAccessUpdate +{ + /** + * Create the event listener. + * + * @return void + */ + public function __construct() + { + // + } + + /** + * Handle the event. + * + * @param TableAccessed $event + * @return void + */ + public function handle(TableAccessed $event) + { + foreach ($event->getModel() as $row) { + $row->seen_at = Carbon::now(); + $row->seen_by = \Auth::user()->id; + $row->save(); + } + } +} diff --git a/app/Listeners/LastModifyUpdate.php b/app/Listeners/LastModifyUpdate.php new file mode 100644 index 0000000..02549ce --- /dev/null +++ b/app/Listeners/LastModifyUpdate.php @@ -0,0 +1,35 @@ +<?php + +namespace App\Listeners; + +use App\Events\TableModified; +use Illuminate\Queue\InteractsWithQueue; +use Illuminate\Contracts\Queue\ShouldQueue; +use Carbon\Carbon; + +class LastModifyUpdate +{ + /** + * Create the event listener. + * + * @return void + */ + public function __construct() + { + // + } + + /** + * Handle the event. + * + * @param TableModified $event + * @return void + */ + public function handle(TableModified $event) + { + foreach ($event->getModel() as $row) { + $row->updated_by = \Auth::user()->id; + $row->save(); + } + } +} diff --git a/app/Listeners/LoginLogger.php b/app/Listeners/LoginLogger.php new file mode 100644 index 0000000..6121a37 --- /dev/null +++ b/app/Listeners/LoginLogger.php @@ -0,0 +1,34 @@ +<?php + +namespace App\Listeners; + +use App\Events\SomeEvent; +use Illuminate\Queue\InteractsWithQueue; +use Illuminate\Contracts\Queue\ShouldQueue; +use App\User; +use Carbon\Carbon; + +class LoginLogger +{ + /** + * Create the event listener. + * + * @return void + */ + public function __construct() + { + // + } + + /** + * Handle the event. + * + * @param SomeEvent $event + * @return void + */ + public function handle(User $user) + { + $user->last_login = Carbon::now(); + $user->save(); + } +} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 58ce962..70bf557 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -13,8 +13,14 @@ class EventServiceProvider extends ServiceProvider * @var array */ protected $listen = [ - 'App\Events\SomeEvent' => [ - 'App\Listeners\EventListener', + 'auth.login' => [ + 'App\Listeners\LoginLogger', + ], + 'App\Events\TableAccessed' => [ + 'App\Listeners\LastAccessUpdate', + ], + 'App\Events\TableModified' => [ + 'App\Listeners\LastModifyUpdate', ], ]; diff --git a/database/migrations/2016_05_01_163505_add_last_login_column_to_users_table.php b/database/migrations/2016_05_01_163505_add_last_login_column_to_users_table.php new file mode 100644 index 0000000..a5931d0 --- /dev/null +++ b/database/migrations/2016_05_01_163505_add_last_login_column_to_users_table.php @@ -0,0 +1,31 @@ +<?php + +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Migrations\Migration; + +class AddLastLoginColumnToUsersTable extends Migration +{ + /** + * Run the migrations. + * + * @return void + */ + public function up() + { + Schema::table('users', function (Blueprint $table) { + $table->timestamp('last_login')->after('remember_token'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('last_login'); + }); + } +} diff --git a/resources/views/auth/passwords/email.blade.php b/resources/views/auth/passwords/email.blade.php index 9833600..fe18662 100644 --- a/resources/views/auth/passwords/email.blade.php +++ b/resources/views/auth/passwords/email.blade.php @@ -20,6 +20,7 @@ <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}"> <label class="col-md-4 control-label">E-Mail Address</label> + <div class="col-md-6"> <input type="email" class="form-control" name="email" value="{{ old('email') }}"> -- GitLab