|
|
@@ -9,9 +9,27 @@ class ClientProviderBlockService
|
|
|
{
|
|
|
public function getByClientId(int $clientId)
|
|
|
{
|
|
|
- return ClientProviderBlock::with(['provider.user'])
|
|
|
- ->where('client_id', $clientId)
|
|
|
- ->orderBy('created_at', 'desc')
|
|
|
+ return ClientProviderBlock::where('client_provider_blocks.client_id', $clientId)
|
|
|
+ ->leftJoin('providers', 'providers.id', '=', 'client_provider_blocks.provider_id')
|
|
|
+ ->leftJoin('users as provider_user', 'provider_user.id', '=', 'providers.user_id')
|
|
|
+ ->leftJoin('addresses as provider_address', function ($join) {
|
|
|
+ $join->on('provider_address.source_id', '=', 'providers.id')
|
|
|
+ ->where('provider_address.source', 'provider')
|
|
|
+ ->whereNull('provider_address.deleted_at');
|
|
|
+ })
|
|
|
+ ->select(
|
|
|
+ 'client_provider_blocks.id',
|
|
|
+ 'client_provider_blocks.client_id',
|
|
|
+ 'client_provider_blocks.provider_id',
|
|
|
+ 'client_provider_blocks.created_at',
|
|
|
+ 'client_provider_blocks.updated_at',
|
|
|
+ 'provider_user.name as provider_name',
|
|
|
+ 'provider_user.email as provider_email',
|
|
|
+ 'provider_user.phone as provider_phone',
|
|
|
+ 'providers.average_rating as provider_rating',
|
|
|
+ 'provider_address.district as provider_district',
|
|
|
+ )
|
|
|
+ ->orderBy('client_provider_blocks.created_at', 'desc')
|
|
|
->get();
|
|
|
}
|
|
|
|