From 0b78332a2007f204500694e9c3fe42bc2e334c84 Mon Sep 17 00:00:00 2001 From: James Brooks Date: Tue, 9 Feb 2016 19:09:30 +0000 Subject: [PATCH] Display what subscriptions (if any) a subscriber has --- app/Models/Subscriber.php | 7 +++ app/Presenters/SubscriberPresenter.php | 11 ++++ resources/lang/en/dashboard.php | 12 +++-- .../dashboard/subscribers/index.blade.php | 50 +++++++++++-------- 4 files changed, 53 insertions(+), 27 deletions(-) diff --git a/app/Models/Subscriber.php b/app/Models/Subscriber.php index dba23d83..be456719 100644 --- a/app/Models/Subscriber.php +++ b/app/Models/Subscriber.php @@ -48,6 +48,13 @@ class Subscriber extends Model implements HasPresenter 'email' => 'required|email', ]; + /** + * The relations to eager load on every query. + * + * @var string[] + */ + protected $with = ['subscriptions']; + /** * Overrides the models boot method. */ diff --git a/app/Presenters/SubscriberPresenter.php b/app/Presenters/SubscriberPresenter.php index adf970b5..a1f59bbe 100644 --- a/app/Presenters/SubscriberPresenter.php +++ b/app/Presenters/SubscriberPresenter.php @@ -14,6 +14,7 @@ namespace CachetHQ\Cachet\Presenters; use CachetHQ\Cachet\Dates\DateFactory; use CachetHQ\Cachet\Presenters\Traits\TimestampsTrait; use Illuminate\Contracts\Support\Arrayable; +use Illuminate\Support\Facades\Config; use McCool\LaravelAutoPresenter\BasePresenter; class SubscriberPresenter extends BasePresenter implements Arrayable @@ -30,6 +31,16 @@ class SubscriberPresenter extends BasePresenter implements Arrayable return app(DateFactory::class)->make($this->wrappedObject->verified_at)->toDateTimeString(); } + /** + * Present formatted subscribed date. + * + * @return string + */ + public function subscribed_at() + { + return ucfirst(app(DateFactory::class)->make($this->wrappedObject->subscribed_at)->format(Config::get('setting.incident_date_format', 'l jS F Y H:i:s'))); + } + /** * Convert the presenter instance to an array. * diff --git a/resources/lang/en/dashboard.php b/resources/lang/en/dashboard.php index f43a3493..8fb97a79 100755 --- a/resources/lang/en/dashboard.php +++ b/resources/lang/en/dashboard.php @@ -140,11 +140,13 @@ return [ ], // Subscribers 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'add' => [ + 'subscribers' => 'Subscribers', + 'description' => 'Subscribers will receive email updates when incidents are created.', + 'verified' => 'Verified', + 'not_verified' => 'Not verified', + 'subscriber' => ':email, subscribed :date', + 'no_subscriptions' => 'Subscribed to all updates', + 'add' => [ 'title' => 'Add a new subscriber', 'success' => 'Subscriber has been added!', 'failure' => 'Something went wrong with the component.', diff --git a/resources/views/dashboard/subscribers/index.blade.php b/resources/views/dashboard/subscribers/index.blade.php index b7b0fd0e..6f27d41b 100644 --- a/resources/views/dashboard/subscribers/index.blade.php +++ b/resources/views/dashboard/subscribers/index.blade.php @@ -18,30 +18,36 @@
-

{{ trans('dashboard.subscribers.description') }}

+

{{ trans('dashboard.subscribers.description') }}

-
- @foreach($subscribers as $subscriber) -
-
-

{{ $subscriber->email }}

+
+ @foreach($subscribers as $subscriber) +
+
+

{{ trans('dashboard.subscribers.subscriber', ['email' => $subscriber->email, 'date' => $subscriber->subscribed_at]) }}

+
+
+ @if(is_null($subscriber->getOriginal('verified_at'))) + {{ trans('dashboard.subscribers.not_verified') }} + @else + {{ trans('dashboard.subscribers.verified') }} + @endif +
+
+ @if($subscriber->subscriptions->count() > 0) + {!! $subscriber->subscriptions->map(function ($subscription) { + return ''.$subscription->component->name.''; + })->implode(' ') !!} + @else +

{{ trans('dashboard.subscribers.no_subscriptions') }}

+ @endif +
+ +
+ @endforeach
-
-

{{ $subscriber->created_at }}

-
-
- @if(is_null($subscriber->getOriginal('verified_at'))) - {{ trans('dashboard.subscribers.not_verified') }} - @else - {{ trans('dashboard.subscribers.verified') }} - @endif -
- -
- @endforeach -