183 lines
13 KiB
PHP
183 lines
13 KiB
PHP
<div class="position-relative">
|
||
<div wire:loading.class.remove="d-none"
|
||
class="d-none d-flex position-absolute w-100 h-100 top-0 start-0 align-items-center justify-content-center rounded-4"
|
||
style="background-color:#ffffffb5">
|
||
<div class="spinner-border text-secondary" style="width: 3rem; height: 3rem;" role="status">
|
||
<span class="visually-hidden">Loading...</span>
|
||
</div>
|
||
</div>
|
||
<div class="fs-5 bg-light p-0 m-0 border border-1 rounded-4 overflow-hidden">
|
||
@if ($clients->count() == 0)
|
||
<div class="text-center py-5">Нет данных для отображения</div>
|
||
@endif
|
||
<table class="m-0 @if($clients->count() == 0) d-none @endif table table-striped table-hover">
|
||
@if ($mode == 'full')
|
||
<thead>
|
||
<tr class="d-none d-lg-table-row" scope="col">
|
||
<th>Клиент
|
||
<th>ЖК
|
||
@if (auth()->user()->isCityManager())
|
||
<th>Агентства
|
||
<th>Агенты
|
||
@endif
|
||
<th>
|
||
</tr>
|
||
</thead>
|
||
@endif
|
||
<tbody>
|
||
@foreach ($clients as $client)
|
||
<?php
|
||
$complexesNames = [];
|
||
$companiesNames = [];
|
||
$agentsNames = [];
|
||
$filterRow = [];
|
||
$clientDeals = $client->deals();
|
||
if (array_key_exists('status', $filter)) {
|
||
$clientDeals->where('status', $filter['status']);
|
||
}
|
||
|
||
if (array_key_exists('complexes', $filter)) {
|
||
$complexes = [];
|
||
foreach ($filter['complexes'] as $selectedComplex) {
|
||
$complexes[] = $selectedComplex['id'];
|
||
}
|
||
$clientDeals->whereIn('complex_id', $complexes);
|
||
}
|
||
//echo 'cId:' . $client->id;
|
||
foreach ($clientDeals->get() as $deal) {
|
||
//echo 'dId:' . $deal->id;
|
||
$filterRow[] = 'filter[deal_id][]=' . $deal->id;
|
||
$complexesNames[] = ''
|
||
. $deal->complex?->name
|
||
. (($deal->unique_until) ? '<span class="ms-1" title="Срок уникальности истечет ' . \Carbon\Carbon::parse($deal->unique_until)->format('d.m.Y') . '">' . '<i class="bi bi-info-circle-fill"></i>' . '</span>' : '')
|
||
. '';
|
||
$companiesNames[] = $deal->agent?->company?->name;
|
||
$agentsNames[] = $deal->agent?->user?->name;
|
||
}
|
||
$filterRow = implode('&', $filterRow);
|
||
$complexesNames = array_unique($complexesNames);
|
||
$companiesNames = array_unique($companiesNames);
|
||
$companiesNames = implode('<br>', $companiesNames);
|
||
$agentsNames = array_unique($agentsNames);
|
||
$agentsNames = implode('<br>', $agentsNames);
|
||
$dealsWithContracts = $client->deals()->whereHas('contract');
|
||
?>
|
||
<tr class="d-flex d-lg-table-row flex-column flex-md-row my-4 my-lg-0" scope="row">
|
||
@if ($mode == 'full')
|
||
<td class="align-middle d-flex flex-column d-lg-table-cell">
|
||
{{ $client->name }}
|
||
<div class="fw-bold text-nowrap">{{ $client->phone }}</div>
|
||
@if (env('APP_DEBUG'))
|
||
<div class="d-none">
|
||
@foreach($client->deals as $deal)
|
||
<div class="text-secondary fs-6 fw-light">Bitrix ID: {{ $deal->bitrixId() }} </div>
|
||
@endforeach
|
||
</div>
|
||
@endif
|
||
</td>
|
||
<td class="d-block d-lg-table-cell">
|
||
<span class="d-block d-md-none fs-6 text-secondary">Жилой комплекс</span>
|
||
@if(count($complexesNames) > 1)
|
||
<div class="d-flex align-items-center gap-1 table_complexes_complexes_main text-nowrap">
|
||
<span>{!! $complexesNames[0] !!}<span>
|
||
<span>+</span>
|
||
<span class="d-flex justify-content-center align-items-center text-center bg-secondary rounded-circle text-light"
|
||
style="font-size: .7rem;width:1.3rem;height:1.3rem;cursor:pointer"
|
||
title="{{ implode(', ', $complexesNames) }}">{{ count($complexesNames) - 1 }}</span>
|
||
</div>
|
||
@endif
|
||
</td>
|
||
@if (auth()->user()->isCityManager())
|
||
<td class="d-block d-lg-table-cell">
|
||
<span class="d-block d-md-none fs-6 text-secondary">Агентство</span>
|
||
{!! $companiesNames !!}
|
||
</td>
|
||
<td class="d-block d-lg-table-cell">
|
||
<span class="d-block d-md-none fs-6 text-secondary">Агент</span>
|
||
{!! $agentsNames !!}
|
||
</td>
|
||
@endif
|
||
<td>
|
||
@php($contractRoute = "")
|
||
@if ($dealsWithContracts->count() == 1)
|
||
@php($contractRoute = route('contract', ['contract' => $dealsWithContracts->first()->contract]))
|
||
@elseif($dealsWithContracts->count() > 1)
|
||
@php($contractRoute = route('contracts', [$filterRow]))
|
||
@endif
|
||
|
||
<div class="d-block d-md-none text-end fs-6">
|
||
<a class="icon-link icon-link-hover text-decoration-none w-100" style="--bs-link-hover-color-rgb: 25, 135, 84;"
|
||
href="{{ $contractRoute }}">
|
||
Перейти к сделке
|
||
<svg xmlns="http://www.w3.org/2000/svg" class="bi" viewBox="0 0 16 16"
|
||
aria-hidden="true">
|
||
<path
|
||
d="M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8z" />
|
||
</svg>
|
||
</a>
|
||
</div>
|
||
<div class="d-none d-md-block" style="">
|
||
<a target="_blank" href="{{ $contractRoute }}"
|
||
class="icon-link icon-link-hover text-decoration-none w-100">
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" fill="currentColor"
|
||
class="bi bi-arrow-right" viewBox="0 0 16 16">
|
||
<path fill-rule="evenodd"
|
||
d="M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8" />
|
||
</svg>
|
||
</a>
|
||
</div>
|
||
</td>
|
||
@else
|
||
<td class="align-middle d-flex flex-column d-lg-table-cell">
|
||
@if ($dealsWithContracts->count() == 1)
|
||
<a target="_blank"
|
||
href="{{ route('contract', ['contract' => $dealsWithContracts->first()->contract]) }}"
|
||
class="icon-link icon-link-hover text-decoration-none w-100 justify-content-between">
|
||
{{ $client->name }}
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" fill="currentColor"
|
||
class="bi bi-file-earmark-text" viewBox="0 0 16 16">
|
||
<path
|
||
d="M5.5 7a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1zM5 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5" />
|
||
<path
|
||
d="M9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.5zm0 1v2A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1z" />
|
||
</svg>
|
||
</a>
|
||
@elseif($dealsWithContracts->count() > 1)
|
||
<a target="_blank" href="{{ route('contracts', [$filterRow]) }}"
|
||
class="icon-link icon-link-hover text-decoration-none w-100 d-flex justify-content-between">
|
||
{{ $client->name }}
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" fill="currentColor"
|
||
class="bi bi-arrow-right" viewBox="0 0 16 16">
|
||
<path fill-rule="evenodd"
|
||
d="M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8" />
|
||
</svg>
|
||
</a>
|
||
@else
|
||
{{ $client->name }}
|
||
@endif
|
||
</td>
|
||
@endif
|
||
</tr>
|
||
@endforeach
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
@if($mode == 'full')
|
||
@if($clientsCount > $count)
|
||
<div class="d-flex justify-content-end mt-2">
|
||
<ul class="pagination">
|
||
<li class="d-none page-item {{ ($currentPage == 1) ? 'disabled' : ''}}" aria-label="« Назад">
|
||
<span class="page-link" aria-hidden="true">‹</span>
|
||
</li>
|
||
@for($pageNum = 1; $pageNum <= $clientsCount / $count; $pageNum++)
|
||
<li wire:click="goToPage({{ $pageNum }})" class="page-item {{ ($pageNum == $currentPage) ? 'active' : '' }}"
|
||
aria-current="page" style="cursor:pointer"><span class="page-link">{{ $pageNum }}</span></li>
|
||
@endfor
|
||
<li class="d-none page-item">
|
||
<a class="page-link" rel="next" aria-label="Вперед »">›</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
@endif
|
||
@endif
|
||
</div>
|