diff --git a/app/Livewire/ClientsTable.php b/app/Livewire/ClientsTable.php index 5fdcbfa..3a02df4 100644 --- a/app/Livewire/ClientsTable.php +++ b/app/Livewire/ClientsTable.php @@ -6,12 +6,12 @@ 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; @@ -32,48 +32,85 @@ 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) + /*$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); + //$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); + + }); } - return $deals; + $clients = $clients->orderBy('name'); + return $clients; } public function render() { - $deals = $this->getDeals(); + $clients = $this->getDeals(); if ($this->status && $this->status == DealStatus::UNIQUE) { - $deals = $deals + /*$deals = $deals ->whereIn('status', [DealStatus::UNIQUE]) - ->orderBy('id', 'desc')->paginate($this->count, ['*'], 'unique_clients'); + ->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 + /*$deals = $deals ->whereIn('status', [DealStatus::MODERATION, DealStatus::NEW , DealStatus::NOT_UNIQUE]) - ->orderBy('id', 'desc')->paginate($this->count, ['*'], 'not_unique_clients'); + ->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'); + /*$deals = $deals->orderBy('id', 'desc')->paginate($this->count, ['*'], 'all_clients');*/ + $clients = $clients->paginate($this->count, ['*'], 'all_clients'); } - ; - return view( 'livewire.clients-table', [ - 'deals' => $deals, + 'clients' => $clients, 'statuses' => DealStatus::class ] ); } + function getClients() + { + /*$clients = User::whereIn('id', function ($query) + { + + });*/ + $clients = false; + //$clients = Client::ofAgent(); + return $clients; + } } diff --git a/app/Models/Deal/Client.php b/app/Models/Deal/Client.php new file mode 100644 index 0000000..52c7727 --- /dev/null +++ b/app/Models/Deal/Client.php @@ -0,0 +1,30 @@ +hasMany(Deal::class, 'client_id'); + } + + public function dealsWithContracts() + { + return $this->hasMany(Deal::class, 'client_id')->whereHas('contracts'); + } + public function ofAgent(Agent $agent) + { + return $this->deals->where('agent_id', $agent->id); + } +} diff --git a/app/Modules/Contracts/Http/Controllers/ContractsController.php b/app/Modules/Contracts/Http/Controllers/ContractsController.php index 0b663ac..ab3b12a 100644 --- a/app/Modules/Contracts/Http/Controllers/ContractsController.php +++ b/app/Modules/Contracts/Http/Controllers/ContractsController.php @@ -24,7 +24,6 @@ public function index(Request $request) { $filter = $request->filter; } - return view('contracts::index', [ 'mode' => $mode, 'filter' => $filter diff --git a/app/Modules/Contracts/Views/index.blade.php b/app/Modules/Contracts/Views/index.blade.php index c0c885a..9745416 100644 --- a/app/Modules/Contracts/Views/index.blade.php +++ b/app/Modules/Contracts/Views/index.blade.php @@ -3,6 +3,21 @@