$emailContactMethods * @property Collection $contactMethods */ class Carrier extends Model { use SoftDeletes; protected $connection = 'newtrul'; protected $fillable = [ 'dot_number', 'mc_number', 'is_imported', 'legal_name', 'dba_name', 'owned_tractors', 'owned_trailers', 'power_units', 'total_trucks', 'total_trailers', 'contact_email', 'contact_phone', 'contact_cellphone', 'contact_fax', 'physical_address_city', 'physical_address_state_code', 'physical_address_postal_code', 'mailing_address_city', 'mailing_address_state_code', 'mailing_address_postal_code', 'risk_score', 'risk_score_probability', 'carrierok_data', ]; public function inNetwork(Client $client): bool { return ClientCarrier::query()->where('client_id', $client->id) ->where('carrier_id', $this->id) ->where('active', true)->exists(); } public function contactMethods(): HasMany { return $this->hasMany(CarrierContactCommunicationMethod::class, 'carrier_id'); } public function emailContactMethods(): HasMany { return $this->contactMethods()->whereHas('notificationType', function (Builder $query) { $query->where('handle', NotificationType::EMAIL->value); })->whereNotNull('value'); } public function users(): BelongsToMany { return $this->belongsToMany(User::class)->using(CarrierUser::class); } public function preferredLanes(): BelongsToMany { return $this->belongsToMany(ClientCarrierPreferredLane::class, 'carrier_id', 'id'); } public function clientCarriers(): HasMany { return $this->hasMany(ClientCarrier::class); } public function availableTrucks() { return $this->hasMany(ClientCarrierAvailableTrucks::class, 'carrier_id') ->whereHas('clientCarrier', function ($query) { $query->where('client_id', auth()->user()->client_id); }); } public function tasks(): HasMany { return $this->hasMany(CarrierTask::class); } public function activities(): HasMany { return $this->hasMany(CarrierActivity::class); } }