From e458ec633135ba922c90c6235bebf1853fdea6bd Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 4 Jun 2019 07:46:46 +1000 Subject: [PATCH] Update user table on access --- app/Events/User/UserLoggedIn.php | 56 ++++++++++++++++++++++ app/Jobs/Invoice/StoreInvoice.php | 2 +- app/Listeners/User/UpdateUserLastLogin.php | 45 +++++++++++++++++ app/Models/BaseModel.php | 4 ++ app/Providers/EventServiceProvider.php | 12 +++-- app/Transformers/CompanyTransformer.php | 1 - app/Transformers/UserTransformer.php | 3 +- 7 files changed, 116 insertions(+), 7 deletions(-) create mode 100644 app/Events/User/UserLoggedIn.php create mode 100644 app/Listeners/User/UpdateUserLastLogin.php diff --git a/app/Events/User/UserLoggedIn.php b/app/Events/User/UserLoggedIn.php new file mode 100644 index 000000000000..462f37dba3c3 --- /dev/null +++ b/app/Events/User/UserLoggedIn.php @@ -0,0 +1,56 @@ +user = $user; + + } + + /** + * Get the channels the event should broadcast on. + * + * @return \Illuminate\Broadcasting\Channel|array + */ + public function broadcastOn() + { + return new PrivateChannel('channel-name'); + } +} diff --git a/app/Jobs/Invoice/StoreInvoice.php b/app/Jobs/Invoice/StoreInvoice.php index c6fb51fc346a..8a6d4f235af7 100644 --- a/app/Jobs/Invoice/StoreInvoice.php +++ b/app/Jobs/Invoice/StoreInvoice.php @@ -100,7 +100,7 @@ class StoreInvoice implements ShouldQueue if($payment) { //fire payment notifications here - PaymentNotification::dipatch($payment); + PaymentNotification::dispatch($payment); } diff --git a/app/Listeners/User/UpdateUserLastLogin.php b/app/Listeners/User/UpdateUserLastLogin.php new file mode 100644 index 000000000000..f7ddfe44b235 --- /dev/null +++ b/app/Listeners/User/UpdateUserLastLogin.php @@ -0,0 +1,45 @@ +user; + + $user->last_login = now() + $user->save(); + + } +} diff --git a/app/Models/BaseModel.php b/app/Models/BaseModel.php index 4f07859c8b7d..49ee3ba1bbf7 100644 --- a/app/Models/BaseModel.php +++ b/app/Models/BaseModel.php @@ -25,6 +25,10 @@ class BaseModel extends Model use UserSessionAttributes; use SoftDeletes; + //todo customise names of archived_at / updated_at columns + ///const CREATED_AT = 'creation_date'; + //const UPDATED_AT = 'last_update'; + //protected $dateFormat = 'Y-m-d H:i:s.u'; public function __call($method, $params) diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 653651a22518..3eea45d70b2c 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -17,12 +17,14 @@ use App\Events\Invoice\InvoiceWasMarkedSent; use App\Events\Invoice\InvoiceWasUpdated; use App\Events\Payment\PaymentWasCreated; use App\Events\User\UserCreated; +use App\Events\User\UserLoggedIn; use App\Listeners\Activity\CreatedClientActivity; use App\Listeners\Activity\PaymentCreatedActivity; use App\Listeners\Invoice\CreateInvoiceActivity; use App\Listeners\Invoice\CreateInvoiceInvitations; use App\Listeners\Invoice\UpdateInvoiceActivity; use App\Listeners\SendVerificationNotification; +use App\Listeners\User\UpdateUserLastLogin; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; class EventServiceProvider extends ServiceProvider @@ -36,7 +38,9 @@ class EventServiceProvider extends ServiceProvider UserCreated::class => [ SendVerificationNotification::class, ], - + UserLoggedIn::class => [ + UpdateUserLastLogin::class, + ], // Clients ClientWasCreated::class => [ CreatedClientActivity::class, @@ -87,10 +91,10 @@ class EventServiceProvider extends ServiceProvider * * @return void */ - public function boot() + public function boot(DispatcherContract $events) { - parent::boot(); - // + parent::boot($events); + } } diff --git a/app/Transformers/CompanyTransformer.php b/app/Transformers/CompanyTransformer.php index 3ba0c1e38a4d..61658743e73f 100644 --- a/app/Transformers/CompanyTransformer.php +++ b/app/Transformers/CompanyTransformer.php @@ -65,7 +65,6 @@ class CompanyTransformer extends EntityTransformer 'id' => $this->encodePrimaryKey($company->id), 'name' => $company->name, 'company_key' => $company->company_key, - 'last_login' => $company->last_login, 'address1' => $company->address1, 'address2' => $company->address2, 'city' => $company->city, diff --git a/app/Transformers/UserTransformer.php b/app/Transformers/UserTransformer.php index 8be4a28c3e16..9f33710d62f5 100644 --- a/app/Transformers/UserTransformer.php +++ b/app/Transformers/UserTransformer.php @@ -72,6 +72,7 @@ class UserTransformer extends EntityTransformer 'first_name' => $user->first_name, 'last_name' => $user->last_name, 'email' => $user->email, + 'last_login' => $user->last_login, 'updated_at' => $user->updated_at, 'deleted_at' => $user->deleted_at, 'phone' => $user->phone, @@ -84,7 +85,7 @@ class UserTransformer extends EntityTransformer public function includeUserCompany(User $user) { -//cannot use this here as it will fail retrieving the company as we depend on the token in the header which may not be present for this request + //cannot use this here as it will fail retrieving the company as we depend on the token in the header which may not be present for this request //$transformer = new CompanyUserTransformer($this->serializer); //return $this->includeItem($user->user_company(), $transformer, CompanyUser::class);