обнвлена страница с договорами, добавлены фильтры
This commit is contained in:
parent
043653df9c
commit
aa802811f1
@ -44,6 +44,7 @@ public function syncDeals(Agent $agent)
|
|||||||
$deals = json_decode($data, true);
|
$deals = json_decode($data, true);
|
||||||
foreach ($deals as $deal)
|
foreach ($deals as $deal)
|
||||||
{
|
{
|
||||||
|
$inDeal = $deal['deal'];//входящие данные по сделке
|
||||||
if (count($deal['contacts']) == 0)
|
if (count($deal['contacts']) == 0)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
@ -62,7 +63,7 @@ public function syncDeals(Agent $agent)
|
|||||||
}
|
}
|
||||||
;
|
;
|
||||||
$dealItem = false; //собственный, не из битрикса
|
$dealItem = false; //собственный, не из битрикса
|
||||||
$bitrixId = BitrixId::where('bx_id', $deal['deal']['deal_id'])
|
$bitrixId = BitrixId::where('bx_id', $inDeal['deal_id'])
|
||||||
->where('bitrixable_type', Deal::class);
|
->where('bitrixable_type', Deal::class);
|
||||||
//Загрузка сделок
|
//Загрузка сделок
|
||||||
if ($bitrixId->count() == 0)
|
if ($bitrixId->count() == 0)
|
||||||
@ -80,8 +81,6 @@ public function syncDeals(Agent $agent)
|
|||||||
$bitrixId = $bitrixId->first();
|
$bitrixId = $bitrixId->first();
|
||||||
$dealItem = Deal::find($bitrixId->bitrixable_id);
|
$dealItem = Deal::find($bitrixId->bitrixable_id);
|
||||||
}
|
}
|
||||||
;
|
|
||||||
$inDeal = $deal['deal'];//входящие данные по сделке
|
|
||||||
if ($dealItem)
|
if ($dealItem)
|
||||||
{
|
{
|
||||||
$importedCount++;
|
$importedCount++;
|
||||||
|
|||||||
16
app/Modules/Contracts/Helpers/helper.php
Normal file
16
app/Modules/Contracts/Helpers/helper.php
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
use Modules\Contracts\Models\ContractStatus;
|
||||||
|
|
||||||
|
if (!function_exists('GetContractStatuses'))
|
||||||
|
{
|
||||||
|
function GetContractStatuses()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
ContractStatus::NEW => ContractStatus::getName(ContractStatus::NEW),
|
||||||
|
ContractStatus::RESERVATION => ContractStatus::getName(ContractStatus::RESERVATION),
|
||||||
|
ContractStatus::SUCCESS => ContractStatus::getName(ContractStatus::SUCCESS),
|
||||||
|
ContractStatus::DECLINE => ContractStatus::getName(ContractStatus::DECLINE),
|
||||||
|
ContractStatus::TREATY => ContractStatus::getName(ContractStatus::TREATY),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -10,10 +10,23 @@
|
|||||||
|
|
||||||
class ContractsController extends Controller
|
class ContractsController extends Controller
|
||||||
{
|
{
|
||||||
public function index()
|
public function index(Request $request)
|
||||||
{
|
{
|
||||||
|
$mode = 'all';
|
||||||
|
$filter = [];
|
||||||
|
|
||||||
|
if ($request->exists('mode'))
|
||||||
|
{
|
||||||
|
$mode = $request->mode;
|
||||||
|
}
|
||||||
|
if ($request->exists('filter'))
|
||||||
|
{
|
||||||
|
$filter = $request->filter;
|
||||||
|
}
|
||||||
|
|
||||||
return view('contracts::index', [
|
return view('contracts::index', [
|
||||||
'status' => 'all'
|
'mode' => $mode,
|
||||||
|
'filter' => $filter
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -25,7 +38,6 @@ public function delete(Contract $contract)
|
|||||||
if ($deal->delete())
|
if ($deal->delete())
|
||||||
{
|
{
|
||||||
return back()->with('success', 'Договор был успешно удален из базы данных');
|
return back()->with('success', 'Договор был успешно удален из базы данных');
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return back()->withErrors('Не удалось корректно удалить договор и сделку. Попробуйте позже.');
|
return back()->withErrors('Не удалось корректно удалить договор и сделку. Попробуйте позже.');
|
||||||
|
|||||||
@ -15,6 +15,8 @@
|
|||||||
|
|
||||||
class ContractsTableLivewire extends Component
|
class ContractsTableLivewire extends Component
|
||||||
{
|
{
|
||||||
|
public $mode = false;
|
||||||
|
public $filter = [];
|
||||||
public function mount()
|
public function mount()
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -37,17 +39,48 @@ function getSelectingAgents()
|
|||||||
return [$agent->id];
|
return [$agent->id];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public function render()
|
|
||||||
{
|
|
||||||
|
|
||||||
|
private function getContracts()
|
||||||
|
{
|
||||||
$contracts = Contract::whereHas('deal', function ($dealSubQuery)
|
$contracts = Contract::whereHas('deal', function ($dealSubQuery)
|
||||||
{
|
{
|
||||||
$dealSubQuery->with('deals')
|
$dealSubQuery->with('deals')
|
||||||
->whereIn('agent_id', $this->getSelectingAgents());
|
->whereIn('agent_id', $this->getSelectingAgents());
|
||||||
});
|
});
|
||||||
|
$this->appendMode($contracts);
|
||||||
|
$this->appendFilter($contracts);
|
||||||
|
|
||||||
|
return $contracts->get();
|
||||||
|
}
|
||||||
|
private function appendMode(&$query)
|
||||||
|
{
|
||||||
|
if ($this->mode == 'active')
|
||||||
|
{
|
||||||
|
$query->whereIn('status', [
|
||||||
|
ContractStatus::NEW ,
|
||||||
|
ContractStatus::RESERVATION,
|
||||||
|
ContractStatus::SUCCESS,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
if ($this->mode == 'finished')
|
||||||
|
{
|
||||||
|
$query->whereIn('status', [
|
||||||
|
ContractStatus::DECLINE,
|
||||||
|
ContractStatus::TREATY
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private function appendFilter(&$query)
|
||||||
|
{
|
||||||
|
foreach ($this->filter as $fKey => $fValue)
|
||||||
|
{
|
||||||
|
$query->where($fKey, $fValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public function render()
|
||||||
|
{
|
||||||
return view('contracts::livewire.table.index', [
|
return view('contracts::livewire.table.index', [
|
||||||
'contracts' => $contracts->get(),
|
'contracts' => $this->getContracts(),
|
||||||
'statuses' => ContractStatus::class
|
'statuses' => ContractStatus::class
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,6 +23,7 @@ public function boot()
|
|||||||
$this->registerConfig();
|
$this->registerConfig();
|
||||||
$this->registerComponent();
|
$this->registerComponent();
|
||||||
$this->registerLivewire();
|
$this->registerLivewire();
|
||||||
|
$this->registerHelpers();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function registerViews()
|
protected function registerViews()
|
||||||
@ -69,4 +70,13 @@ protected function registerComponent()
|
|||||||
{
|
{
|
||||||
//Blade::component('<name>', \Modules\<NAME>\Http\Components\<NAME>::class);
|
//Blade::component('<name>', \Modules\<NAME>\Http\Components\<NAME>::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function registerHelpers()
|
||||||
|
{
|
||||||
|
$files = glob(__DIR__ . '/../Helpers/' . "*.php");
|
||||||
|
foreach ($files as $key => $file)
|
||||||
|
{
|
||||||
|
require_once $file;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
Route::middleware(['auth'])->group(function ()
|
Route::middleware(['auth'])->group(function ()
|
||||||
{
|
{
|
||||||
Route::get('/contracts', [ContractsController::class, 'index'])->name('contracts');
|
Route::any('/contracts', [ContractsController::class, 'index'])->name('contracts');
|
||||||
Route::post('/contracts/{contract}/delete', [ContractsController::class, 'delete'])->name('contract.delete');
|
Route::post('/contracts/{contract}/delete', [ContractsController::class, 'delete'])->name('contract.delete');
|
||||||
|
|
||||||
});
|
});
|
||||||
@ -1,29 +1,32 @@
|
|||||||
@extends('layouts.app')
|
@extends('layouts.app')
|
||||||
@section('content')
|
@section('content')
|
||||||
<div>
|
<form method="get" action="{{ Request::fullUrl() }}">
|
||||||
<form class="d-block d-md-flex mb-3" method="GET" action="{{ route('contracts') }}">
|
<div class="d-block d-md-flex mb-3">
|
||||||
<div class="border rounded-3 border-1 p-1 bg-white">
|
<div class="border rounded-3 border-1 p-1 bg-white">
|
||||||
<input type="radio" class="btn-check" name="status" value="active" id="option6" autocomplete="off"
|
<input type="radio" class="btn-check" name="mode" value="all" id="mode_all" autocomplete="off"
|
||||||
onclick="this.form.submit()" {{ $status == 'active' ? 'checked' : '' }}>
|
onclick="this.form.submit()" {{ $mode == 'all' ? 'checked' : '' }}>
|
||||||
<label class="btn p-2 fs-5" for="option6">Активные</label>
|
<label class="btn p-2 fs-5" for="mode_all">Все</label>
|
||||||
|
|
||||||
<input type="radio" class="btn-check" name="status" value="finished" id="option7" autocomplete="off"
|
<input type="radio" class="btn-check" name="mode" value="active" id="mode_active" autocomplete="off"
|
||||||
onclick="this.form.submit()" {{ $status == 'finished' ? 'checked' : '' }}>
|
onclick="this.form.submit()" {{ $mode == 'active' ? 'checked' : '' }}>
|
||||||
<label class="btn p-2 fs-5" for="option7">Оконченные</label>
|
<label class="btn p-2 fs-5" for="mode_active">Активные</label>
|
||||||
|
|
||||||
|
<input type="radio" class="btn-check" name="mode" value="finished" id="mode_finished"
|
||||||
|
autocomplete="off" onclick="this.form.submit()" {{ $mode == 'finished' ? 'checked' : '' }}>
|
||||||
|
<label class="btn p-2 fs-5" for="mode_finished">Оконченные</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="ms-auto hstack gap-2">
|
<div class="ms-auto hstack gap-2">
|
||||||
<button type="button" class="btn bg-white p-3 fw-bold border rounded-3 border-1" data-bs-toggle="modal"
|
<button type="button" class="lh-1 btn bg-white p-3 fw-bold border rounded-3 border-1"
|
||||||
data-bs-target="#contractFilterModal">
|
data-bs-toggle="modal" data-bs-target="#contractFilterModal">
|
||||||
Фильтр <i class="bi bi-person-plus"></i>
|
Фильтр
|
||||||
|
<span class="position-relative">
|
||||||
|
<i class="bi bi-person-plus"></i>
|
||||||
|
@if ($filter)
|
||||||
|
<span class="notices-badge animation-blink"></span>
|
||||||
|
@endif
|
||||||
|
</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
@livewire('contracts.table')
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Modal -->
|
<!-- Modal -->
|
||||||
<div class="modal fade" id="contractFilterModal" tabindex="-1" aria-labelledby="contractFilterModalLabel"
|
<div class="modal fade" id="contractFilterModal" tabindex="-1" aria-labelledby="contractFilterModalLabel"
|
||||||
aria-hidden="true">
|
aria-hidden="true">
|
||||||
@ -34,6 +37,14 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-body" style="">
|
<div class="modal-body" style="">
|
||||||
|
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="statusFilter" class="form-label">Статус</label>
|
||||||
|
<select class="form-select" name="filter[status]" id="statusFilter">
|
||||||
|
@foreach ($statuses = GetContractStatuses() as $key => $status)
|
||||||
|
<option value="{{ $key }}">{{ $status }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Отмена</button>
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Отмена</button>
|
||||||
@ -42,4 +53,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<div>
|
||||||
|
@livewire('contracts.table', [
|
||||||
|
'mode' => $mode,
|
||||||
|
'filter' => $filter,
|
||||||
|
])
|
||||||
|
</div>
|
||||||
@endsection
|
@endsection
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user