@extends('layouts.public')
@section('title', $seller->display_name)
@section('meta_description', $seller->headline ?: __('Properties listed by :name', ['name' => $seller->display_name]))
@push('head')
@php
// Built in PHP rather than with @json: Blade treats an @-prefixed key
// inside a directive as a directive of its own, which silently mangles
// the document.
$schema = [
'@context' => 'https://schema.org',
'@type' => 'RealEstateAgent',
'name' => $seller->display_name,
'url' => route('sellers.show', $seller->slug),
'description' => $seller->headline ?: null,
'image' => $seller->logo ? image_url($seller->logo) : null,
'telephone' => $seller->contactPhone() ?: null,
'email' => $seller->contactEmail() ?: null,
'address' => array_filter([
'@type' => 'PostalAddress',
'addressLocality' => $seller->city ?: null,
'addressRegion' => $seller->district ?: null,
'addressCountry' => 'NP',
]),
// Only real, published reviews are declared. A rating nobody left is
// a rating that gets a site penalised, and rightly.
'aggregateRating' => $seller->rating_count > 0 ? [
'@type' => 'AggregateRating',
'ratingValue' => (string) $seller->rating_average,
'reviewCount' => (string) $seller->rating_count,
] : null,
];
@endphp
@endpush
@section('content')
{{-- The header answers the question a buyer is really asking: who is this,
and has anyone checked them. --}}
@if ($seller->cover_image)
@endif
@if ($seller->logo)
 }})
@else
! $seller->cover_image,
])>{{ $seller->displayInitials() }}
@endif
{{ $seller->type->label() }}
@if ($seller->isVerified())
{{ __('Verified') }}
@endif
@if ($seller->rating_count > 0)
{{ number_format($seller->rating_average, 1) }}
{{ trans_choice('/5 from one review|/5 from :count reviews', $seller->rating_count, ['count' => $seller->rating_count]) }}
@endif
$seller->cover_image,
'text-text' => ! $seller->cover_image,
])>{{ $seller->display_name }}
@if ($seller->headline)
$seller->cover_image,
'text-text-secondary' => ! $seller->cover_image,
])>{{ $seller->headline }}
@endif
@if ($seller->bio)
{{ __('About') }}
{{ $seller->bio }}
@endif
{{ trans_choice('One property|:count properties', $listings->total(), ['count' => $listings->total()]) }}
@if ($listings->isEmpty())
@else
@foreach ($listings as $listing)
@include('public.partials.listing-card', [
'listing' => $listing,
'favouritedIds' => $favouritedIds,
])
@endforeach
{{ $listings->links() }}
@endif
{{-- Reviews sit below the listings: a buyer looks at what is for sale
first and at who is selling it second. Only published reviews
appear — the rest exist for moderation, not for reading. --}}
{{ __('Reviews') }}
@if ($seller->rating_count > 0)
{{ number_format($seller->rating_average, 1) }}
{{ trans_choice('out of 5, from one review|out of 5, from :count reviews', $seller->rating_count, ['count' => $seller->rating_count]) }}
@endif
@if ($reviews->isEmpty())
@else
@foreach ($reviews as $review)
{{ str_repeat('★', $review->rating) }}{{ str_repeat('☆', 5 - $review->rating) }}
@if ($review->title)
{{ $review->title }}
@endif
{{ $review->author?->name ?? __('A buyer') }}
· {{ $review->created_at->format('j M Y') }}
@if ($review->isVerifiedDealing())
· {{ __('Verified dealing') }}
@endif
{{ $review->body }}
@if ($review->hasReply())
{{ __('Reply from :name', ['name' => $seller->display_name]) }}
{{ $review->reply }}
@endif
@endforeach
@endif
@endsection