2015-03-18 00:39:03 +01:00
|
|
|
<?php namespace App\Models;
|
2015-03-16 22:45:25 +01:00
|
|
|
|
2015-09-17 21:01:06 +02:00
|
|
|
use Utils;
|
2015-10-28 20:22:07 +01:00
|
|
|
use Carbon;
|
2015-03-31 11:38:24 +02:00
|
|
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
|
|
|
|
2015-03-16 22:45:25 +01:00
|
|
|
class Invitation extends EntityModel
|
|
|
|
{
|
2015-03-31 11:38:24 +02:00
|
|
|
use SoftDeletes;
|
|
|
|
protected $dates = ['deleted_at'];
|
|
|
|
|
2015-03-16 22:45:25 +01:00
|
|
|
public function invoice()
|
|
|
|
{
|
2015-04-16 21:57:12 +02:00
|
|
|
return $this->belongsTo('App\Models\Invoice')->withTrashed();
|
2015-03-16 22:45:25 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
public function contact()
|
|
|
|
{
|
2015-03-31 11:38:24 +02:00
|
|
|
return $this->belongsTo('App\Models\Contact')->withTrashed();
|
2015-03-16 22:45:25 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
public function user()
|
|
|
|
{
|
2015-03-23 07:52:01 +01:00
|
|
|
return $this->belongsTo('App\Models\User')->withTrashed();
|
2015-03-16 22:45:25 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
public function account()
|
|
|
|
{
|
2015-03-31 11:38:24 +02:00
|
|
|
return $this->belongsTo('App\Models\Account');
|
2015-03-16 22:45:25 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
public function getLink()
|
|
|
|
{
|
2015-07-02 22:21:29 +02:00
|
|
|
if (!$this->account) {
|
|
|
|
$this->load('account');
|
|
|
|
}
|
2015-09-10 19:50:09 +02:00
|
|
|
|
2015-04-28 22:13:52 +02:00
|
|
|
$url = SITE_URL;
|
2015-09-10 19:50:09 +02:00
|
|
|
$iframe_url = $this->account->iframe_url;
|
2015-10-13 09:11:44 +02:00
|
|
|
|
|
|
|
if ($this->account->isPro()) {
|
|
|
|
if ($iframe_url) {
|
|
|
|
return "{$iframe_url}/?{$this->invitation_key}";
|
|
|
|
} elseif ($this->account->subdomain) {
|
|
|
|
$url = Utils::replaceSubdomain($url, $this->account->subdomain);
|
|
|
|
}
|
2015-04-28 22:13:52 +02:00
|
|
|
}
|
2015-10-13 09:11:44 +02:00
|
|
|
|
2015-04-28 22:13:52 +02:00
|
|
|
return "{$url}/view/{$this->invitation_key}";
|
2015-03-16 22:45:25 +01:00
|
|
|
}
|
2015-07-02 22:21:29 +02:00
|
|
|
|
2015-10-11 16:41:09 +02:00
|
|
|
public function getStatus()
|
|
|
|
{
|
|
|
|
$hasValue = false;
|
|
|
|
$parts = [];
|
|
|
|
$statuses = $this->message_id ? ['sent', 'opened', 'viewed'] : ['sent', 'viewed'];
|
|
|
|
|
|
|
|
foreach ($statuses as $status) {
|
|
|
|
$field = "{$status}_date";
|
|
|
|
$date = '';
|
2015-10-18 12:37:04 +02:00
|
|
|
if ($this->$field && $this->field != '0000-00-00 00:00:00') {
|
2015-10-11 16:41:09 +02:00
|
|
|
$date = Utils::dateToString($this->$field);
|
|
|
|
$hasValue = true;
|
|
|
|
}
|
|
|
|
$parts[] = trans('texts.invitation_status.' . $status) . ': ' . $date;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $hasValue ? implode($parts, '<br/>') : false;
|
|
|
|
}
|
|
|
|
|
2015-07-02 22:21:29 +02:00
|
|
|
public function getName()
|
|
|
|
{
|
|
|
|
return $this->invitation_key;
|
|
|
|
}
|
2015-10-11 16:41:09 +02:00
|
|
|
|
2015-10-29 15:42:05 +01:00
|
|
|
public function markSent($messageId = null)
|
|
|
|
{
|
|
|
|
$this->message_id = $messageId;
|
|
|
|
$this->email_error = null;
|
|
|
|
$this->sent_date = Carbon::now()->toDateTimeString();
|
|
|
|
$this->save();
|
|
|
|
}
|
|
|
|
|
2015-10-28 20:22:07 +01:00
|
|
|
public function markViewed()
|
|
|
|
{
|
|
|
|
$invoice = $this->invoice;
|
|
|
|
$client = $invoice->client;
|
|
|
|
|
|
|
|
$this->viewed_date = Carbon::now()->toDateTimeString();
|
|
|
|
$this->save();
|
|
|
|
|
|
|
|
$invoice->markViewed();
|
|
|
|
$client->markLoggedIn();
|
|
|
|
}
|
2015-03-16 22:45:25 +01:00
|
|
|
}
|