lk.zachem.info/resources/views/livewire/clients-table.blade.php

181 lines
12 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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="table_complexes_complexes_main">{!! $complexesNames[0] !!}
+ <span class="text-center d-inline-block bg-secondary rounded-circle fs-6 text-light"
style="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>