|
|
@@ -65,7 +65,7 @@ class MediaService
|
|
|
|
|
|
public function getPendingProfileMedia(int $page = 1, int $perPage = 10): LengthAwarePaginator
|
|
|
{
|
|
|
- return Media::query()
|
|
|
+ $paginated = Media::query()
|
|
|
->where(function ($query) {
|
|
|
$query->where(function ($query) {
|
|
|
$query->where('media.source', 'provider')
|
|
|
@@ -92,6 +92,37 @@ class MediaService
|
|
|
})
|
|
|
->orderBy('media.created_at')
|
|
|
->paginate($perPage, ['media.*'], 'page', $page);
|
|
|
+
|
|
|
+ $media = $paginated->getCollection();
|
|
|
+ $providerIds = $media->where('source', 'provider')->pluck('source_id');
|
|
|
+ $clientIds = $media->where('source', 'client')->pluck('source_id');
|
|
|
+
|
|
|
+ $providers = $providerIds->isEmpty()
|
|
|
+ ? collect()
|
|
|
+ : Provider::query()
|
|
|
+ ->with('user:id,name,email')
|
|
|
+ ->whereIn('id', $providerIds)
|
|
|
+ ->get()
|
|
|
+ ->keyBy('id');
|
|
|
+
|
|
|
+ $clients = $clientIds->isEmpty()
|
|
|
+ ? collect()
|
|
|
+ : Client::query()
|
|
|
+ ->with('user:id,name,email')
|
|
|
+ ->whereIn('id', $clientIds)
|
|
|
+ ->get()
|
|
|
+ ->keyBy('id');
|
|
|
+
|
|
|
+ $media->each(function (Media $item) use ($clients, $providers) {
|
|
|
+ $profile = match ($item->source) {
|
|
|
+ 'client' => $clients->get($item->source_id),
|
|
|
+ 'provider' => $providers->get($item->source_id),
|
|
|
+ };
|
|
|
+
|
|
|
+ $item->setRelation('user', $profile?->user);
|
|
|
+ });
|
|
|
+
|
|
|
+ return $paginated;
|
|
|
}
|
|
|
|
|
|
public function approveProfileMedia(string $source, int $sourceId): Media
|