MediaType::class, 'classification' => MediaClassification::class, 'status' => VerificationStatus::class, ]; } #[Scope] protected function pending(Builder $query): void { $query->where('status', VerificationStatus::PENDING); } #[Scope] protected function approved(Builder $query): void { $query->where('status', VerificationStatus::APPROVED); } #[Scope] protected function needRevision(Builder $query): void { $query->where('status', VerificationStatus::NEED_REVISION); } #[Scope] protected function rejected(Builder $query): void { $query->where('status', VerificationStatus::REJECTED); } #[Scope] protected function verified(Builder $query): void { $query->whereHas('company.verificationRequest', function ($q) { $q->approved(); }); } #[Scope] protected function wherePivotAccepted(Builder $query): void { $query->where('cooperation_media.status', ApprovalStatus::ACCEPTED); } #[Scope] protected function wherePivotRejected(Builder $query): void { $query->where('cooperation_media.status', ApprovalStatus::REJECTED); } #[Scope] protected function wherePivotPending(Builder $query): void { $query->where('cooperation_media.status', ApprovalStatus::PENDING); } public function company(): BelongsTo { return $this->belongsTo(Company::class); } public function journalists(): HasMany { return $this->hasMany(Journalist::class); } public function announcements(): BelongsToMany { return $this->belongsToMany(Announcement::class, 'announcement_media'); } public function cooperationProposals(): HasMany { return $this->hasMany(CooperationProposal::class); } public function taskAssignments(): BelongsToMany { return $this->belongsToMany(TaskAssignment::class, 'task_assignment_media') ->withPivot(['status']) ->withTimestamps(); } public function cooperations(): BelongsToMany { return $this->belongsToMany(Cooperation::class, 'cooperation_media') ->withPivot(['status']) ->withTimestamps(); } public function cooperationMedias(): HasMany { return $this->hasMany(CooperationMedia::class); } }