full_name = trim(($lead->first_name ?? '') . ' ' . ($lead->last_name ?? '')); }); static::saved(function (Lead $lead) { $leadEmailService = App::make(LeadEmailService::class); $leadEmailService->manageLeadEmail($lead); }); } /** * Validation rules * * @var array */ public static $rules = [ ]; protected static $logAttributes = [ 'first_name', 'last_name', 'full_name', 'email', 'fax', 'annual_revenue', 'website', 'no_of_employees', 'skype', 'company_name', 'connection_status', 'job_title', 'phone', 'mobile', 'secondary_email', 'twitter', 'facebook', 'description', 'addr_street', 'addr_state', 'addrCountry.name', 'addr_city', 'addr_zip', 'ownedBy.name', 'leadStatus.name', 'leadSource.name', 'leadIndustry.name', 'leadRating.name', 'capture_date', 'birth_date' ]; public $table = 'leads'; public $fillable = [ 'first_name', 'nick_name', 'last_name', 'full_name', 'email', 'fax', 'annual_revenue', 'website', 'no_of_employees', 'skype', 'company_name', 'connection_status', 'job_title', 'phone', 'mobile', 'secondary_email', 'twitter', 'facebook', 'description', 'addr_street', 'addr_state', 'addr_country', 'addr_city', 'addr_zip', 'lead_status_id', 'lead_source_id', 'lead_industry_id', 'lead_rating_id', 'lead_company', 'capture_date', 'birth_date', 'referral_id', 'language_id', 'addr_country_id', 'company_id', 'created_by', 'custom_fields', 'owned_by_type', 'owned_by_id', ]; protected $mustBeApproved = false; protected $dates = ['deleted_at', 'created_at', 'updated_at', 'capture_date', 'birth_date']; /** * The attributes that should be casted to native types. * * @var array */ protected $casts = [ 'id' => 'integer', 'name' => 'string', 'custom_fields' => 'array', ]; /** * @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\HasMany */ public function calls() { return $this->hasMany(Call::class); } /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function callLogs() { return $this->hasMany(CallLog::class); } public function contactRequests() { return $this->hasMany(ContactRequest::class); } public function tickets() { return $this->hasMany(Ticket::class); } /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function leadEmails() { return $this->hasMany(LeadEmail::class); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function leadStatus() { return $this->belongsTo(LeadStatus::class); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function addrCountry() { return $this->belongsTo(Country::class); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function leadSource() { return $this->belongsTo(LeadSource::class); } public function referral() { return $this->belongsTo(Lead::class); } public function language() { return $this->belongsTo(CustomerLanguage::class); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function leadIndustry() { return $this->belongsTo(LeadIndustry::class); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function leadRating() { return $this->belongsTo(LeadRating::class); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany */ public function documents() { return $this->belongsToMany(Document::class)->withTimestamps(); } public function events() { return $this->hasMany(Event::class); } public function sms() { return $this->hasMany(Sms::class); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany */ public function products() { return $this->belongsToMany(Product::class); } /** * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany */ public function campaigns() { return $this->belongsToMany(Campaign::class); } public function company() { return $this->belongsTo(Company::class); } public function setPhoneAttribute($value) { $this->attributes['phone'] = preg_replace('/\s+/', '', $value); } public function setMobileAttribute($value) { $this->attributes['mobile'] = preg_replace('/\s+/', '', $value); } public function multiSelects() { return $this->belongsToMany(LeadMultiSelect::class, 'lead_multi_select', 'lead_id', 'multi_select_id')->withTimestamps(); } public function setCaptureDateAttribute($value) { \Log::info('Setting capture_date attribute with value: ' . $value); $this->attributes['capture_date'] = empty($value) ? null : \Carbon\Carbon::parse($value, 'UTC') ->setTimezone(config('app.timezone')) ->format('Y-m-d H:i:s'); } }