mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-11-03 20:47:33 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			171 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			171 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php namespace App\Models;
 | 
						|
 | 
						|
use DB;
 | 
						|
 | 
						|
use Illuminate\Database\Eloquent\SoftDeletes;
 | 
						|
 | 
						|
class Client extends EntityModel
 | 
						|
{
 | 
						|
    use SoftDeletes;
 | 
						|
    protected $dates = ['deleted_at'];
 | 
						|
 | 
						|
    public static $fieldName = 'Client - Name';
 | 
						|
    public static $fieldPhone = 'Client - Phone';
 | 
						|
    public static $fieldAddress1 = 'Client - Street';
 | 
						|
    public static $fieldAddress2 = 'Client - Apt/Floor';
 | 
						|
    public static $fieldCity = 'Client - City';
 | 
						|
    public static $fieldState = 'Client - State';
 | 
						|
    public static $fieldPostalCode = 'Client - Postal Code';
 | 
						|
    public static $fieldNotes = 'Client - Notes';
 | 
						|
    public static $fieldCountry = 'Client - Country';
 | 
						|
 | 
						|
    public function account()
 | 
						|
    {
 | 
						|
        return $this->belongsTo('App\Models\Account');
 | 
						|
    }
 | 
						|
 | 
						|
    public function invoices()
 | 
						|
    {
 | 
						|
        return $this->hasMany('App\Models\Invoice');
 | 
						|
    }
 | 
						|
 | 
						|
    public function payments()
 | 
						|
    {
 | 
						|
        return $this->hasMany('App\Models\Payment');
 | 
						|
    }
 | 
						|
 | 
						|
    public function contacts()
 | 
						|
    {
 | 
						|
        return $this->hasMany('App\Models\Contact');
 | 
						|
    }
 | 
						|
 | 
						|
    public function projects()
 | 
						|
    {
 | 
						|
        return $this->hasMany('App\Models\Project');
 | 
						|
    }
 | 
						|
 | 
						|
    public function country()
 | 
						|
    {
 | 
						|
        return $this->belongsTo('App\Models\Country');
 | 
						|
    }
 | 
						|
 | 
						|
    public function currency()
 | 
						|
    {
 | 
						|
        return $this->belongsTo('App\Models\Currency');
 | 
						|
    }
 | 
						|
 | 
						|
    public function size()
 | 
						|
    {
 | 
						|
        return $this->belongsTo('App\Models\Size');
 | 
						|
    }
 | 
						|
 | 
						|
    public function industry()
 | 
						|
    {
 | 
						|
        return $this->belongsTo('App\Models\Industry');
 | 
						|
    }
 | 
						|
 | 
						|
    public function getTotalCredit()
 | 
						|
    {
 | 
						|
        return DB::table('credits')
 | 
						|
                ->where('client_id', '=', $this->id)
 | 
						|
                ->whereNull('deleted_at')
 | 
						|
                ->sum('balance');
 | 
						|
    }
 | 
						|
 | 
						|
    public function getName()
 | 
						|
    {
 | 
						|
        return $this->getDisplayName();
 | 
						|
    }
 | 
						|
 | 
						|
    public function getDisplayName()
 | 
						|
    {
 | 
						|
        if ($this->name) {
 | 
						|
            return $this->name;
 | 
						|
        }
 | 
						|
 | 
						|
        $this->load('contacts');
 | 
						|
        $contact = $this->contacts()->first();
 | 
						|
 | 
						|
        return $contact->getDisplayName();
 | 
						|
    }
 | 
						|
 | 
						|
    public function getEntityType()
 | 
						|
    {
 | 
						|
        return ENTITY_CLIENT;
 | 
						|
    }
 | 
						|
 | 
						|
    public function getWebsite()
 | 
						|
    {
 | 
						|
        if (!$this->website) {
 | 
						|
            return '';
 | 
						|
        }
 | 
						|
 | 
						|
        $link = $this->website;
 | 
						|
        $title = $this->website;
 | 
						|
        $prefix = 'http://';
 | 
						|
 | 
						|
        if (strlen($link) > 7 && substr($link, 0, 7) === $prefix) {
 | 
						|
            $title = substr($title, 7);
 | 
						|
        } else {
 | 
						|
            $link = $prefix.$link;
 | 
						|
        }
 | 
						|
 | 
						|
        return link_to($link, $title, array('target' => '_blank'));
 | 
						|
    }
 | 
						|
 | 
						|
    public function getDateCreated()
 | 
						|
    {
 | 
						|
        if ($this->created_at == '0000-00-00 00:00:00') {
 | 
						|
            return '---';
 | 
						|
        } else {
 | 
						|
            return $this->created_at->format('m/d/y h:i a');
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    public function getGatewayToken()
 | 
						|
    {
 | 
						|
        $this->account->load('account_gateways');
 | 
						|
 | 
						|
        if (!count($this->account->account_gateways)) {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
 | 
						|
        $accountGateway = $this->account->getGatewayConfig(GATEWAY_STRIPE);
 | 
						|
        
 | 
						|
        if (!$accountGateway) {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
 | 
						|
        $token = AccountGatewayToken::where('client_id', '=', $this->id)
 | 
						|
                    ->where('account_gateway_id', '=', $accountGateway->id)->first();
 | 
						|
 | 
						|
        return $token ? $token->token : false;
 | 
						|
    }
 | 
						|
 | 
						|
    public function getGatewayLink()
 | 
						|
    {
 | 
						|
        $token = $this->getGatewayToken();
 | 
						|
        return $token ? "https://dashboard.stripe.com/customers/{$token}" : false;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
/*
 | 
						|
Client::created(function($client)
 | 
						|
{
 | 
						|
    Activity::createClient($client);
 | 
						|
});
 | 
						|
*/
 | 
						|
 | 
						|
Client::updating(function ($client) {
 | 
						|
    Activity::updateClient($client);
 | 
						|
});
 | 
						|
 | 
						|
Client::deleting(function ($client) {
 | 
						|
    Activity::archiveClient($client);
 | 
						|
});
 | 
						|
 | 
						|
/*Client::restoring(function ($client) {
 | 
						|
    Activity::restoreClient($client);
 | 
						|
});
 | 
						|
*/ |