* * @version 1.0.0 */ class SimCard extends Model { protected $fillable = [ 'iccid', 'msisdn', 'status', ]; protected $casts = [ 'status' => SimCardStatus::class, ]; // Relación con la tabla pivote public function packSims() { return $this->hasMany(PackSim::class, 'sim_card_id'); } // Relación muchos a muchos con paquetes public function packages() { return $this->belongsToMany( Packages::class, 'pack_sims', 'sim_card_id', 'package_id' )->withPivot('activated_at', 'deactivated_at', 'is_active') ->withTimestamps(); } // Paquete actualmente activo public function activePackage() { return $this->belongsToMany( Packages::class, 'pack_sims', 'sim_card_id', 'package_id' )->wherePivot('is_active', true) ->withPivot('activated_at', 'deactivated_at', 'is_active') ->withTimestamps() ->limit(1); } public function clientSims() { return $this->hasMany(ClientSim::class, 'sim_card_id'); } public function activeClient() { return $this->belongsToMany( Client::class, 'client_sims', 'sim_card_id', 'client_id' )->wherePivot('is_active', true) ->withPivot('assigned_at', 'released_at', 'is_active') ->withTimestamps() ->limit(1); } }