@extends('admin.layouts.app') @section('panel') @include('admin.partials.flash-messages')
Total Execuções

{{ $stats["total_runs"] }}

Sucesso

{{ $stats["success"] }}

Pendente

{{ $stats["pending"] }}

Falhas

{{ $stats["failed"] }}

Execuções Recentes
@forelse($recentRuns as $run) @empty @endforelse
Listagem Status Dados Data Ação
{{ $run->listing->title }} isPending() ? "warning" : "danger") }}">{{ ucfirst($run->status) }} {{ $run->extractedData->count() }} itens {{ $run->created_at->diffForHumans() }}
Nenhuma execução
@endsection @extends("admin.layouts.app") @section("panel") @include("admin.partials.flash-messages")
🤖 Apify - Listagens
@forelse($listings as $listing) @php $lastRun = $listing->apifyRuns->sortByDesc('created_at')->first(); @endphp @empty @endforelse
Listagem Execuções Última Exec. Status Ação
{{ $listing->title }} {{ $listing->apifyRuns->count() }} {{ $lastRun?->created_at?->diffForHumans() ?? "-" }} status === "pending" ? "warning" : "danger") }}">{{ ucfirst($lastRun?->status ?? "none") }}
@csrf
Nenhuma listagem
@if($listings->hasPages()) @endif
@endsection @extends("admin.layouts.app") @section("panel") @include("admin.partials.flash-messages")
📝 Histórico de Execuções
@forelse($runs as $run) @empty @endforelse
Listagem Status Dados Extraídos Duração Data Ação
{{ $run->listing->title }} isPending() ? "warning" : "danger") }}">{{ ucfirst($run->status) }} {{ $run->extractedData->count() }} @if($run->finished_at && $run->started_at) {{ $run->finished_at->diffInSeconds($run->started_at) }}s @else - @endif {{ $run->created_at->format("d/m/Y H:i") }}
Nenhuma execução
@if($runs->hasPages()) @endif
@endsection @extends("admin.layouts.app") @section("panel") @include("admin.partials.flash-messages")
Execução #{{ $run->id }}
Listagem
{{ $run->listing->title }}
Status
{{ ucfirst($run->status) }}
Iniciado
{{ $run->started_at?->format("d/m/Y H:i:s") ?? "-" }}
Finalizado
{{ $run->finished_at?->format("d/m/Y H:i:s") ?? "-" }}
Duração
@if($run->finished_at && $run->started_at) {{ $run->finished_at->diffInSeconds($run->started_at) }}s @else - @endif
@if($run->error_message)
Erro
{{ $run->error_message }}
@endif
📊 Dados Extraídos

{{ $extractedData->count() }} registros

@if($extractedData->isNotEmpty())
Dados Extraídos
@foreach($extractedData as $data)
{{ ucfirst($data->data_type) }}
{{ json_encode($data->data, JSON_PRETTY_PRINT) }}
@endforeach
@endif @endsection @extends('admin.layouts.master') @section('content')
@endsection @extends('admin.layouts.master') @section('content')
@endsection @push('style') @endpush @push('script') @endpush @push('style') @endpush @extends('admin.layouts.master') @section('content')
@endsection @extends('admin.layouts.master') @section('content')
@endsection @extends('admin.layouts.app') @section('panel')
@forelse($categories as $category) @php $category->image_with_path = getImage( getFilePath('category') . '/' . $category->image, getFileSize('category'), ); @endphp @empty @endforelse
@lang('Image') | @lang('Name') @lang('Listings') @lang('Is Featured') @lang('Status') @lang('Action')
{{ __(strLimit($category->name, 15)) }}
{{ getAmount($category->listings_count) }} @if ($category->is_featured == Status::YES) @lang('Yes') @else @lang('No') @endif @php echo $category->statusBadge; @endphp
@if ($category->status == Status::ENABLE) @else @endif @if ($category->is_featured == Status::YES) @else @endif
{{ __($emptyMessage) }}
@if ($categories->hasPages()) @endif
@php $categoryImage = getImage(getFilePath('category'), getFileSize('category')); @endphp @endsection @push('breadcrumb-plugins') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel')
@forelse($cities as $city) @php $city->image_with_path = getImage(getFilePath('city') . '/' . $city->image, getFileSize('city')); @endphp @empty @endforelse
@lang('Name') @lang('Country') @lang('Listings') @lang('Is Featured') @lang('Status') @lang('Action')
{{ __(strLimit($city->name, 10)) }}
@if (@$city->country->name) {{ __(@$city->country->name) }} @else @lang('N/A') @endif {{ getAmount($city->listings_count) }} @if ($city->is_featured == Status::YES) @lang('Yes') @else @lang('No') @endif @php echo $city->statusBadge; @endphp
@if ($city->status == Status::ENABLE) @else @endif @if ($city->is_featured == Status::YES) @else @endif
{{ __($emptyMessage) }}
@if ($cities->hasPages()) @endif
@php $cityImage = getImage(getFilePath('city'), getFileSize('city')); @endphp @endsection @push('breadcrumb-plugins') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel')
@forelse($countries as $country) @empty @endforelse
@lang('Name') @lang('Slug') @lang('Status') @lang('Action')
{{ __($country->name) }} {{ __($country->slug) }} @php echo $country->statusBadge; @endphp
@if ($country->status == Status::ENABLE) @else @endif
{{ __($emptyMessage) }}
@if ($countries->hasPages()) @endif
@endsection @push('breadcrumb-plugins') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel')
@lang('Payments')
{{ showAmount($deposit['total_deposit_amount']) }}

@lang('Total Payments')

{{ $deposit['total_deposit_pending'] }}

@lang('Pending Payments')

{{ $deposit['total_deposit_rejected'] }}

@lang('Rejected Payments')

{{ showAmount($deposit['total_deposit_charge']) }}

@lang('Payments Charge')

@lang('Listings')
{{ $listing['total_approved_listings'] }}

@lang('Approved Listings')

{{ $listing['total_pending_listings'] }}

@lang('Pending Listings')

{{ $listing['total_disabled_listings'] }}

@lang('Disabled Listings')

{{ $listing['total_rejected_listings'] }}

@lang('Rejected Listings')

@lang('Monthly Payment Report') (@lang('Last 12 Month'))
@lang('Login By Browser') (@lang('Last 30 days'))
@lang('Login By OS') (@lang('Last 30 days'))
@lang('Login By Country') (@lang('Last 30 days'))
@endsection @push('script-lib') @endpush @push('style-lib') @endpush @push('script') @endpush @push('style') @endpush @extends('admin.layouts.app') @section('panel')
@lang('Payment Via') @if($deposit->method_code < 5000) {{ __(@$deposit->gateway->name) }} @else @lang('Google Pay') @endif
  • @lang('Date') {{ showDateTime($deposit->created_at) }}
  • @lang('Transaction Number') {{ $deposit->trx }}
  • @lang('Username') @{{ @$deposit->user->username }}
  • @lang('Method') @if($deposit->method_code < 5000) {{ __(@$deposit->gateway->name) }} @else @lang('Google Pay') @endif
  • @lang('Amount') {{ showAmount($deposit->amount) }}
  • @lang('Charge') {{ showAmount($deposit->charge) }}
  • @lang('After Charge') {{ showAmount($deposit->amount+$deposit->charge) }}
  • @lang('Rate') 1 {{__(gs('cur_text'))}} = {{ showAmount($deposit->rate,currencyFormat:false) }} {{__($deposit->baseCurrency())}}
  • @lang('After Rate Conversion') {{ showAmount($deposit->final_amount,currencyFormat:false) }} {{__($deposit->method_currency)}}
  • @lang('Status') @php echo $deposit->statusBadge @endphp
  • @if($deposit->admin_feedback)
  • @lang('Admin Response')

    {{__($deposit->admin_feedback)}}

  • @endif
@if($details || $deposit->status == Status::PAYMENT_PENDING)
@lang('User Payment Information')
@if($details != null) @foreach(json_decode($details) as $val) @if($deposit->method_code >= 1000)
{{__($val->name)}}
@if($val->type == 'checkbox') {{ implode(',',$val->value) }} @elseif($val->type == 'file') @if($val->value) @lang('Attachment') @else @lang('No File') @endif @else

{{__($val->value)}}

@endif
@endif @endforeach @if($deposit->method_code < 1000) @include('admin.deposit.gateway_data',['details'=>json_decode($details)]) @endif @endif @if($deposit->status == Status::PAYMENT_PENDING)
@endif
@endif
{{-- REJECT MODAL --}} @endsection
@foreach($details as $k => $val)
@if(is_object($val) || is_array($val))
{{keyToTitle($k)}}

@include('admin.deposit.gateway_data',['details'=>$val])
@else
{{@keyToTitle($k)}}

{{@$val}}

@endif
@endforeach
@extends('admin.layouts.app') @section('panel')
@if (request()->routeIs('admin.deposit.list') || request()->routeIs('admin.deposit.method'))
@include('admin.deposit.widget')
@endif
@forelse($deposits as $deposit) @php $details = $deposit->detail ? json_encode($deposit->detail) : null; @endphp @empty @endforelse
@lang('Gateway | Transaction') @lang('Initiated') @lang('User') @lang('Amount') @lang('Conversion') @lang('Status') @lang('Action')
@if ($deposit->method_code < 5000) {{ __(@$deposit->gateway->name) }} @else @lang('Google Pay') @endif
{{ $deposit->trx }}
{{ showDateTime($deposit->created_at) }}
{{ diffForHumans($deposit->created_at) }}
{{ $deposit->user->fullname }}
@{{ $deposit->user->username }}
{{ showAmount($deposit->amount) }} + {{ showAmount($deposit->charge) }}
{{ showAmount($deposit->amount + $deposit->charge) }}
{{ showAmount(1) }} = {{ showAmount($deposit->rate, currencyFormat: false) }} {{ __($deposit->method_currency) }}
{{ showAmount($deposit->final_amount, currencyFormat: false) }} {{ __($deposit->method_currency) }}
@php echo $deposit->statusBadge @endphp @lang('Details')
{{ __($emptyMessage) }}
@if ($deposits->hasPages()) @endif
@endsection @push('breadcrumb-plugins') @endpush
{{ showAmount($successful) }}

@lang('Successful Payment')

{{ showAmount($pending) }}

@lang('Pending Payment')

{{ showAmount($rejected) }}

@lang('Rejected Payment')

{{ showAmount($initiated) }}

@lang('Initiated Payment')

@extends('admin.layouts.app') @section('panel')
@foreach($extensions as $extension) @endforeach
@lang('Extension') @lang('Status') @lang('Action')
{{ __($extension->name) }}
{{ __($extension->name) }}
@php echo $extension->statusBadge; @endphp
@if($extension->status == Status::DISABLE) @else @endif
{{-- EDIT METHOD MODAL --}} {{-- HELP METHOD MODAL --}} @endsection @push('breadcrumb-plugins')
@endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel') @if ($pData->is_default == Status::NO)
@csrf
@lang('Make Slug')
@endif

{{ __($pData->name) }} @lang('Page')

@lang('You\'ve to click on the Update Now button to apply the changes')
@csrf
    @if ($pData->secs != null) @foreach (json_decode($pData->secs) as $sec)
  1. {{ __(@$sections[$sec]['name']) }}
  2. @endforeach @else
  3. @lang('Drag & drop your section here')
  4. @endif

@lang('Sections')

@lang('Drag the section to the left side you want to show on the page.')
    @foreach ($sections as $k => $secs) @if (!@$secs['no_selection'])
  1. {{ __($secs['name']) }} @if ($secs['builder']) @endif
  2. @endif @endforeach
@stop @push('script-lib') @endpush @push('script') @endpush @push('breadcrumb-plugins') @endpush @push('style') @endpush @extends('admin.layouts.app') @section('panel')
@forelse($pData as $k => $data) @empty @endforelse
@lang('Name') @lang('Slug') @lang('Action')
{{ __($data->name) }} {{ __($data->slug) }}
@lang('SEO Setting') @lang('Edit') @if($data->is_default == Status::NO) @endif
{{ __($emptyMessage) }}
{{-- Add METHOD MODAL --}} @endsection @push('breadcrumb-plugins') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel')

@lang('The SEO setting is optional for this page. If you don\'t configure SEO here, the global SEO contents will work for this page, which you can configure from') @lang('System Setting > SEO Configuration').

@csrf
@lang('Separate multiple keywords by') ,(@lang('comma')) @lang('or') @lang('enter') @lang('key')
@endsection @extends('admin.layouts.app') @section('panel')
@csrf @if (@$data) @endif
@php $imgCount = 0; @endphp @foreach ($section->element as $k => $content) @if ($k == 'images') @php $imgCount = collect($content)->count(); @endphp @foreach ($content as $imgKey => $image)
@endforeach
@push('divend')
@endpush @elseif($content == 'icon')
@else @if ($content == 'textarea')
@elseif($content == 'textarea-nic')
@elseif($k == 'select') @php $selectName = $content->name; @endphp
@elseif($k == 'slug')
@else
@if(@$section->element->slug == $k) @lang('Make Slug') @endif
@endif @endif @endforeach @stack('divend')
@endsection @push('breadcrumb-plugins') @endpush @push('style-lib') @endpush @push('script-lib') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel')

@lang('The SEO setting is optional for this page. If you don\'t configure SEO here, the global SEO contents will work for this page, which you can configure from') @lang('System Setting > SEO Configuration').

@csrf
@lang('Separate multiple keywords by') ,(@lang('comma')) @lang('or') @lang('enter') @lang('key')
@endsection @push('breadcrumb-plugins') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel')

@lang('Content Management Options')

@foreach (getPageSections(true) as $k => $secs) @if ($secs['builder'] && !@$secs['hide_builder'])
{{ __($secs['name']) }}
@endif @endforeach
@endsection @push('style') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel') @if (@$section->content)
@csrf
@php $imgCount = 0; @endphp @foreach ($section->content as $k => $item) @if ($k == 'images') @php $imgCount = collect($item)->count(); @endphp @foreach ($item as $imgKey => $image)
@endforeach
@push('divend')
@endpush @else @if ($k != 'images') @if ($item == 'icon')
@elseif($item == 'textarea')
@elseif($item == 'textarea-nic')
@elseif($k == 'select') @php $selectName = $item->name; @endphp
@else
@endif @endif @endif @endforeach @stack('divend')
@endif @if (@$section->element)
@if (@$section->element->images) @endif @foreach ($section->element as $k => $type) @if ($k != 'modal' && $k != 'seo') @if ($type == 'text' || $type == 'icon') @elseif($k == 'select') @endif @endif @endforeach @forelse($elements as $data) @if (@$section->element->images) @php $firstKey = collect($section->element->images)->keys()[0]; @endphp @endif @foreach ($section->element as $k => $type) @if ($k != 'modal' && $k != 'seo') @if ($type == 'text' || $type == 'icon') @if ($type == 'icon') @else @endif @elseif($k == 'select') @php $dataVal = @$section->element->$k->name; @endphp @endif @endif @endforeach @empty @endforelse
@lang('SL')@lang('Image'){{ __(keyToTitle($k)) }}{{ keyToTitle(@$section->element->$k->name) }}@lang('Action')
{{ $loop->iteration }}
@lang('image')
@php echo @$data->data_values->$k; @endphp{{ __(@$data->data_values->$k) }}{{ @$data->data_values->$dataVal }}
@if(@$section->element->seo) @lang('SEO Setting') @endif @if ($section->element->modal) @php $images = []; if (@$section->element->images) { foreach ($section->element->images as $imgKey => $imgs) { $images[] = frontendImage($key,@$data->data_values->$imgKey,@$section->element->images->$imgKey->size); } } @endphp @else @lang('Edit') @endif
{{ __($emptyMessage) }}
{{-- Add METHOD MODAL --}} {{-- Update METHOD MODAL --}} @endif {{-- if section element end --}} @endsection @push('breadcrumb-plugins')
@if (@$section->element) @if ($section->element->modal) @lang('Add New') @else @lang('Add New') @endif @endif @if (!empty($templates))
@csrf
@endif @if(!@$section->hide_builder) @endif
@endpush @push('style-lib') @endpush @push('script-lib') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel')
@csrf
@lang('Separate multiple keywords by') ,(@lang('comma')) @lang('or') @lang('enter') @lang('key')
@endsection @extends('admin.layouts.app') @section('panel')
@foreach($templates as $temp)

{{ __(keyToTitle($temp['name'])) }}

@if(gs('active_template') == $temp['name']) @else
@csrf
@endif
Template
@endforeach @if($extraTemplates) @foreach($extraTemplates as $temp)

{{ __(keyToTitle($temp['name'])) }}

Template
@endforeach @endif
@endsection @extends('admin.layouts.app') @section('panel') @push('topBar') @include('admin.gateways.top_bar') @endpush
@csrf

{{ __($gateway->name) }}

@if (count($supportedCurrencies) > 0)
@endif
@if ($gateway->code < 1000 && $gateway->extra)

@lang('Configurations')

@foreach ($gateway->extra as $key => $param)
@if ($key == 'cron') @lang('Set the URL to your server\'s cron job to validate the payment.') @endif
@endforeach
@endif

@lang('Global Setting for') {{ __($gateway->name) }}

@foreach ($parameters->where('global', true) as $key => $param)
@endforeach
@isset($gateway->currencies) @foreach ($gateway->currencies as $gatewayCurrency)

{{ __($gateway->name) }} - {{ __($gatewayCurrency->currency) }}

@lang('Range')
{{ __(gs('cur_text')) }}
{{ __(gs('cur_text')) }}
@lang('Charge')
{{ __(gs('cur_text')) }}
%
@lang('Currency')
1 {{ gs('cur_text') }} =
{{ __($gatewayCurrency->baseSymbol()) }}
@if ($parameters->where('global', false)->count() != 0) @php $globalParameters = json_decode($gatewayCurrency->gateway_parameter); @endphp
@lang('Configuration')
@foreach ($parameters->where('global', false) as $key => $param)
@endforeach
@endif
@php $currencyIndex++ @endphp @endforeach @endisset

@lang('Name')

@lang('Range')
{{ __(gs('cur_text')) }}
{{ __(gs('cur_text')) }}
@lang('Charge')
{{ __(gs('cur_text')) }}
%
@lang('Currency')
1 {{ __(gs('cur_text')) }} =
@if ($parameters->where('global', false)->count() != 0)
@lang('Configuration')
@foreach ($parameters->where('global', false) as $key => $param)
@endforeach
@endif
@endsection @push('breadcrumb-plugins') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel') @push('topBar') @include('admin.gateways.top_bar') @endpush
@forelse($gateways->sortBy('alias') as $k=>$gateway) @empty @endforelse
@lang('Gateway') @lang('Supported Currency') @lang('Enabled Currency') @lang('Status') @lang('Action')
{{__($gateway->name)}} {{ collect($gateway->supported_currencies)->count() }} {{ $gateway->currencies->count() }} @php echo $gateway->statusBadge @endphp
@lang('Edit') @if($gateway->status == Status::DISABLE) @else @endif
{{ __($emptyMessage) }}
@endsection @push('breadcrumb-plugins')
@endpush @extends('admin.layouts.app') @section('panel') @push('topBar') @include('admin.gateways.top_bar') @endpush
@csrf
1 {{ __(gs('cur_text'))}} =
@lang('Range')
{{ __(gs('cur_text')) }}
{{ __(gs('cur_text')) }}
@lang('Charge')
{{ __(gs('cur_text')) }}
%
@lang('Deposit Instruction')
@lang('You\'ve to click on the submit button to apply the changes')
@lang('User Data')
@endsection @push('breadcrumb-plugins') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel') @push('topBar') @include('admin.gateways.top_bar') @endpush
@csrf
1 {{ __(gs('cur_text')) }}=
@lang('Range')
{{ __(gs('cur_text')) }}
{{ __(gs('cur_text')) }}
@lang('Charge')
{{ __(gs('cur_text')) }}
%
@lang('Deposit Instruction')
@lang('You\'ve to click on the submit button to apply the changes')
@lang('User Data')
@endsection @push('breadcrumb-plugins') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel') @push('topBar') @include('admin.gateways.top_bar') @endpush
@forelse($gateways as $gateway) @empty @endforelse
@lang('Gateway') @lang('Status') @lang('Action')
{{__($gateway->name)}} @php echo $gateway->statusBadge @endphp
@lang('Edit') @if($gateway->status == Status::DISABLE) @else @endif
{{ __($emptyMessage) }}
@endsection @push('breadcrumb-plugins')
@lang('Add New') @endpush @extends($activeTemplate . 'layouts.master') @section('content')

Nova Auditoria GBP

@csrf
Informações da Empresa
@error('business_name')
{{ $message }}
@enderror
@error('place_id')
{{ $message }}
@enderror
@error('rating')
{{ $message }}
@enderror
@error('reviews_count')
{{ $message }}
@enderror
@error('photo_count')
{{ $message }}
@enderror
@error('response_rate')
{{ $message }}
@enderror
@if($listings->count() > 0)
@endif
Cancelar
@endsection @extends($activeTemplate . 'layouts.master') @section('content')

Dashboard GBP Auditorias

{{ $stats['total'] }}
Total de Auditorias
{{ $stats['completed'] }} completas
{{ $stats['grades']['excelente'] }}
Excelentes
Grade 90+
{{ $stats['avg_score'] }}
Score Médio
De 100 pontos
{{ $stats['critical'] }}
Críticas
Requerem ação
Distribuição de Grades
⭐ Excelente {{ $stats['grades']['excelente'] }}
🟢 Bom {{ $stats['grades']['bom'] }}
🟡 Regular {{ $stats['grades']['regular'] }}
🟠 Fraco {{ $stats['grades']['fraco'] }}
🔴 Crítico {{ $stats['grades']['critico'] }}
Auditorias Recentes (7 dias)
Ver todas
Auditorias Críticas
{{ $criticalAudits->count() }}
@forelse($criticalAudits as $audit)
{{ $audit->business_name }}
Score: {{ $audit->score }}/100
🔴 Crítico
@empty
Nenhuma auditoria crítica!
@endforelse
@endsection @extends($activeTemplate . 'layouts.master') @section('content')

Editar Auditoria: {{ $audit->business_name }}

@csrf @method('PUT')
Informações da Empresa
@error('business_name')
{{ $message }}
@enderror
@error('rating')
{{ $message }}
@enderror
@error('reviews_count')
{{ $message }}
@enderror
@error('photo_count')
{{ $message }}
@enderror
@error('response_rate')
{{ $message }}
@enderror
Grade Atual: {{ $audit->grade_emoji }} {{ $audit->grade_label }} ({{ $audit->score }}/100)
Cancelar
@endsection @extends($activeTemplate . 'layouts.master') @section('content')

Auditorias GBP

Nova Auditoria

Total

{{ $stats['total'] }}

Excelentes

{{ $stats['grades']['excelente'] }}

Críticas

{{ $stats['critical'] }}

Avg Score

{{ $stats['avg_score'] }}

Baixo Score

{{ $stats['low_score'] }}

@forelse($audits as $audit) @empty @endforelse
Nome Grade Score Nota Status Criada Ações
{{ $audit->business_name }} {{ $audit->grade_label }} {{ $audit->grade_emoji }} {{ $audit->score }}/100 @if($audit->rating) {{ number_format($audit->rating, 1) }} ({{ $audit->reviews_count }}) @else - @endif {{ $audit->status_label }} {{ $audit->created_at->format('d/m/y') }}
@csrf @method('DELETE')
Nenhuma auditoria encontrada.
{{ $audits->links() }}
@endsection @extends($activeTemplate . 'layouts.master') @section('content')

{{ $audit->business_name }}

{{ $audit->place_id }}
Editar
@csrf @method('DELETE')

Grade

{{ $audit->grade_emoji }} {{ $audit->grade_label }}

{{ $audit->score }}/100

@csrf

Informações

Rating:
{{ $audit->rating ? '★ ' . number_format($audit->rating, 1) : '-' }}
Avaliações:
{{ $audit->reviews_count ?? '-' }}
Fotos:
{{ $audit->photo_count ?? '-' }}
Taxa resposta:
{{ $audit->response_rate ? $audit->response_rate . '%' : '-' }}
@forelse($criteriaByGroup as $group => $items)
{{ $group }}
@foreach($items as $item)
{{ $item->label }}
@if($item->issue) {{ $item->issue }} @endif
{{ ucfirst($item->status) }}
{{ $item->earned_points }}/{{ $item->max_points }} pts
{{ $item->pass_rate }}%
@endforeach
@empty

Nenhum critério cadastrado.

@endforelse
@forelse($recommendationsByPriority as $priority => $items)
{{ $priority === 'critical' ? '🔴 Crítica' : ($priority === 'high' ? '🟠 Alta' : ($priority === 'medium' ? '🟡 Média' : '🟢 Baixa')) }}
@foreach($items as $rec)
{{ $rec->recommendation }}

{{ $rec->short_text }}

Impacto esperado: {{ $rec->expected_impact }}
{{ $rec->status_label }}
@endforeach
@empty

Nenhuma recomendação cadastrada.

@endforelse
@forelse($audit->reviews as $review)
{{ $review->author_name }}
{{ $review->published_at?->format('d/m/Y') }}
{{ $review->star_display }}

{{ $review->review_text }}

@if($review->has_owner_response && $review->owner_response)
Resposta do proprietário:
{{ $review->owner_response }}
@endif
@empty

Nenhuma avaliação cadastrada.

@endforelse
@endsection @extends('admin.layouts.app') @section('panel') @include('admin.partials.flash-messages')
@lang('Total Listings')

{{ $totalListings }}

@lang('Synced')

{{ $syncedListings }} {{ round($syncedListings / $totalListings * 100, 1) }}%

@lang('Avg Rating')

{{ number_format($avgRating ?? 0, 1) }}/5

@lang('Total Reviews')

{{ $totalReviews }}

@lang('Recent Reviews')
@forelse($recentReviews as $review) @empty @endforelse
@lang('Author') @lang('Listing') @lang('Rating') @lang('Review') @lang('Date')
{{ $review->author_name }} {{ strLimit($review->listing->title, 20) }} {{ $review->rating }}★ {{ strLimit($review->text, 40) }} {{ $review->time_published?->format('d/m/Y') }}
@lang('No reviews')
@endsection @extends('admin.layouts.app') @section('panel') @include('admin.partials.flash-messages')
@lang('Total Listings')

{{ $syncStats['total_listings'] }}

@lang('Synced')

{{ $syncStats['synced'] }} {{ round($syncStats['synced'] / $syncStats['total_listings'] * 100, 1) }}%

@lang('Pending')

{{ $syncStats['pending'] }}

@lang('Failed')

{{ $syncStats['failed'] }}

@lang('Rating Médio')

{{ number_format($avgRating ?? 0, 1) }}/5.0

{{ $totalReviews }} @lang('avaliações')

@lang('Últimas Sincronizações')
@forelse($recentSyncs as $log) @empty @endforelse
{{ strLimit($log->listing?->title ?? 'N/A', 20) }} {{ $log->status }} {{ $log->created_at->diffForHumans() }}
@lang('Nenhuma sincronização')
@endsection @extends('admin.layouts.app') @section('panel') @include('admin.partials.flash-messages')
@lang('Google Places Listings')
@forelse($listings as $listing) @empty @endforelse
@lang('Listing') @lang('Rating') @lang('Reviews') @lang('Status') @lang('Last Sync') @lang('Actions')
{{ strLimit($listing->title, 20) }} @if($listing->googlePlace) {{ $listing->googlePlace->google_rating }} @else - @endif {{ $listing->googlePlace?->google_review_count ?? '-' }} @if($listing->googlePlace) {{ ucfirst($listing->googlePlace->sync_status) }} @else @lang('Not Synced') @endif {{ $listing->googlePlace?->last_synced_at?->diffForHumans() ?? '-' }}
@csrf
@if($listing->googlePlace) @endif
@lang('No listings found')
@if($listings->hasPages()) @endif
@endsection @extends('admin.layouts.app') @section('panel')
@lang('Sync Logs')
@forelse($logs as $log) @empty @endforelse
@lang('Listing') @lang('Action') @lang('Status') @lang('Reviews') @lang('Message') @lang('Date')
{{ strLimit($log->listing?->title ?? '-', 20) }} {{ $log->action }} {{ $log->status }} {{ $log->reviews_imported }} {{ $log->message }} {{ $log->created_at->format('d/m/Y H:i') }}
@lang('No logs')
@if($logs->hasPages()) @endif
@endsection @extends('admin.layouts.app') @section('panel')
@forelse($notifications as $notification) @empty
empty
@lang('No notification found.')
@endforelse
{{ paginateLinks($notifications) }}
@endsection @push('breadcrumb-plugins') @if ($hasUnread) @lang('Mark All as Read') @endif @if ($hasNotification) @endif @endpush @extends('admin.layouts.app') @section('panel')
@lang('image')

{{__($admin->name)}}

  • @lang('Name') {{ __($admin->name) }}
  • @lang('Username') {{ __($admin->username) }}
  • @lang('Email') {{ $admin->email }}
@lang('Change Password')
@csrf
@endsection @push('breadcrumb-plugins') @lang('Profile Setting') @endpush @push('style') @endpush @extends('admin.layouts.app') @section('panel')
@lang('image')

{{__($admin->name)}}

  • @lang('Name') {{__($admin->name)}}
  • @lang('Username') {{__($admin->username)}}
  • @lang('Email') {{$admin->email}}
@lang('Profile Information')
@csrf
@endsection @push('breadcrumb-plugins') @lang('Password Setting') @endpush @push('style') @endpush @extends('admin.layouts.app') @section('panel')
@forelse($reports as $report) @empty @endforelse
@lang('Type') @lang('Message') @lang('Status')
{{ @$report->req_type }} {{ @$report->message }} {{ @$report->status_text }}
{{ __($emptyMessage) }}
@endsection @push('breadcrumb-plugins') @lang('Request for Support') @endpush @extends('admin.layouts.app') @section('panel') @include('admin.partials.flash-messages')
⚙️ Configurações
@csrf
Chave para sincronizar dados do Google Places
Chave para web scraping com Apify
ID do Actor para executar automações
horas
De 1 a 168 horas (1 semana)
📌 Informações

Google Places:

Obtém avaliações e informações do Google

Apify API:

Chave para acessar automações do Apify

Apify Actor:

ID do ator a ser executado

Intervalo:

Frequência de sincronização (horas)
@endsection @extends('admin.layouts.app') @section('panel')
{{ $googlePlace->listing->title }}
@lang('Place ID'):
{{ $googlePlace->place_id }}
@lang('Name'):
{{ $googlePlace->google_name }}
@lang('Address'):
{{ $googlePlace->google_formatted_address }}
@lang('Phone'):
{{ $googlePlace->google_phone ?? '-' }}
@lang('Rating'):
{{ $googlePlace->google_rating }}/5.0
@lang('Reviews'):
{{ $googlePlace->google_review_count }}
@lang('Actions')
@csrf
@lang('Open in Google')
@lang('Recent Reviews')
@forelse($reviews as $review) @empty @endforelse
@lang('Author') @lang('Rating') @lang('Text') @lang('Date')
{{ $review->author_name }} {{ $review->rating }}★ {{ strLimit($review->text, 50) }} {{ $review->time_published?->format('d/m/Y') }}
@lang('No reviews')
@endsection @extends('admin.layouts.app') @section('panel')
  • @lang('Language Keywords of') {{ __($lang->name) }}

@forelse($json as $k => $language) @empty @endforelse
@lang('Key') {{ __($lang->name) }} @lang('Action')
{{ $k }} {{ $language }}
{{ __($emptyMessage) }}
@if ($json->hasPages()) @endif
{{-- Import Modal --}} @endsection @push('breadcrumb-plugins') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel')

@lang('While you are adding a new keyword, it will only add to this current language only. Please be careful on entering a keyword, please make sure there is no extra space. It needs to be exact and case-sensitive.')

@forelse ($languages as $item) @empty @endforelse
@lang('Name') @lang('Code') @lang('Default') @lang('Actions')
{{ $item->name }} {{ __($item->name) }}
{{ __($item->code) }} @if($item->is_default == Status::YES) @lang('Default') @else @lang('Selectable') @endif
@lang('Translate') @lang('Edit') @if($item->id != 1) @endif
{{ __($emptyMessage) }}
{{-- NEW MODAL --}} {{-- EDIT MODAL --}} @endsection @push('breadcrumb-plugins') @endpush @push('style') @endpush @push('script') @endpush @extends('admin.layouts.master') @section('content') @php $sidenav = file_get_contents(resource_path('views/admin/partials/sidenav.json')); @endphp
@include('admin.partials.sidenav') @include('admin.partials.topnav')
@stack('topBar') @include('admin.partials.breadcrumb') @yield('panel')
@endsection {{ gs()->siteName($pageTitle ?? '') }} @stack('style-lib') @stack('style') @yield('content') @include('partials.notify') @stack('script-lib') {{-- LOAD NIC EDIT --}} @stack('script') @extends('admin.layouts.app') @section('panel')
@if ($listing->status == Status::LISTING_PENDING) @endif @if (!($listing->status == Status::LISTING_DISABLED || $listing->status == Status::LISTING_REJECTED)) @if ($listing->is_featured == Status::YES) @else @endif @endif
@lang('Listing Details')
  • @lang('Owner')
    {{ $listing->user->username }}
  • @lang('Listing Id')
    #{{ $listing->listing_id }}
  • @lang('Title')
    {{ __($listing->title) }}
  • @lang('Country')
    {{ __(@$listing->country->name) }}
  • @lang('City')
    {{ __(@$listing->city->name) }}
  • @lang('Endereço')
    {{ __($listing->address) }}
  • @lang('Category')
    {{ __($listing->category->name) }}
  • @if ($listing->bairro)
  • @lang('Bairro')
    {{ $listing->bairro }}
  • @endif @if ($listing->cep)
  • @lang('CEP')
    {{ $listing->cep }}
  • @endif @if ($listing->tag)
  • @lang('Tags')
    @php $tags_array = is_string($listing->tags) ? json_decode($listing->tags, true) : $listing->tags; $tags_array = is_array($tags_array) ? $tags_array : []; @endphp @foreach ($tags_array as $tag) {{ $tag }} @endforeach
  • @endif
@php $hours = is_string($listing->business_hours) ? json_decode($listing->business_hours, true) : $listing->business_hours; $hours = is_array($hours) ? $hours : []; @endphp @if (!blank($hours))
@lang('Business Hours')
    @php $dayLabels = [ 'monday' => 'Segunda-feira', 'tuesday' => 'Terça-feira', 'wednesday' => 'Quarta-feira', 'thursday' => 'Quinta-feira', 'friday' => 'Sexta-feira', 'saturday' => 'Sábado', 'sunday' => 'Domingo' ]; @endphp @foreach ($hours as $day => $times)
  • {{ $dayLabels[$day] ?? ucfirst($day) }}
    @if ($times['open'] && $times['close']) {{ $times['open'] }} - {{ $times['close'] }} @else Fechado @endif
  • @endforeach
@endif @if (!blank($listing->amenities))
@lang('Informações Adicionais')
@php $amenities = is_string($listing->amenities) ? json_decode($listing->amenities, true) : $listing->amenities; $amenities = is_array($amenities) ? $amenities : []; @endphp @if (!empty($amenities)) @foreach ($amenities as $category => $items) @if (is_array($items) && !empty($items))
{{ __(ucwords(str_replace('_', ' ', $category))) }}
@foreach ($items as $item) @php if (is_array($item)) { $itemName = current($item); $itemKey = key($item); } else { $itemName = $item; $itemKey = null; } @endphp
@if ($itemName === true) @elseif ($itemName === false) @else @endif
{{ __(ucfirst(str_replace('_', ' ', $itemKey))) }} {{ __(($itemName === true ? '✓ Sim' : ($itemName === false ? '✗ Não' : $itemName))) }}
@endforeach
@endif @endforeach @else
@lang('Nenhuma informação adicional disponível')
@endif
@endif
@lang('Informações de Contato')
@lang('Listing Description')

@php echo $listing->description; @endphp

  • @lang('Status')
    @php echo $listing->statusBadge; @endphp
  • @lang('Featured')
    @if ($listing->is_featured == Status::YES) @lang('Yes') @else @lang('No') @endif
  • @lang('Rating')
    @if ($listing->totalScore) ⭐ {{ $listing->totalScore }} @else @lang('Sem avaliação') @endif
  • @lang('Reviews')
    @if ($listing->reviewsCount) {{ $listing->reviewsCount }} @lang('avaliações') @else 0 @lang('avaliações') @endif
  • @lang('Approved Listings') {{ $totalApproved }}
  • @lang('Allowed Listings') {{ @$userPlan->listings ?? 0 }}
@if ($listing->map)
@lang('Map')
@endif
@lang('Display Image')
@php $imageUrl = $listing->display_image; if (filter_var($imageUrl, FILTER_VALIDATE_URL)) { $imageSrc = $imageUrl; } else { $imageSrc = getImage(getFilePath('listing') . '/' . $imageUrl, getFileSize('listing')); } @endphp @lang('image')
@if (!blank($listing->images))
@lang('Gallery Images') {{ $listing->images->count() }}/{{ @$userPlan->images ?? 0 }}
@foreach ($listing->images as $image) @endforeach
@endif
@php $videos_array = is_string($listing->videos) ? json_decode($listing->videos, true) : $listing->videos; $videos_array = is_array($videos_array) ? $videos_array : []; @endphp @if (!blank($videos_array))
@lang('Videos') {{ count($videos_array) }}/{{ @$userPlan->videos ?? 0 }}
@foreach ($videos_array as $video) @endforeach
@endif
@endsection @push('breadcrumb-plugins') @lang('Avaliações') @if ($listing->reviewsCount > 0) {{ $listing->reviewsCount }} @else 0 @endif @endpush @push('style') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel')
@forelse($listings as $listing) @empty @endforelse
@lang('Listing') @lang('Category') @lang('User') @lang('Is Featured') @lang('Status') @lang('Action')
{{ strLimit(__($listing->title), 40) }}
@if (@$listing->country->name) {{ strLimit(__(@$listing->country->name), 20) }}, @endif{{ strLimit(__($listing->city->name), 20) }}
{{ __($listing->category->name) }} {{ $listing->user->username }} @php echo $listing->featuredBadge; @endphp @php echo $listing->statusBadge; @endphp
{{ __($emptyMessage) }}
@if ($listings->hasPages()) @endif
@endsection @push('breadcrumb-plugins') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel')
@if (session('error')) @endif
@lang('Preview Listings') - @lang('Step 2')
{{ $total }} @lang('items')
@lang('How it works'): @lang('Mark the items you want to sync'). @lang('Items with the same') place_id @lang('will be updated').
@csrf
@lang('Selected'): 0
@forelse ($listings as $index => $item) @empty @endforelse
@lang('Listing') @lang('Category') @lang('City') @lang('State') @lang('Phone') @lang('Website') @lang('Action')
@if (!empty($item['imageUrl'])) {{ $item['title'] ?? 'Image' }} @else @endif {{ strLimit(__($item['title'] ?? 'N/A'), 40) }}
{{ strLimit(__($item['city'] ?? $item['neighborhood'] ?? 'N/A'), 20) }}
{{ __($item['categoryName'] ?? 'No category') }} {{ __($item['city'] ?? $item['neighborhood'] ?? 'N/A') }} {{ __($item['state'] ?? 'N/A') }} @if (!empty($item['phoneUnformatted'])) {{ $item['phoneUnformatted'] }} @else - @endif @if (!empty($item['website'])) @else - @endif
@lang('No items found')
@endsection @extends('admin.layouts.app') @section('panel')
@if ($errors->any()) @endif @if (session('error')) @endif
@lang('Upload JSON File')

@lang('Import data from Google Places export')

@csrf
@lang('Max: 50MB | Format: JSON') @error('json_file') {{ $message }} @enderror
@lang('What happens next?')
  • @lang('Step 2'): @lang('Preview all data and select items')
  • @lang('Step 3'): @lang('Confirm import (duplicates will be updated)')
  • @lang('Auto:'): @lang('Categories, cities, and states created automatically')
@lang('Search on Apify')

@lang('Fetch data directly from Google Places via Apify')

@csrf
@lang('What are you looking for on Google Maps?')
@lang('How it works?')
  • @lang('We\'ll search Google Maps using your query')
  • @lang('Results will be processed and shown in preview')
  • @lang('You can select which places to import')
@lang('Search by Place ID')

@lang('Find and import a specific place using its Google Place ID')

@csrf
@lang('Enter the Place ID from Google Maps or your previous import')
@lang('How to find a Place ID?')
  • @lang('Copy from your previous imports (shown in the listing details)')
  • @lang('Use Google Maps and check the place URL')
  • @lang('Use the Apify search to find similar places first')
@lang('JSON Structure Reference')

@lang('Your JSON file should contain an array of objects with these fields:')

@lang('Required fields')

  • place_id - @lang('Unique Google ID')
  • title - @lang('Business name')
  • address - @lang('Full address')

@lang('Optional fields')

  • description, categoryName - @lang('Description and category')
  • website, phoneUnformatted - @lang('Contact information')
  • imageUrl, openingHours - @lang('Images and hours')
  • location, additionalInfo - @lang('Location details')
@push('script') @endpush @endsection @extends('admin.layouts.app') @section('panel') @push('topBar') @include('admin.notification.top_bar') @endpush
@csrf
@lang('SMTP Configuration')
@lang('SendGrid API Configuration')
@lang('Mailjet API Configuration')
{{-- TEST MAIL MODAL --}} @endsection @push('breadcrumb-plugins') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel') @push('topBar') @include('admin.notification.top_bar') @endpush
@include('admin.notification.global_template_nav') @include('admin.notification.global_shortcodes')
@csrf
@endsection @push('style') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel') @push('topBar') @include('admin.notification.top_bar') @endpush
@include('admin.notification.global_template_nav') @include('admin.notification.global_shortcodes')
@csrf
@endsection
{{-- blade-formatter-disable --}} @foreach(gs('global_shortcodes') as $shortCode => $codeDetails) @endforeach {{-- blade-formatter-enable --}}
@lang('Short Code') @lang('Description')
@{{fullname}} @lang('Full Name of User')
@{{username}} @lang('Username of User')
@{{message}} @lang('Message')
@{{@php echo $shortCode @endphp}} {{ __($codeDetails) }}
@extends('admin.layouts.app') @section('panel') @push('topBar') @include('admin.notification.top_bar') @endpush
@include('admin.notification.global_template_nav') @include('admin.notification.global_shortcodes')
@csrf
@endsection @extends('admin.layouts.app') @section('panel') @push('topBar') @include('admin.notification.top_bar') @endpush

@lang('If you want to send push notification by the firebase, Your system must be SSL certified')

@csrf
@endsection @push('breadcrumb-plugins') @lang('Download File') @endpush @extends('admin.layouts.app') @section('panel') @push('topBar') @include('admin.notification.top_bar') @endpush
@csrf
@lang('Clickatell Configuration')
@lang('Infobip Configuration')
@lang('Message Bird Configuration')
@lang('Nexmo Configuration')
@lang('Sms Broadcast Configuration')
@lang('Twilio Configuration')
@lang('Text Magic Configuration')
@lang('Custom API')

{{-- blade-formatter-disable --}} {{-- blade-formatter-enable --}}
@lang('Short Code') @lang('Description')
@{{message}} @lang('Message')
@{{number}} @lang('Number')
@lang('Headers')
@for($i = 0; $i < count(gs('sms_config')->custom->headers->name); $i++)
@endfor
@lang('Body')
@for($i = 0; $i < count(gs('sms_config')->custom->body->name); $i++)
@endfor
{{-- TEST MAIL MODAL --}} @endsection @push('breadcrumb-plugins') @endpush @push('style') @endpush @push('script') @endpush @extends('admin.layouts.app') @push('topBar') @include('admin.notification.top_bar') @endpush @section('panel') @include('admin.notification.template.nav') @include('admin.notification.template.shortcodes')
@csrf
@lang('Email Template')
email_status) checked @endif>
@lang('Make the field empty if you want to use global template\'s name as email sent from name.')
@lang('Make the field empty if you want to use global template\'s email as email sent from.')
@endsection @push('breadcrumb-plugins') @endpush @extends('admin.layouts.app') @section('panel') @push('topBar') @include('admin.notification.top_bar') @endpush
@forelse($templates as $template) @empty @endforelse
@lang('Name') @lang('Subject') @lang('Edit Template')
{{ __($template->name) }} {{ __($template->subject) }}
@lang('Email') @if($template->email_status != Status::ENABLE) @else @endif
@lang('SMS') @if($template->sms_status != Status::ENABLE) @else @endif
@lang('Push') @if($template->push_status != Status::ENABLE) @else @endif
{{ __($emptyMessage) }}
@endsection @push('style') @endpush @extends('admin.layouts.app') @push('topBar') @include('admin.notification.top_bar') @endpush @section('panel') @include('admin.notification.template.nav') @include('admin.notification.template.shortcodes')
@csrf
@lang('Push Notification Template')
@lang('Make the field empty if you want to use global template\'s title as notification title.')
push_status) checked @endif>
@endsection @push('breadcrumb-plugins') @endpush
@foreach($template->shortcodes as $shortcode => $key) {{-- blade-formatter-disable --}} {{-- blade-formatter-enable --}} @endforeach @foreach(gs('global_shortcodes') as $shortCode => $codeDetails) {{-- blade-formatter-disable --}} {{-- blade-formatter-enable --}} @endforeach
@lang('Short Code') @lang('Description')
@php echo "{{". $shortcode ."}}" @endphp{{ __($key) }}
@{{@php echo $shortCode @endphp}}{{ __($codeDetails) }}
@extends('admin.layouts.app') @push('topBar') @include('admin.notification.top_bar') @endpush @section('panel') @include('admin.notification.template.nav') @include('admin.notification.template.shortcodes')
@csrf
@lang('SMS Template')
@lang('Make the field empty if you want to use global template\'s name as sms sent from name.')
sms_status) checked @endif>
@endsection @push('breadcrumb-plugins') @endpush @extends('admin.layouts.app') @section('panel')
@forelse($notifications as $notification) @empty
empty
@lang('No notification found.')
@endforelse
{{ paginateLinks($notifications) }}
@endsection @push('breadcrumb-plugins') @if ($hasUnread) @lang('Mark All as Read') @endif @if ($hasNotification) @endif @endpush
{{ __($pageTitle) }}
@if ($message = session('success')) @endif @if ($message = session('error')) @endif @if ($message = session('warning')) @endif @if ($message = session('info')) @endif @php $sideBarLinks = json_decode($sidenav); @endphp @push('script') @endpush @php $sidenav = json_decode($sidenav); $settings = file_get_contents(resource_path('views/admin/setting/settings.json')); $settings = json_decode($settings); $routesData = []; foreach (\Illuminate\Support\Facades\Route::getRoutes() as $route) { $name = $route->getName(); if (strpos($name, 'admin') !== false) { $routeData = [ $name => url($route->uri()), ]; $routesData[] = $routeData; } } @endphp @push('script') @endpush @extends('admin.layouts.app') @section('panel')
@lang('image')

{{__($admin->name)}}

  • @lang('Name') {{ __($admin->name) }}
  • @lang('Username') {{ __($admin->username) }}
  • @lang('Email') {{ $admin->email }}
@lang('Change Password')
@csrf
@endsection @push('breadcrumb-plugins') @lang('Profile Setting') @endpush @push('style') @endpush @extends('admin.layouts.app') @section('panel')
@forelse($plans as $plan) @empty @endforelse
@lang('Title') @lang('Short Description') @lang('Price') @lang('Listings') @lang('Images') @lang('Videos') @lang('Midia') @lang('Map') @lang('Feature') @lang('Status') @lang('Action')
{{ strLimit(__($plan->title), 30) }} {{ strLimit(__($plan->short_description), 30) }} @lang('Monthly'): {{ showAmount($plan->monthly_price) }}
@lang('Yearly'): {{ showAmount($plan->yearly_price) }}
{{ $plan->listings }} {{ $plan->images }} {{ $plan->videos }} {{ $plan->social_media }} @if ($plan->map == Status::YES) @lang('Yes') @else @lang('No') @endif @if ($plan->feature == Status::YES) @lang('Yes') @else @lang('No') @endif @php echo $plan->statusBadge; @endphp
@if ($plan->status == Status::ENABLE) @else @endif
{{ __($emptyMessage) }}
@if ($plans->hasPages()) @endif
@endsection @push('breadcrumb-plugins') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel')
@lang('image')

{{__($admin->name)}}

  • @lang('Name') {{__($admin->name)}}
  • @lang('Username') {{__($admin->username)}}
  • @lang('Email') {{$admin->email}}
@lang('Profile Information')
@csrf
@endsection @push('breadcrumb-plugins') @lang('Password Setting') @endpush @push('style') @endpush @extends('admin.layouts.app') @section('panel')
@forelse($reports as $report) @empty @endforelse
@lang('Type') @lang('Message') @lang('Status')
{{ @$report->req_type }} {{ @$report->message }} {{ @$report->status_text }}
{{ __($emptyMessage) }}
@endsection @push('breadcrumb-plugins') @lang('Request for Support') @endpush {{ $pageTitle }} @php echo $email->message @endphp @extends('admin.layouts.app') @section('panel')
@forelse($loginLogs as $log) @empty @endforelse
@lang('User') @lang('Login at') @lang('IP') @lang('Location') @lang('Browser | OS')
{{ @$log->user->fullname }}
@{{ @$log->user->username }}
{{showDateTime($log->created_at) }}
{{diffForHumans($log->created_at) }}
{{ $log->user_ip }} {{ __($log->city) }}
{{ __($log->country) }}
{{ __($log->browser) }}
{{ __($log->os) }}
{{ __($emptyMessage) }}
@if ($loginLogs->hasPages()) @endif
@endsection @push('breadcrumb-plugins') @if(request()->routeIs('admin.report.login.history')) @endif @endpush @if(request()->routeIs('admin.report.login.ipHistory')) @push('breadcrumb-plugins') @lang('Lookup IP') {{ $ip }} @endpush @endif @extends('admin.layouts.app') @section('panel')
@forelse($logs as $log) @empty @endforelse
@lang('User') @lang('Sent') @lang('Sender') @lang('Subject') @lang('Action')
@if($log->user) {{ $log->user->fullname }}
@{{ $log->user->username }} @else @lang('System') @endif
{{ showDateTime($log->created_at) }}
{{ diffForHumans($log->created_at) }}
{{ keyToTitle($log->notification_type) }}
@lang('via') {{ __($log->sender) }}
@if($log->subject) {{ __($log->subject) }} @else @lang('N/A') @endif
{{ __($emptyMessage) }}
@if($logs->hasPages()) @endif
@endsection @push('breadcrumb-plugins') @if(@$user) @lang('Send Notification') @else @endif @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel')
@forelse($reviews as $review) @empty @endforelse
@lang('S.N.') @lang('User') @lang('Listing') @lang('Review') @lang('Rating') @lang('Action')
{{ $reviews->firstItem() + $loop->index }} {{ __(@$review->user->fullname) }} @{{ $review->user->username }} #{{ $review->listing->listing_id }} {{ strLimit($review->review, 35) }} @php echo showRatingStars(@$review->rating); @endphp
{{ __($emptyMessage) }}
@if ($reviews->hasPages()) @endif
@endsection @push('breadcrumb-plugins') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel')
@csrf
  • @lang('User Registration')

    @lang('If you disable this module, no one can register on this system.')

  • @lang('Force SSL')

    @lang('By enabling') @lang("Force SSL (Secure Sockets Layer)") @lang('the system will force a visitor that he/she must have to visit in secure mode. Otherwise, the site will be loaded in secure mode.')

  • @lang('Agree Policy')

    @lang('If you enable this module, that means a user must have to agree with your system\'s') @lang('policies') @lang('during registration.')

  • @lang('Force Secure Password')

    @lang('By enabling this module, a user must set a secure password while signing up or changing the password.')

  • @lang('Email Verification')

    @lang('If you enable') @lang('Email Verification'), @lang('users have to verify their email to access the dashboard. A 6-digit verification code will be sent to their email to be verified.')
    @lang('Note'): @lang('Make sure that the') @lang('Email Notification') @lang('module is enabled')

  • @lang('Email Notification')

    @lang('If you enable this module, the system will send emails to users where needed. Otherwise, no email will be sent.') @lang('So be sure before disabling this module that, the system doesn\'t need to send any emails.')

  • @lang('Mobile Verification')

    @lang('If you enable') @lang('Mobile Verification'), @lang('users have to verify their mobile to access the dashboard. A 6-digit verification code will be sent to their mobile to be verified.')
    @lang('Note'): @lang('Make sure that the') @lang('SMS Notification') @lang('module is enabled')

  • @lang('SMS Notification')

    @lang('If you enable this module, the system will send SMS to users where needed. Otherwise, no SMS will be sent.') @lang('So be sure before disabling this module that, the system doesn\'t need to send any SMS.')

  • @lang('Push Notification')

    @lang('If you enable this module, the system will send push notifications to users. Otherwise, no push notification will be sent.') @lang('Setting here')

  • @lang('Language Option')

    @lang('If you enable this module, users can change the language according to their needs.')

  • @lang('Default Plan Status')

    @lang('Enabling this module grants users a free listing creation plan. To begin, set a predefined default plan in the General Settings Page.')

@endsection @push('style') @endpush @extends('admin.layouts.app') @section('panel')
@csrf
data_values->status) checked @endif name="status">
@endsection @extends('admin.layouts.app') @section('panel')

@lang('From this page, you can add/update CSS for the user interface. Changing content on this page required programming knowledge.')

@lang('Please do not change/edit/add anything without having proper knowledge of it. The website may misbehave due to any mistake you have made.')

@lang('Write Custom CSS')
@csrf
@endsection @push('style') @endpush @push('style-lib') @endpush @push('script-lib') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel')
@csrf
@lang('Days')
@endsection @push('script-lib') @endpush @push('style-lib') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel')
@lang('First of all, you have to create an in-app purchase product non-consumable in the Play Store. we assume that you already created some non-consumable products in the Play Store console now we will show the process of how you can set enough necessary processes to verify in-app purchases')
@lang('1. Enable APIs in Google Cloud Console')
@lang('2. Create a Service Account in the Google Cloud Console')
  • @lang('Go to the ') @lang('Google Cloud console') @lang('IAM & Admin') @lang('Service Accounts') @lang('page. Please use the same Google Cloud Project you used in the previous steps. Click the Create Service Account button')
  • @lang('Then a new popup will appear, just enter your service account name then a service account will auto-generate. Just copy the service id(email id) and click the create and continue button')
  • @lang('Now a new window will be visible, just click on the select a roll drop-down button. Select 2 roles Pub/Sub Admin and Monitoring Viewer. Click on the continue button, and then the done button')
  • @lang('Find the newly created account in the list and the actions click manage keys. Create a new JSON key and save it locally on your computer. And Upload it to the admin panel')
@lang('3. Grant Permissions in the Google Play Console')
  • @lang('Go to the') @lang('Users and Permissions') @lang('page in the Google Play Console and click Invite new users')
  • @lang("Enter the email of the service account you've created in section 2 of this guide and make sure you select your app properly")
  • @lang('Check on below mentioned permission and click on apply button')
    • @lang('View app information (read only)')
    • @lang('View financial data')
    • @lang('Manage orders subscriptions')
    • @lang('Manage store presence')

    @lang('Note: It takes at least 24 hours for changes to take effect but there is a hacking way. Just check this ') @lang('link')

@endsection @push('breadcrumb-plugins') @lang('Download File') @endpush @extends('admin.layouts.app') @section('panel')

@lang('If the logo and favicon are not changed after you update from this page, please') @lang('clear the cache') @lang('from your browser. As we keep the filename the same after the update, it may show the old image for the cache. usually, it works after clear the cache but if you still see the old logo or favicon, it may be caused by server level or network level caching. Please clear them too.')

@csrf
@endsection @extends('admin.layouts.app') @section('panel')
@csrf
@endsection @extends('admin.layouts.app') @section('panel')
@lang('Insert Robots txt')
@csrf
@endsection @extends('admin.layouts.app') @section('panel')
@lang('Insert Sitemap XML')
@csrf
@endsection @push('style') @endpush @push('style-lib') @endpush @push('script-lib') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel')
@foreach (gs('socialite_credentials') as $key => $credential) @endforeach
@lang('Title') @lang('Client ID') @lang('Status') @lang('Action')
{{ ucfirst($key) }} {{ $credential->client_id }} @if (@$credential->status == Status::ENABLE) @lang('Enabled') @else @lang('Disabled') @endif
@if (@$credential->status == Status::ENABLE) @else @endif
@endsection @push('script') @endpush @extends('admin.layouts.app') @section('panel')
@foreach ($settings as $key => $setting)
@php $params = null; if (@$setting->params) { foreach ($setting->params as $paramVal) { $params[] = array_values((array)$paramVal)[0]; } } @endphp
@endforeach
@endsection @push('script') @endpush @push('script') @endpush @push('style') @endpush @extends('admin.layouts.app') @section('content')

{{ __('Novo Estado') }}

@csrf
@error('country_id') {{ $message }} @enderror
@error('name') {{ $message }} @enderror
@endsection @extends('admin.layouts.app') @section('content')

{{ __('Editar Estado') }}

@csrf @method('PUT')
@error('country_id') {{ $message }} @enderror
@error('name') {{ $message }} @enderror
@endsection @extends('admin.layouts.app') @section('panel')
@forelse($states as $state) @empty @endforelse
@lang('Name') @lang('Country') @lang('Cities') @lang('Action')
{{ __($state->name) }} @if (@$state->country->name) {{ __(@$state->country->name) }} @else @lang('N/A') @endif {{ getAmount($state->cities_count ?? 0) }}
{{ __($emptyMessage) }}
@if ($states->hasPages()) @endif
@endsection @push('breadcrumb-plugins') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel')
@php echo $ticket->statusBadge; @endphp [@lang('Ticket#'){{ $ticket->ticket }}] {{ $ticket->subject }}
@if ($ticket->status != Status::TICKET_CLOSE) @endif
@csrf

@lang('Max 5 files can be uploaded | Maximum upload size is '.convertToReadableSize(ini_get('upload_max_filesize')) .' | Allowed File Extensions: .jpg, .jpeg, .png, .pdf, .doc, .docx')

@foreach ($messages as $message) @if ($message->admin_id == 0)
{{ $ticket->name }}
@if ($ticket->user_id != null)

@{{ $ticket->name }}

@else

@{{ $ticket->name }}

@endif

@lang('Posted on') {{ showDateTime($message->created_at, 'l, dS F Y @ h:i a') }}

{{ $message->message }}

@if ($message->attachments->count() > 0)
@foreach ($message->attachments as $k => $image) @lang('Attachment') {{ ++$k }} @endforeach
@endif
@else
{{ @$message->admin->name }}

@lang('Staff')

@lang('Posted on') {{ showDateTime($message->created_at, 'l, dS F Y @ h:i a') }}

{{ $message->message }}

@if ($message->attachments->count() > 0)
@foreach ($message->attachments as $k => $image) @lang('Attachment') {{ ++$k }} @endforeach
@endif
@endif @endforeach
@endsection @push('breadcrumb-plugins') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel')
@forelse($items as $item) @empty @endforelse
@lang('Subject') @lang('Submitted By') @lang('Status') @lang('Priority') @lang('Last Reply') @lang('Action')
[@lang('Ticket')#{{ $item->ticket }}] {{ strLimit($item->subject,30) }} @if($item->user_id) {{@$item->user->fullname}} @else

{{$item->name}}

@endif
@php echo $item->statusBadge; @endphp @if($item->priority == Status::PRIORITY_LOW) @lang('Low') @elseif($item->priority == Status::PRIORITY_MEDIUM) @lang('Medium') @elseif($item->priority == Status::PRIORITY_HIGH) @lang('High') @endif {{ diffForHumans($item->last_reply) }} @lang('Details')
{{ __($emptyMessage) }}
@if ($items->hasPages()) @endif
@endsection @push('breadcrumb-plugins') @endpush @extends('admin.layouts.app') @section('panel')
  • {{ keyToTitle(systemDetails()['name']) }} @lang('Version') {{ systemDetails()['version'] }}
  • @lang('ViserAdmin Version') {{ systemDetails()['build_version'] }}
  • @lang('Laravel Version') {{ $laravelVersion }}
  • @lang('Timezone') {{ @$timeZone }}
@endsection @push('style') @endpush @extends('admin.layouts.app') @section('panel')
  • @lang('Compiled views will be cleared')
  • @lang('Application cache will be cleared')
  • @lang('Route cache will be cleared')
  • @lang('Configuration cache will be cleared')
  • @lang('Compiled services and packages files will be removed')
  • @lang('Caches will be cleared')
@endsection @push('style') @endpush @extends('admin.layouts.app') @section('panel')
  • @lang('PHP Version') {{ $currentPHP }}
  • @lang('Server Software') {{ @$serverDetails['SERVER_SOFTWARE'] }}
  • @lang('Server IP Address') {{ @$serverDetails['SERVER_ADDR'] }}
  • @lang('Server Protocol') {{ @$serverDetails['SERVER_PROTOCOL'] }}
  • @lang('HTTP Host') {{ @$serverDetails['HTTP_HOST'] }}
  • @lang('Server Port') {{ @$serverDetails['SERVER_PORT'] }}
@endsection @push('style') @endpush @extends('admin.layouts.app') @section('panel')
@if (!extension_loaded('zip') && !gs('system_customized'))

@lang('PHP-zip extension is required to perform the update operation.')

@endif @if (gs('system_customized'))

@lang('The system already customized. You can\'t update the project.')

@endif

{{ systemDetails()['version'] }}

@lang('Your Version')

@if (version_compare(gs('available_version'), systemDetails()['version'], '>'))

{{ gs('available_version') }}

@lang('Latest Version')

@endif
@if (version_compare(gs('available_version'), systemDetails()['version'], '=='))

@lang('You are currently using the latest version of the system.') @lang('We are committed to continuous improvement and are actively developing the next version. Stay tuned for exciting new features and enhancements to be released soon!')

@else @if (!gs('system_customized'))

@lang('A new system version has already been released that you have not grabbed yet. Don\'t miss it out. Get the latest features of the system.')

@endif @endif
@if(version_compare(gs('available_version'), systemDetails()['version'], '>')) @endif
@endsection @push('breadcrumb-plugins') @lang('Update Log') @endpush @push('script') @endpush @push('style') @endpush @extends('admin.layouts.app') @section('panel')
@forelse($updates as $update)
@lang('Version') {{ $update->version }} | @lang('Uploaded'): {{ $update->created_at->format('Y-m-d') }}

    @foreach ($update->update_log as $log)
  • {{ __($log) }}
  • @endforeach
@empty
empty
@lang('No update log found yet!')
@endforelse
@endsection @push('style') @endpush @extends('admin.layouts.app') @section('panel')
@if ($user->activePlan)
@else
@endif
@if ($user->status == Status::USER_ACTIVE) @else @endif
@lang('Information of') {{ $user->fullname }}
@csrf
+{{ $user->dial_code }}
ev) checked @endif>
sv) checked @endif>
@endsection @push('breadcrumb-plugins') @lang('Login as User') @endpush @push('script') @endpush @extends('admin.layouts.app') @section('panel')
@forelse($users as $user) @empty @endforelse
@lang('User') @lang('Email-Mobile') @lang('Country') @lang('Joined At') @lang('Balance') @lang('Action')
{{$user->fullname}}
@{{ $user->username }}
{{ $user->email }}
{{ $user->mobileNumber }}
{{ $user->country_code }} {{ showDateTime($user->created_at) }}
{{ diffForHumans($user->created_at) }}
{{ showAmount($user->balance) }}
{{ __($emptyMessage) }}
@if ($users->hasPages()) @endif
@endsection @push('breadcrumb-plugins') @endpush @extends('admin.layouts.app') @section('panel') @php $sessionData = session('SEND_NOTIFICATION') ?? []; $viaName = $sessionData['via'] ?? 'email'; $viaText = @$sessionData['via'] == 'push' ? 'Push notification ' : ucfirst($viaName); @endphp @empty(!$sessionData)
{{ @$sessionData['cooling_time'] }}

@lang("$viaText will be sent again with a") @lang(' second delay. Avoid closing or refreshing the browser.')

@lang(' ' . @$sessionData['total_sent'] . ' out of ' . @$sessionData['total_user'] . ' ' . $viaName . ' were successfully transmitted')

@endempty
@csrf
@if (gs('en'))
@lang('Send Via Email')
@endif @if (gs('sn'))
@lang('Send Via SMS')
@endif @if (gs('pn'))
@lang('Send Via Firebase')
@endif
0 @lang('active users found to send the notification')
@lang('Supported Files'):@lang('.png, .jpg, .jpeg')
@lang('User')
@lang('Seconds')
@endsection @push('script') @endpush @push('style') @endpush @extends('admin.layouts.app') @section('panel')
@csrf
@if (gs('en'))
@lang('Send Via Email')
@endif @if (gs('sn'))
@lang('Send Via SMS')
@endif @if (gs('pn'))
@lang('Send Via Firebase')
@endif
@lang('Supported Files'):@lang('.png, .jpg, .jpeg')
@endsection @push('script') @endpush @props(['route' => '']) @lang('Back') {{-- Breadcrumb Navigation Component --}} @props(['items' => [], 'separator' => 'slash', 'variant' => 'default', 'showHome' => true]) @props(['listing']) @php $statusInfo = getBusinessStatusBadge($listing); $reviews = getReviewsStats($listing); if ($listing->display_image) { $imagePath = getFilePath('listing') . '/' . $listing->display_image; $imageSrc = getImage($imagePath, getFileSize('listing')); } else { $imageSrc = route('placeholder.image', '400x280'); } $rating = $reviews['average'] ?? 0; $reviewCount = $reviews['total'] ?? 0; $isOpenNow = $statusInfo['status'] === 'open'; $hoursDisplay = $statusInfo['label'] ?? 'Sem info'; @endphp
{{ $listing->title }} {{ $isOpenNow ? 'Aberto' : 'Fechado' }} @if($rating > 0) {{ number_format($rating, 1) }} @endif

{{ $listing->title }}

{{ $listing->category?->name ?? 'Sem categoria' }}

{{ $listing->city?->name ?? 'Local' }}
{{ $hoursDisplay }}
@if($reviewCount > 0)

{{ $reviewCount }} avaliação{{ $reviewCount != 1 ? 's' : '' }}

@endif
@if (!empty($listing->phone)) Ligar @endif @if (!empty($listing->phone)) WhatsApp @endif
Ver Perfil Completo
{{-- Business CTA Component - Call, WhatsApp, Directions --}} @props(['listing']) @php $ctas = getBusinessCTAs($listing); @endphp
@if (!empty($ctas['phone']['href'])) {{ $ctas['phone']['label'] }} @endif @if (!empty($ctas['whatsapp']['href']) && ($ctas['whatsapp']['show'] ?? true)) {{ $ctas['whatsapp']['label'] }} @endif @if (!empty($ctas['route']['href']) && ($ctas['route']['show'] ?? true)) {{ $ctas['route']['label'] }} @endif @if (!empty($ctas['website']['href']) && ($ctas['website']['show'] ?? true)) {{ $ctas['website']['label'] }} @endif
@if (!empty($ctas['phone']['href'])) @endif @if (!empty($ctas['whatsapp']['href']) && ($ctas['whatsapp']['show'] ?? true)) @endif @if (!empty($ctas['route']['href']) && ($ctas['route']['show'] ?? true)) @endif
{{-- Business Dashboard Component --}} @props(['listing', 'initialPeriod' => 30])
{{-- Header --}}

📊 Dashboard de Performance

{{ $listing->title }}

{{-- KPI Cards --}}
{{-- Views --}}
👁

Visualizações

-

-

{{-- CTAs --}}
📱

Cliques em CTA

-

-

{{-- Conversion --}}
🎯

Taxa de Conversão

-

-

{{-- Rating --}}

Avaliação Média

-

-

{{-- Main Content --}}
{{-- Left Column: Charts & Performance --}}
{{-- Performance Charts --}}
📈 Performance por Período
{{-- CTA Distribution --}}
📊 Distribuição de CTAs
{{-- Right Column: Recommendations & Reviews --}}
{{-- Recommendations --}}
💡 Sugestões de Otimização
Carregando...
{{-- Reviews Stats --}}
📝 Avaliações
Carregando...
{{-- Competitors Section --}}
🏆 Como você se compara
Carregando...
{{-- Schema LocalBusiness JSON-LD Component - SEO Local --}} @props(['listing']) {{-- Breadcrumb Schema --}} {{-- Organization Schema (for brand/company) --}} {{-- Business Status Badge Component - Open/Closed Status --}} @props(['listing']) @php $status = getBusinessStatusBadge($listing); @endphp
{{ $status['icon'] }} {{ $status['label'] }} @if ($status['status'] === 'open' && isset($status['minutes_until_close'])) ({{ $status['minutes_until_close'] }} min) @endif
@props(['isFrontend' => false]) @push('script') @endpush {{-- CTA Analytics Dashboard Component --}} @props(['listing', 'days' => 30]) @php $analytics = getCTAAnalytics($listing->id, $days); if (!$analytics) { $analytics = null; } @endphp
{{-- Header --}}

@lang('CTA Performance')

{{ __($listing->title) }}
@if (!$analytics)
@lang('No CTA data available yet. CTAs will be tracked once users start interacting with them.')
@else {{-- Summary Cards --}}
@lang('Total Clicks')

{{ $analytics['total'] ?? 0 }}

{{ $analytics['period_days'] }} @lang('days')
@lang('Avg Distance')

@if($analytics['average_distance']) {{ number_format($analytics['average_distance'], 1) }} km @else @lang('N/A') @endif

@lang('from users')
@lang('Most Used')

@php $byType = $analytics['by_type'] ?? []; $mostUsed = array_key_first($byType) ?? 'N/A'; $icons = ['call' => '📞', 'whatsapp' => '💬', 'route' => '📍', 'website' => '🌐']; @endphp {{ $icons[$mostUsed] ?? '❓' }}

{{ ucfirst($mostUsed) }}
@lang('Main Device')

@php $byDevice = $analytics['top_devices'] ?? []; $mainDevice = array_key_first($byDevice) ?? 'N/A'; $deviceIcons = ['mobile' => '📱', 'tablet' => '📱', 'desktop' => '🖥️']; @endphp {{ $deviceIcons[$mainDevice] ?? '❓' }}

{{ ucfirst($mainDevice) }}
{{-- Charts/Stats Section --}}
{{-- By Type --}}
@lang('Clicks by CTA Type')
@php $byType = $analytics['by_type'] ?? []; $totalClicks = array_sum($byType); $icons = ['call' => '📞', 'whatsapp' => '💬', 'route' => '📍', 'website' => '🌐']; @endphp @forelse($byType as $type => $count)
{{ $icons[$type] ?? '❓' }} {{ ucfirst($type) }} {{ $count }}
{{ $totalClicks > 0 ? round(($count / $totalClicks) * 100) : 0 }}%
@empty

@lang('No data')

@endforelse
{{-- By Device --}}
@lang('Clicks by Device')
@php $byDevice = $analytics['by_device'] ?? []; $totalDevices = array_sum($byDevice); $deviceIcons = ['mobile' => '📱', 'tablet' => '📱', 'desktop' => '🖥️']; @endphp @forelse($byDevice as $device => $count)
{{ $deviceIcons[$device] ?? '❓' }} {{ ucfirst($device) }} {{ $count }}
{{ $totalDevices > 0 ? round(($count / $totalDevices) * 100) : 0 }}%
@empty

@lang('No data')

@endforelse
{{-- Daily Breakdown --}} @if(($analytics['by_date'] ?? []))
@lang('Daily Breakdown')
@php $dates = $analytics['by_date'] ?? []; $dateArray = array_slice(array_reverse($dates, true), 0, 7); @endphp @forelse($dateArray as $date => $count) @empty @endforelse
@lang('Date') @lang('Clicks') @lang('Trend')
{{ \Carbon\Carbon::parse($date)->format('M d, Y') }} {{ $count }} @if($count > 5) 📈 High activity @elseif($count > 0) → Normal @else 📉 No activity @endif
@lang('No daily data')
@endif {{-- Insights --}}
💡 @lang('Quick Insights')
    @php $byType = $analytics['by_type'] ?? []; $mostUsed = array_key_first($byType) ?? null; $byDevice = $analytics['by_device'] ?? []; $mainDevice = array_key_first($byDevice) ?? null; @endphp @if($mostUsed)
  • @lang('Most used CTA'): {{ ucfirst($mostUsed) }} ({{ ($byType[$mostUsed] ?? 0) }} clicks)
  • @endif @if($mainDevice)
  • @lang('Primary device'): {{ ucfirst($mainDevice) }}
  • @endif @if(($analytics['average_distance'] ?? 0) > 0)
  • @lang('Average user distance'): {{ number_format($analytics['average_distance'], 1) }} km
  • @endif
  • @lang('Data period'): Last {{ $analytics['period_days'] }} days
@endif
{{-- Prominent CTA Section Component --}} @props([ 'title' => 'Não perca esta oportunidade', 'description' => 'Conecte com os melhores serviços perto de você', 'buttonText' => 'Começar Agora', 'buttonUrl' => '#', 'icon' => '🚀', 'urgency' => null, 'showTrustIndicators' => false, 'trustIndicators' => [] ])
{{-- Icon (optional) --}} @if ($icon)
{{ $icon }}
@endif {{-- Title --}}

{{ $title }}

{{-- Description --}}

{{ $description }}

{{-- Urgency Message --}} @if ($urgency)
{{ $urgency }}
@endif {{-- Primary Button --}} {{ $buttonText }} {{-- Trust Indicators --}} @if ($showTrustIndicators && !empty($trustIndicators))
@foreach ($trustIndicators as $indicator)
{{ $indicator['icon'] ?? '✓' }} {{ $indicator['text'] ?? '' }}
@endforeach
@endif {{-- Slot Content --}} @if ($slot->isNotEmpty())
{{ $slot }}
@endif
{{-- Empty State Component --}} @props([ 'icon' => '📭', 'title' => 'Nenhum resultado encontrado', 'description' => 'Tente ajustar seus filtros ou buscar novamente', 'actions' => [], 'type' => 'default', 'animated' => true, 'suggestions' => [] ])
{{-- Icon --}}
{!! $icon !!}
{{-- Title --}}

{{ $title }}

{{-- Description --}}

{{ $description }}

{{-- Actions --}} @if (!empty($actions))
@foreach ($actions as $action) {{ $action['label'] ?? 'Ação' }} @endforeach
@endif {{-- Suggestions --}} @if (!empty($suggestions))

{{ __('Try these suggestions:') }}

@endif {{-- Slot Content (if provided) --}} @if ($slot->isNotEmpty())
{{ $slot }}
@endif
{{-- Featured Listing Card Component - For Highlighted Listings --}} @props(['listing', 'showRating' => true]) @php $status = getBusinessStatusBadge($listing); $reviews = getReviewsStats($listing); if ($listing->display_image) { $imagePath = getFilePath('listing') . '/' . $listing->display_image; $imageSrc = getImage($imagePath, getFileSize('listing')); } else { $imageSrc = route('placeholder.image', '775x450'); } @endphp @push('script-lib') @endpush @props(['form' => null])
@if ($form) @foreach ($form->form_data as $formData)
@php $jsonData = json_encode([ 'type' => $formData->type, 'is_required' => $formData->is_required, 'instruction' => @$formData->instruction, 'label' => $formData->name, 'extensions' => explode(',', $formData->extensions) ?? 'null', 'options' => $formData->options, 'width' => @$formData->width, 'old_id' => '', ]); @endphp

@lang('Name')

{{ __(@$formData->name) }}

@lang('Type')

{{ __(ucfirst($formData->type)) }}

@lang('Width')

@if (@$formData->width == '12') @lang('100%') @elseif(@$formData->width == '6') @lang('50%') @elseif(@$formData->width == '4') @lang('33%') @elseif(@$formData->width == '3') @lang('25%') @else - @endif

@if ($formData->is_required == 'required') @lang('Required') @else @lang('Optional') @endif

@endforeach @endif
@push('style') @endpush @push('script-lib') @endpush @push('script') @endpush {{-- Google Sync Dashboard Component --}} @props(['listing'])
{{-- Status Card --}}
@if($listing->googlePlace && $listing->googlePlace->synced)

✅ Sincronizado com Google

Place ID: {{ $listing->googlePlace->place_id }}

Nome: {{ $listing->googlePlace->google_name }}

Rating: ⭐ {{ number_format($listing->googlePlace->google_rating, 1) }} ({{ $listing->googlePlace->google_review_count }} avaliações)

Última sincronização: {{ $listing->googlePlace->last_synced_at?->diffForHumans() }}

🔗 Ver no Google
@else

⚠️ Não sincronizado

Conecte seu negócio ao Google Places para sincronizar dados, reviews e melhorar sua presença.

{{-- Search Results --}}
@endif
{{-- Reviews Stats --}} @if($listing->googlePlace?->googleReviews)

📊 Avaliações do Google

{{-- Rating Distribution --}}

Distribuição:

@php $reviews = $listing->googlePlace->reviews; $total = $reviews->count(); for ($i = 5; $i >= 1; $i--) { $count = $reviews->where('rating', $i)->count(); $percentage = $total > 0 ? round($count / $total * 100) : 0; @endphp
{{ str_repeat('⭐', $i) }}
{{ $count }}
@php } @endphp
{{-- Summary Stats --}}

Total: {{ $total }} avaliações

Média: ⭐ {{ number_format($reviews->avg('rating'), 1) }}

Últimas: últimos 30 dias

{{-- Recent Reviews --}}
Avaliações recentes
@foreach($listing->googlePlace->reviews->take(3) as $review)
{{ $review->author_name }}

{{ str_repeat('⭐', $review->rating) }} • {{ $review->time_published?->diffForHumans() }}

{{ $review->getPreview(200) }}

@endforeach
@endif
@props([ 'type' => null, 'image' => null, 'imagePath' => null, 'size' => null, 'name' => 'image', 'id' => 'image-upload-input1', 'accept' => '.png, .jpg, .jpeg', 'required' => true, 'darkMode'=>false ]) @php $size = $size ?? getFileSize($type); $imagePath = $imagePath ?? getImage(getFilePath($type) . '/' . $image, $size); @endphp
merge(['class' => 'image--uploader']) }}>
@lang('Supported Files:') {{ $accept }}. @if ($size) @lang('Image will be resized into') {{ $size }}@lang('px') @endif
{{-- Interactive Google Map Component --}} @props(['center' => [-23.5505, -46.6333], 'zoom' => 12, 'height' => '600px'])
{{-- Map Container --}}
{{-- Controls --}}
{{-- Category Filter --}}
{{-- City Filter --}}
{{-- View Toggle --}}
{{-- Geolocation --}}
{{-- Legend --}}
@lang('Legend')
@lang('Regular Business')
@lang('Popular Business')
@lang('Highly Rated')
{{-- Info Window Template --}}
{{-- Nearby Businesses Search Component --}} @props(['searchRadius' => 10, 'searchLimit' => 20])
{{-- Location Display --}}
@lang('Requesting location')...
{{-- Radius Filter --}}
{{ $searchRadius }} km
{{-- Search Input --}}
@lang('Search nearby businesses or press Enter to search all')
{{-- Search Results Loading --}}
@lang('Loading')
@lang('Searching nearby businesses')...
{{-- Search Results --}}
{{-- Results will be rendered here via JavaScript --}}
{{-- No Results Message --}}
@lang('No businesses found in this radius')
{{-- Error Message --}}
{{-- Pricing Card Component --}} @props([ 'plan' => [], 'price' => 0, 'period' => 'mês', 'currency' => 'R$', 'features' => [], 'buttonText' => 'Começar', 'buttonUrl' => '#', 'featured' => false, 'badge' => null, ]) {{-- Pricing FAQ Component --}} @props([ 'title' => 'Perguntas Frequentes', 'faqs' => [], ])

{{ $title }}

@forelse ($faqs as $index => $faq)
{{ $faq['answer'] ?? 'Resposta não disponível' }}
@empty
{{ __('No FAQs available') }}
@endforelse
{{-- Rating Display Component --}} @props(['rating' => 0, 'count' => 0, 'variant' => 'default', 'showCount' => true])
{{-- Stars --}}
@for ($i = 1; $i <= 5; $i++) @if ($i <= floor($rating)) @elseif ($i - 0.5 <= $rating) @else @endif @endfor
{{-- Value --}} {{ number_format($rating, 1) }} {{-- Count --}} @if ($showCount && $count > 0) ({{ $count }}) @endif
{{-- Recent Listing Card Component - For Recently Added Listings --}} @props(['listing']) @php $reviews = getReviewsStats($listing); $imageSrc = $listing->listingImages?->first()?->image ?? asset('images/placeholder.jpg'); $daysAgo = $listing->created_at->diffInDays(now()); @endphp
{{-- Image Container --}}
{{ $listing->title }} - {{ $listing->category?->name }} em {{ $listing->city?->name }} {{-- New Badge --}} @if ($daysAgo <= 7)
🆕 {{ __('New') }}
@endif
{{-- Content Container --}}
{{-- Title --}}

{{ $listing->title }}

{{-- Rating & Badge --}}
@if ($reviews['total'] > 0) @for ($i = 0; $i < floor($reviews['average']); $i++) @endfor {{ $reviews['total'] }} {{ __('Ratings') }} @else {{ __('No ratings') }} @endif
{{-- Category Badge --}}
📁 {{ $listing->category?->name ?? __('Uncategorized') }}
{{-- Footer: Category & Location + Call Button --}} {{-- Call Button --}}
{{-- Review Card Component --}} @props([ 'review', 'showVerified' => true, 'showHelpful' => true, ])
{{-- Header: Avatar + Author Info --}}
{{-- Avatar --}}
@if (isset($review->user) && $review->user->avatar) {{ $review->user->name }} @else {{ substr($review->author_name ?? 'U', 0, 1) }} @endif
{{-- Author Info --}}
{{ $review->author_name ?? 'Anonymous' }}
{{ $review->created_at->diffForHumans() }}
{{-- Rating Stars --}}
@for ($i = 0; $i < $review->rating; $i++) @endfor
{{-- Title --}} @if ($review->title)

{{ $review->title }}

@endif {{-- Review Text --}}

{{ Str::limit($review->comment, 300) }}

{{-- Footer: Helpful + Verified Badge --}}
@push('script-lib') @endpush @push('style-lib') @endpush @push('script') @endpush @props([ 'placeholder' => 'Search...', 'btn' => 'btn--primary', 'dateSearch' => 'no', 'keySearch' => 'yes', ])
@if ($keySearch == 'yes') @endif @if ($dateSearch == 'yes') @endif @props(['placeholder' => 'Search...', 'btn' => 'btn--primary'])
{{-- Skeleton Loading Card Component --}} @props(['count' => 1, 'animate' => true, 'type' => 'card'])
@for ($i = 0; $i < $count; $i++)
{{-- Image Placeholder --}}
{{-- Card Body --}}
{{-- Title --}}
{{-- Meta Info (Category + City) --}}
{{-- Text Lines (Description) --}}
{{-- CTAs --}}
{{-- Primary CTA --}}
{{-- Secondary CTAs (2 columns) --}}
{{-- Tertiary CTA --}}
@endfor
@foreach($formData as $data)
@if($data->type == 'text') is_required == 'required') required @endif > @elseif($data->type == 'url') is_required == 'required') required @endif > @elseif($data->type == 'email') is_required == 'required') required @endif > @elseif($data->type == 'datetime') is_required == 'required') required @endif > @elseif($data->type == 'date') is_required == 'required') required @endif > @elseif($data->type == 'time') is_required == 'required') required @endif > @elseif($data->type == 'number') is_required == 'required') required @endif > @elseif($data->type == 'textarea') @elseif($data->type == 'select') @elseif($data->type == 'checkbox')
@foreach($data->options as $option)
@endforeach
@elseif($data->type == 'radio')
@foreach($data->options as $option)
label)) >
@endforeach
@elseif($data->type == 'file') is_required == 'required') required @endif accept="@foreach(explode(',',$data->extensions) as $ext) .{{ $ext }}, @endforeach" >
@lang('Supported mimes'): {{ $data->extensions }}
@endif
@endforeach
@push('script') @endpush - Anúncios

Limpar

Busca Rápida

Refine sua busca

Limpar

Anúncios encontrados

20 Resultados nesta página

CenterConection Telecom Fechado

CenterConection Telecom

Telecommunications service provider

Arapoti
Fechado agora
Ver Perfil Completo
JK DISTRIBUIDORA DE DOCES Fechado

JK DISTRIBUIDORA DE DOCES

Negócios e Serviços

Arapoti
Fechado agora
Ver Perfil Completo
Paróquia São João Batista Fechado

Paróquia São João Batista

Igreja Católica

Arapoti
Fechado agora
Ver Perfil Completo
Mottanet Internet em Sengés Fechado

Mottanet Internet em Sengés

Tecnologia e Informática

Sengés
Fechado agora
Ver Perfil Completo
Agicon Contabilidade Fechado

Agicon Contabilidade

Accounting firm

Sengés
Fechado agora
Ver Perfil Completo
JL Contabilidade Fechado

JL Contabilidade

Accounting firm

Sengés
Fechado agora
Ver Perfil Completo
ESS Contabilidade Fechado

ESS Contabilidade

Accounting firm

Arapoti
Fechado agora
Ver Perfil Completo
I.P.A Contabilidade Almeida Fechado

I.P.A Contabilidade Almeida

Accounting firm

Arapoti
Fechado agora
Ver Perfil Completo
Roselma Maria Gonçalves Fechado

Roselma Maria Gonçalves

Accounting firm

Indefinido
Fechado agora
Ver Perfil Completo
Orgacon Contabilidade Fechado

Orgacon Contabilidade

Accounting firm

Arapoti
Fechado agora
Ver Perfil Completo
VMS contabilidade Fechado

VMS contabilidade

Accountant

Arapoti
Fechado agora
Ver Perfil Completo
Bes Contabilidade Fechado

Bes Contabilidade

Accountant

Arapoti
Fechado agora
Ver Perfil Completo
ESCRITORIO CONTABIL PRIME LTDA Fechado

ESCRITORIO CONTABIL PRIME LTDA

Accounting firm

Arapoti
Fechado agora
Ver Perfil Completo
Orgateca Fechado

Orgateca

Accounting firm

Arapoti
Fechado agora
Ver Perfil Completo
WAHL CONTABILIDADE Fechado

WAHL CONTABILIDADE

Accounting firm

Arapoti
Fechado agora
Ver Perfil Completo
Mottanet Fechado

Mottanet

Negócios e Serviços

Buri
Fechado agora
Ver Perfil Completo
Mottanet Internet em Sengés Fechado

Mottanet Internet em Sengés

Provedor de Internet

Sengés
Fechado agora
Ver Perfil Completo
Mottanet Internet em Itapeva Fechado

Mottanet Internet em Itapeva

Provedor de Internet

Itapeva
Fechado agora
Ver Perfil Completo

Utilizamos cookies e tecnologias semelhantes para melhorar sua experiência, personalizar conteúdo e analisar o uso do site, conforme a LGPD. Você pode gerenciar suas preferências de cookies a qualquer momento nas configurações do navegador. saiba mais