diff --git a/app/Events/TableAccessed.php b/app/Events/TableAccessed.php new file mode 100644 index 0000000000000000000000000000000000000000..63c8e35b3b93ff6e6328bcc53814ea94fcc57f01 --- /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 0000000000000000000000000000000000000000..186e969f2b4cafca73cb7ddbd4bd39c4b08a4cd2 --- /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 72801efd1ba74c3713f40c1809ead346cadd62f4..3c8a11c7de0cd1da560e2491af7d3157300cbdd8 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 2c284c27f05b5f4fe254e7de0ed146598c4995b5..c95d537fc6399b9d2491738308490e9e6f555f2d 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 469a242674a1e4367deb33d37c33ab8cb5113120..e2210695c33ef4382836c62c01afaf247ec3ec68 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 ff94410d3318a8c244d39ef2cd4859c98ed91971..fbc9c3bfd2416124d7e434948882689c718a2d3b 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 0000000000000000000000000000000000000000..878620afa4cf4347582121fee7d85bd91045fe7d --- /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 0000000000000000000000000000000000000000..02549ce02df63bb5c4379e1a0a00bc12a87fb721 --- /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 0000000000000000000000000000000000000000..6121a374ba8eb72bab0ffb58c15feca4ea10f5ff --- /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 58ce9624988b6b372641d0069991415072e0b6a6..70bf557dd3bfb3954119a8c093b47b618d25c339 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 0000000000000000000000000000000000000000..a5931d0fcfeb195daa6333247ce299079d34860f --- /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 9833600abdbe04833e10e3ff6779ed46ccbc4c1d..fe18662c330388653ed04f524e23b853ec19a958 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') }}">