1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-08 20:22:42 +01:00
invoiceninja/app/Models/Invitation.php
2015-10-28 21:22:07 +02:00

88 lines
2.1 KiB
PHP

<?php namespace App\Models;
use Utils;
use Carbon;
use Illuminate\Database\Eloquent\SoftDeletes;
class Invitation extends EntityModel
{
use SoftDeletes;
protected $dates = ['deleted_at'];
public function invoice()
{
return $this->belongsTo('App\Models\Invoice')->withTrashed();
}
public function contact()
{
return $this->belongsTo('App\Models\Contact')->withTrashed();
}
public function user()
{
return $this->belongsTo('App\Models\User')->withTrashed();
}
public function account()
{
return $this->belongsTo('App\Models\Account');
}
public function getLink()
{
if (!$this->account) {
$this->load('account');
}
$url = SITE_URL;
$iframe_url = $this->account->iframe_url;
if ($this->account->isPro()) {
if ($iframe_url) {
return "{$iframe_url}/?{$this->invitation_key}";
} elseif ($this->account->subdomain) {
$url = Utils::replaceSubdomain($url, $this->account->subdomain);
}
}
return "{$url}/view/{$this->invitation_key}";
}
public function getStatus()
{
$hasValue = false;
$parts = [];
$statuses = $this->message_id ? ['sent', 'opened', 'viewed'] : ['sent', 'viewed'];
foreach ($statuses as $status) {
$field = "{$status}_date";
$date = '';
if ($this->$field && $this->field != '0000-00-00 00:00:00') {
$date = Utils::dateToString($this->$field);
$hasValue = true;
}
$parts[] = trans('texts.invitation_status.' . $status) . ': ' . $date;
}
return $hasValue ? implode($parts, '<br/>') : false;
}
public function getName()
{
return $this->invitation_key;
}
public function markViewed()
{
$invoice = $this->invoice;
$client = $invoice->client;
$this->viewed_date = Carbon::now()->toDateTimeString();
$this->save();
$invoice->markViewed();
$client->markLoggedIn();
}
}