morphToMany(self::getTagClassName(), 'taggable', 'taggables', null, 'tag_id') ->orderBy('order_column'); } const CREATED_AT = 'created_at'; const UPDATED_AT = 'updated_at'; const STATUS_NEW = 'new'; const STATUS_APPROVED = 'approved'; const STATUS_IN_PROGRESS = 'in_progress'; const STATUS_TEST = 'test'; const STATUS_TRASH = 'trash'; public static function boot() { parent::boot(); static::saving(function (Contact $contact) { $fullName = $contact->first_name . ' ' . $contact->last_name; $contact->full_name = $fullName; }); static::saved(function (Contact $contact) { $contactEmailService = App::make(ContactEmailService::class); $contactEmailService->manageContactEmail($contact); }); } /** * Validation rules * * @var array */ public static $rules = [ ]; protected static $logAttributes = [ 'ownedBy.name', 'first_name', 'last_name', 'full_name', 'job_title', 'department', 'contactStatus.name', 'contactSource.name', 'phone', 'mobile', 'email', 'fax', 'assistant_name', 'assistant_phone', 'street', 'city', 'state', 'country.name', 'zip_code', 'notes', 'birth_date' ]; public $table = 'contacts'; public $fillable = [ 'first_name', 'last_name', 'full_name', 'job_title', 'department', 'contact_status_id', 'contact_source_id', 'account_id', 'language_id', 'phone', 'mobile', 'email', 'fax', 'assistant_name', 'assistant_phone', 'street', 'city', 'state', 'country', 'zip_code', 'notes', 'profile_image', 'use_profile_image', 'birth_date', 'referral_id', 'company_id', 'created_by', 'force_assigned', 'custom_fields' ]; protected $casts = [ 'custom_fields' => 'array', ]; protected $mustBeApproved = false; protected $dates = ['deleted_at', 'created_at', 'updated_at', 'birth_date']; /** * @param Model $model * @param string $attribute * @return array */ protected static function getRelatedModelAttributeValue(Model $model, string $attribute): array { return ActivityLogHelper::getRelatedModelAttributeValue($model, $attribute); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function contactStatus() { return $this->belongsTo(ContactStatus::class); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function language() { return $this->belongsTo(CustomerLanguage::class); } public function referral() { return $this->belongsTo(Contact::class); } /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function calls() { return $this->hasMany(Call::class); } public function country() { return $this->belongsTo(Country::class); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function contactSource() { return $this->belongsTo(ContactSource::class); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany */ public function campaigns() { return $this->belongsToMany(Campaign::class); } public function deals() { return $this->belongsToMany(Deal::class); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany */ public function tickets() { return $this->hasMany(Ticket::class); } /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function contactEmails() { return $this->hasMany(ContactEmail::class); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany */ public function products() { return $this->belongsToMany(Product::class); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany */ public function documents() { return $this->belongsToMany(Document::class); } /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function assets() { return $this->hasMany(Asset::class); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function account() { return $this->belongsTo(Account::class); } /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function quotes() { return $this->hasMany(Quote::class); } /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function invoices() { return $this->hasMany(Invoice::class); } public function events() { return $this->hasMany(Event::class); } /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function orders() { return $this->hasMany(Order::class); } public function sms() { return $this->hasMany(Sms::class); } public function company() { return $this->belongsTo(Company::class); } }