Support filtering email notifications

This commit is contained in:
Hillel Coren 2018-05-14 20:08:32 +03:00
parent 96666a3af8
commit a70d4bc805
5 changed files with 45 additions and 8 deletions

View File

@ -1092,6 +1092,7 @@ class AccountController extends BaseController
$user->notify_viewed = Input::get('notify_viewed');
$user->notify_paid = Input::get('notify_paid');
$user->notify_approved = Input::get('notify_approved');
$user->only_notify_owned = Input::get('only_notify_owned');
$user->slack_webhook_url = Input::get('slack_webhook_url');
$user->save();
@ -1235,6 +1236,7 @@ class AccountController extends BaseController
$user->notify_viewed = Input::get('notify_viewed');
$user->notify_paid = Input::get('notify_paid');
$user->notify_approved = Input::get('notify_approved');
$user->only_notify_owned = Input::get('only_notify_owned');
}
if ($user->google_2fa_secret && ! Input::get('enable_two_factor')) {

View File

@ -478,6 +478,28 @@ class User extends Authenticatable
return $this;
}
public function ownsEntity($entity)
{
return $entity->user_id == $this->id;
}
public function shouldNotify($invoice)
{
if (! $this->email || ! $this->confirmed) {
return false;
}
if ($this->cannot('view', $invoice)) {
return false;
}
if ($this->only_notify_owned && ! $this->ownsEntity($invoice)) {
return false;
}
return true;
}
}
User::created(function ($user)

View File

@ -76,7 +76,7 @@ class UserMailer extends Mailer
Payment $payment = null,
$notes = false
) {
if (! $user->email || $user->cannot('view', $invoice)) {
if (! $user->shouldNotify($invoice)) {
return;
}

View File

@ -2844,6 +2844,9 @@ $LANG = array(
'show_aging' => 'Show Aging',
'reference' => 'Reference',
'amount_paid' => 'Amount Paid',
'send_notifications_for' => 'Send Notifications For',
'all_invoices' => 'All Invoices',
'my_invoices' => 'My Invoices',
);

View File

@ -2,15 +2,25 @@
{{ Former::populateField('notify_viewed', intval(Auth::user()->notify_viewed)) }}
{{ Former::populateField('notify_paid', intval(Auth::user()->notify_paid)) }}
{{ Former::populateField('notify_approved', intval(Auth::user()->notify_approved)) }}
{{ Former::populateField('only_notify_owned', intval(Auth::user()->only_notify_owned)) }}
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">{!! trans('texts.email_notifications') !!}</h3>
</div>
<div class="panel-heading">
<h3 class="panel-title">{!! trans('texts.email_notifications') !!}</h3>
</div>
<div class="panel-body">
{!! Former::checkbox('notify_sent')->label('&nbsp;')->text(trans('texts.email_sent'))->value(1) !!}
{!! Former::checkbox('notify_viewed')->label('&nbsp;')->text(trans('texts.email_viewed'))->value(1) !!}
{!! Former::checkbox('notify_paid')->label('&nbsp;')->text(trans('texts.email_paid'))->value(1) !!}
{!! Former::checkbox('notify_approved')->label('&nbsp;')->text(trans('texts.email_approved'))->value(1) !!}
{!! Former::checkbox('notify_sent')->label('&nbsp;')->text(trans('texts.email_sent'))->value(1) !!}
{!! Former::checkbox('notify_viewed')->label('&nbsp;')->text(trans('texts.email_viewed'))->value(1) !!}
{!! Former::checkbox('notify_paid')->label('&nbsp;')->text(trans('texts.email_paid'))->value(1) !!}
{!! Former::checkbox('notify_approved')->label('&nbsp;')->text(trans('texts.email_approved'))->value(1) !!}
@if (true || Auth()->user()->account->users->count() > 1)
<br/>
{!! Former::radios('only_notify_owned')->radios([
trans('texts.all_invoices') => array('name' => 'only_notify_owned', 'value' => 0),
trans('texts.my_invoices') => array('name' => 'only_notify_owned', 'value' => 1),
])->inline()
->label('send_notifications_for') !!}
@endif
</div>
</div>