File: //var/www/quadcode/resources/views/dashboard.blade.php
<?php
use App\Models\ActiveCampaignList;
use App\Models\BitrixAcSyncSetting;
use App\Models\BitrixStatuses;
use Illuminate\Database\Eloquent\Collection;
/**
* @var array $skipIds
* @var Collection|BitrixAcSyncSetting[] $bitrixAcSyncSettings
* @var array $entitiesMap
* @var Collection|ActiveCampaignList[] $activeCampaignList
* @var Collection|BitrixStatuses[] $bitrixStatuses
*/
$error = session()->get('error');
$message = session()->get('message');
$log = session()->get('log');
?>
@push('head')
<!-- Scripts -->
@vite(['resources/js/settings.js'])
@endpush
<x-app-layout>
<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{ __('Dashboard') }}
</h2>
</x-slot>
@if (!empty($message))
<div class="pt-6">
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
<div class="p-4 text-sm text-green-800 rounded-lg bg-green-50 " role="alert">
<span class="font-medium">{{ $message }}</span>
@if (!empty($log))
<br>
{!! join('<br>',$log) !!}
@endif
</div>
</div>
</div>
@endif
@if (!empty($error))
<div class="pt-6">
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
<div class="p-4 text-sm text-red-800 rounded-lg bg-red-50 " role="alert">
<span class="font-medium">{{ $error }}</span>
</div>
</div>
</div>
@endif
<div class="pt-6 max-w-7xl mx-auto sm:px-6 lg:px-8 flex justify-end gap-3">
<a href="{{ route('sync.statuses') }}" class="btn {{ empty($bitrixStatuses) ? 'btn-red' : 'btn-blue' }}"><span>Sync Bitrix statuses</span></a>
<a href="{{ route('sync.lists') }}" class="btn {{ empty($activeCampaignList) ? 'btn-red' : 'btn-blue' }}"><span>Sync AC lists</span></a>
</div>
<div class="pt-6 max-w-7xl mx-auto sm:px-6 lg:px-8">
<div class="bg-white overflow-hidden shadow-sm sm:rounded-lg">
<div class="bg-white overflow-hidden shadow-sm sm:rounded-lg">
<div class="p-6 bg-white border-b border-gray-200">
<form action="{{ route('dashboard') }}">
<div class="flex align-items-center gap-x-2">
<select id="entityId" name="entity_id" class="select w-[130px]">
<option value="">Select entity</option>
@foreach ($entitiesMap as $entityId => $entityName)
<option value="{{ $entityId }}">{{ $entityName }}</option>
@endforeach
</select>
<select id="bitrixStatus" name="bitrix_status" class="select w-[210px] hidden">
<option value="">Select status</option>
@foreach ($bitrixStatuses as $entityId => $statuses)
@foreach ($statuses as $statusId => $status)
@if (in_array($status['id'],$skipIds))
@continue
@endif
<option value="{{ $statusId }}" class="filter-{{ $entityId }} hidden">{{ $status['name'] }}</option>
@endforeach
@endforeach
</select>
<select id="listId" name="list_id" class="select w-[250px]">
<option value="">Select list</option>
@foreach ($activeCampaignList as $listId => $list)
<option value="{{ $listId }}">{{ $list['name'] }}</option>
@endforeach
</select>
<div class="flex">
<div class="flex items-center me-4">
<input id="withUnsubscribe" type="checkbox" value="1" class="checkbox">
<label for="withUnsubscribe" class="ms-2 text-sm font-medium text-gray-900 ">Unsubscribe deleted</label>
</div>
</div>
<a id="createSync" class="btn btn-blue ml-auto disabled"><span>Create</span></a>
</div>
</form>
<p id="leadInfo" class="pt-3 text-gray-500 text-xs hidden">Data from Bitrix leads is retrieved for the last 2 weeks of lead activity</p>
<div id="createResultText" class="p-4 mt-4 text-sm text-blue-800 rounded-lg bg-blue-50" role="alert">
<p class="pt-3 text-gray-600 text-xs hidden"></p>
</div>
</div>
</div>
</div>
</div>
<div class="pt-6 max-w-7xl mx-auto sm:px-6 lg:px-8">
<div class="bg-white overflow-hidden shadow-sm sm:rounded-lg">
<table class="min-w-full table">
<thead class="border-b">
<tr>
<th class="dashboard-cell dashboard-header-cell">Entity ID</th>
<th class="dashboard-cell dashboard-header-cell">Birix status</th>
<th class="dashboard-cell dashboard-header-cell">AC list ID</th>
<th class="dashboard-cell dashboard-header-cell">Unsubscribe deleted</th>
<th class="dashboard-cell dashboard-header-cell">Last sync at</th>
<th class="dashboard-cell dashboard-header-cell">Last updated count</th>
<th class="dashboard-cell dashboard-header-cell">Actions</th>
</tr>
</thead>
<tbody>
@foreach ($bitrixAcSyncSettings as $bitrixAcSyncSetting)
@php
$bitrixStatusName = $bitrixStatuses[$bitrixAcSyncSetting->entity_id][$bitrixAcSyncSetting->bitrix_status]['name'] ?? null;
$activeCampaignListName = $activeCampaignList[$bitrixAcSyncSetting->active_campaign_list_id]['name'] ?? null;
$select = is_null($bitrixStatusName) || is_null($activeCampaignListName) ? ' error' : '';
@endphp
<tr class="table-row{{ $select }}">
<td class="dashboard-cell dashboard-content-cell">{{ $entitiesMap[$bitrixAcSyncSetting->entity_id] }}</td>
<td class="dashboard-cell dashboard-content-cell">{!! $bitrixStatusName ?? 'Undefined<br><span class="text-gray-600 text-xs">need sync statuses or delete</span>' !!}</td>
<td class="dashboard-cell dashboard-content-cell">{!! $activeCampaignListName ?? 'Undefined<br><span class="text-gray-600 text-xs">need sync lists or delete</span>' !!}</td>
<td class="dashboard-cell dashboard-content-cell">{{ $bitrixAcSyncSetting->with_unsubscribe ? 'Yes' : 'No' }}</td>
<td class="dashboard-cell dashboard-content-cell">{{ $bitrixAcSyncSetting->last_sync_at }}</td>
<td class="dashboard-cell dashboard-content-cell text-center">{{ $bitrixAcSyncSetting->last_updated_count }}</td>
<td class="dashboard-cell dashboard-content-cell">
<a class="js-delete-row font-medium text-blue-600 hover:underline" href="{{ route('sync.delete', ['bitrixAcSyncSetting' => $bitrixAcSyncSetting->id]) }}"><span>Delete</span></a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</x-app-layout>