117 lines
3.6 KiB
PHP
117 lines
3.6 KiB
PHP
<?php
|
|
|
|
namespace App\Livewire;
|
|
|
|
use Livewire\Component;
|
|
use Livewire\WithPagination;
|
|
use Livewire\WithoutUrlPagination;
|
|
|
|
use App\Models\User;
|
|
use App\Models\Agent\Agent;
|
|
use App\Models\Company\CompanyAdmin;
|
|
use App\Models\Deal\Deal;
|
|
use App\Models\Deal\DealStatus;
|
|
use App\Models\Deal\Client;
|
|
class ClientsTable extends Component
|
|
{
|
|
use WithPagination, WithoutUrlPagination;
|
|
|
|
public $status;
|
|
public $count;
|
|
public $mode;//short || full
|
|
|
|
public function mount($status = null, $count = 10, $mode = 'full')
|
|
{
|
|
$this->status = $status;
|
|
$this->count = $count;
|
|
$this->mode = $mode;
|
|
}
|
|
|
|
public function getDeals()
|
|
{
|
|
$deals = false;
|
|
$user = auth()->user();
|
|
|
|
$clients = false;
|
|
|
|
if ($admin = CompanyAdmin::where('user_id', $user->id)->first())
|
|
{
|
|
/*$deals = Deal::whereIn('agent_id', function ($query) use ($admin)
|
|
{
|
|
$query->select('id');
|
|
$query->from('agents');
|
|
$query->where('company_id', $admin->company_id);
|
|
});*/
|
|
$agentsOfCompany = Agent::where('company_id', $admin->company_id)->get()->pluck('id');
|
|
$clients = Client::whereIn('id', function ($query) use ($agentsOfCompany)
|
|
{
|
|
$query->select('client_id')
|
|
->from('deals')
|
|
->whereIn('agent_id', $agentsOfCompany);
|
|
});
|
|
}
|
|
elseif ($agent = Agent::where('user_id', $user->id)->first())
|
|
{
|
|
//$deals = Deal::where('agent_id', $agent->id);
|
|
|
|
$clients = Client::whereIn('id', function ($query) use ($agent)
|
|
{
|
|
$query->select('client_id')
|
|
->from('deals')
|
|
->where('agent_id', $agent->id);
|
|
|
|
});
|
|
}
|
|
$clients = $clients->orderBy('name');
|
|
return $clients;
|
|
}
|
|
public function render()
|
|
{
|
|
$clients = $this->getDeals();
|
|
if ($this->status && $this->status == DealStatus::UNIQUE)
|
|
{
|
|
/*$deals = $deals
|
|
->whereIn('status', [DealStatus::UNIQUE])
|
|
->orderBy('id', 'desc')->paginate($this->count, ['*'], 'unique_clients');*/
|
|
$clients = $clients->whereHas('deals', function ($query)
|
|
{
|
|
$query->where('status', DealStatus::UNIQUE);
|
|
})->paginate($this->count, ['*'], 'unique_clients');
|
|
|
|
|
|
}
|
|
elseif ($this->status && $this->status == DealStatus::NOT_UNIQUE)
|
|
{
|
|
/*$deals = $deals
|
|
->whereIn('status', [DealStatus::MODERATION, DealStatus::NEW , DealStatus::NOT_UNIQUE])
|
|
->orderBy('id', 'desc')->paginate($this->count, ['*'], 'not_unique_clients');*/
|
|
$clients = $clients->whereHas('deals', function ($query)
|
|
{
|
|
$query->whereIn('status', [DealStatus::MODERATION, DealStatus::NEW , DealStatus::NOT_UNIQUE]);
|
|
})->paginate($this->count, ['*'], 'not_unique_clients');
|
|
}
|
|
else
|
|
{
|
|
/*$deals = $deals->orderBy('id', 'desc')->paginate($this->count, ['*'], 'all_clients');*/
|
|
$clients = $clients->paginate($this->count, ['*'], 'all_clients');
|
|
}
|
|
return view(
|
|
'livewire.clients-table',
|
|
[
|
|
'clients' => $clients,
|
|
'statuses' => DealStatus::class
|
|
]
|
|
);
|
|
}
|
|
function getClients()
|
|
{
|
|
/*$clients = User::whereIn('id', function ($query)
|
|
{
|
|
|
|
});*/
|
|
$clients = false;
|
|
//$clients = Client::ofAgent();
|
|
return $clients;
|
|
}
|
|
}
|