1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-08 12:12:48 +01:00

Enable looking up email status

This commit is contained in:
Hillel Coren 2018-02-25 10:47:15 +02:00
parent 041c89b4f8
commit 8d7eb709be
6 changed files with 88 additions and 3 deletions

View File

@ -273,4 +273,42 @@ class ClientController extends BaseController
return view('clients.statement', $data);
}
public function getEmailHistory()
{
$str = '';
if (config('services.postmark')) {
$email = request()->email;
$account = auth()->user()->account;
$postmark = new \Postmark\PostmarkClient(config('services.postmark'));
$response = $postmark->getOutboundMessages(5, 0, $email, null, $account->account_key);
foreach ($response['messages'] as $message) {
$details = $postmark->getOutboundMessageDetails($message['MessageID']);
$str .= sprintf('<b>%s</b><br/>', $details['subject']);
if (count($details['messageevents'])) {
$event = $details['messageevents'][0];
$str .= sprintf('%s | %s<br/>', $event['Type'], $account->getDateTime($event['ReceivedAt'], true));
if ($message = $event['Details']['DeliveryMessage']) {
$str .= sprintf('<span class="text-muted">%s</span><br/>', $message);
}
if ($server = $event['Details']['DestinationServer']) {
$str .= sprintf('<span class="text-muted">%s</span><br/>', $server);
}
} else {
$str .= trans('texts.processing') . '...';
}
$str .= '<p/>';
}
}
if (! $str) {
$str = trans('texts.no_messages_found');
}
return $str;
}
}

View File

@ -624,12 +624,12 @@ class Account extends Eloquent
*
* @return DateTime|null|string
*/
public function getDateTime($date = 'now')
public function getDateTime($date = 'now', $formatted = false)
{
$date = $this->getDate($date);
$date->setTimeZone(new \DateTimeZone($this->getTimezone()));
return $date;
return $formatted ? $date->format($this->getCustomDateTimeFormat()) : $date;
}
/**

View File

@ -154,6 +154,10 @@ class Mailer
$message['Bcc'] = $data['bccEmail'];
}
if (! empty($data['account'])) {
$message['Tag'] = $data['account']->account_key;
}
$response = $client->sendEmailBatch([$message]);
if ($messageId = $response[0]->messageid) {
return $this->handleSuccess($data, $messageId);

View File

@ -2746,6 +2746,10 @@ $LANG = array(
'test' => 'Test',
'beta' => 'Beta',
'gmp_required' => 'Exporting to ZIP requires the GMP extension',
'email_history' => 'Email History',
'loading' => 'Loading',
'no_messages_found' => 'No messages found',
'processing' => 'Processing',
);

View File

@ -170,7 +170,13 @@
<b>{{ $contact->first_name.' '.$contact->last_name }}</b><br/>
@endif
@if ($contact->email)
<i class="fa fa-envelope" style="width: 20px"></i>{!! HTML::mailto($contact->email, $contact->email) !!}<br/>
<i class="fa fa-envelope" style="width: 20px"></i>{!! HTML::mailto($contact->email, $contact->email) !!}
@if (config('services.postmark'))
| <a href="#" onclick="showEmailHistory('{{ $contact->email }}')">
{{ trans('texts.history') }}
</a>
@endif
<br/>
@endif
@if ($contact->phone)
<i class="fa fa-phone" style="width: 20px"></i>{{ $contact->phone }}<br/>
@ -313,6 +319,30 @@
</div>
<div class="modal fade" id="emailHistoryModal" tabindex="-1" role="dialog" aria-labelledby="emailHistoryModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title" id="myModalLabel">{{ trans('texts.email_history') }}</h4>
</div>
<div class="container" style="width: 100%; padding-bottom: 0px !important">
<div class="panel panel-default">
<div class="panel-body">
</div>
</div>
</div>
<div class="modal-footer" id="signUpFooter" style="margin-top: 0px">
<button type="button" class="btn btn-default" data-dismiss="modal">{{ trans('texts.close') }} </button>
</div>
</div>
</div>
</div>
<script type="text/javascript">
var loadedTabs = {};
@ -366,6 +396,14 @@
});
}
function showEmailHistory(email) {
$('#emailHistoryModal .panel-body').html("{{ trans('texts.loading') }}...");
$('#emailHistoryModal').modal('show');
$.post('{{ url('/email_history') }}', {email: email}, function(data) {
$('#emailHistoryModal .panel-body').html(data);
})
}
@if ($client->showMap())
function initialize() {
var mapCanvas = document.getElementById('map');

View File

@ -141,6 +141,7 @@ Route::group(['middleware' => ['lookup:user', 'auth:user']], function () {
Route::get('settings/enable_two_factor', 'TwoFactorController@setupTwoFactor');
Route::post('settings/enable_two_factor', 'TwoFactorController@enableTwoFactor');
Route::post('email_history', 'ClientController@getEmailHistory');
Route::resource('clients', 'ClientController');
Route::get('api/clients', 'ClientController@getDatatable');
Route::get('api/activities/{client_id?}', 'ActivityController@getDatatable');