diff --git a/app/Livewire/ClientsTable.php b/app/Livewire/ClientsTable.php index 6cc7950..a48253c 100644 --- a/app/Livewire/ClientsTable.php +++ b/app/Livewire/ClientsTable.php @@ -12,6 +12,7 @@ use Modules\Main\Models\Company\CompanyAdmin; use Modules\Main\Models\Deal\Deal; use Modules\Main\Models\Deal\DealStatus; +use Modules\CityManager\Models\CityManager; use Livewire\Attributes\On; @@ -37,13 +38,21 @@ public function getDeals() $clients = false; $user = auth()->user(); - if ($admin = CompanyAdmin::where('user_id', $user->id)->first()) - { - $deals = Deal::whereIn('agent_id', function ($query) use ($admin) + if($cityManager = CityManager::where('user_id', auth()->id())->first()) { + $companies = $cityManager->city->companies->pluck('id'); + $deals = Deal::whereIn('agent_id', function ($query) use ($companies) { $query->select('id'); $query->from('agents'); - $query->where('company_id', $admin->company_id); + $query->whereIn('company_id', $companies); + }); + } + else if ($company = AdminCompanyOfUser()) { + $deals = Deal::whereIn('agent_id', function ($query) use ($company) + { + $query->select('id'); + $query->from('agents'); + $query->where('company_id', $company->id); }); } elseif ($agent = Agent::where('user_id', $user->id)->first()) @@ -53,26 +62,24 @@ public function getDeals() if (!$deals) { return Client::where('id',0); } - $deals = $deals->pluck('id'); + return $deals; + } + function getClients() + { + $deals = $this->getDeals(); $clients = Client::join('deal_clients', 'users.id', '=', 'deal_clients.client_id') ->whereIn('users.id', function ($query) use ($deals) { $query->select('client_id') ->from('deal_clients') - ->whereIn('deal_id', $deals); + ->whereIn('deal_id', $deals->get()->pluck('id')); }) ->orderBy('deal_clients.id', 'desc') ->with('deals'); ; $clients = $clients->select('users.*'); $clients = $clients->orderBy('name'); - return $clients; - } - - function getClients() - { - $clients = $this->getDeals(); if ($this->status && $this->status == DealStatus::UNIQUE) { diff --git a/app/Modules/Bitrix/Http/Controllers/BitrixApiController.php b/app/Modules/Bitrix/Http/Controllers/BitrixApiController.php index 6d2d2c2..bf4b290 100644 --- a/app/Modules/Bitrix/Http/Controllers/BitrixApiController.php +++ b/app/Modules/Bitrix/Http/Controllers/BitrixApiController.php @@ -21,22 +21,20 @@ class BitrixApiController extends Controller public const ACTION_CONFIRM_COMPANY = 'confirm_company'; public function index(Request $request) { - if ($deal = Deal::where('confirm_token', $request->hash)->first()) - { switch ( $request->action ) { case $this::ACTION_CONFIRM_DEAL: + $deal = Deal::where('confirm_token', $request->token)->first(); $this->confirmDeal($deal, $request); break; case $this::ACTION_UPDATE_CONTRACT: + $deal = Deal::where('confirm_token', $request->token)->first(); $this->updateContract($deal, $request); break; case $this::ACTION_CONFIRM_COMPANY: $this->confirmCompany($request); break; } - return true; - } return false; } @@ -48,7 +46,7 @@ public function confirmCompany(Request $request) public function confirmDeal(Deal $deal, Request $request) { $agent = $deal->agent; - if ((bool) $request->is_unique) + if ((bool) $request->is_unique == true) { $deal->status = DealStatus::UNIQUE; $agent->user->notify(new UniqueContact($deal)); diff --git a/app/Modules/Bitrix/Models/SendDeal.php b/app/Modules/Bitrix/Models/SendDeal.php index 5765908..947e12c 100644 --- a/app/Modules/Bitrix/Models/SendDeal.php +++ b/app/Modules/Bitrix/Models/SendDeal.php @@ -13,6 +13,7 @@ class SendDeal extends BitrixSender public function __construct(Deal $deal) { $this->data = [ + 'token' => $deal->confirm_token, 'complexName' => $deal->complex->name ]; } diff --git a/app/Modules/Bitrix/Providers/RouteServiceProvider.php b/app/Modules/Bitrix/Providers/RouteServiceProvider.php index 56d8a6d..fbc6a0b 100644 --- a/app/Modules/Bitrix/Providers/RouteServiceProvider.php +++ b/app/Modules/Bitrix/Providers/RouteServiceProvider.php @@ -20,5 +20,8 @@ protected function registerWebRoutes() //Set Default Controllers Namespace ->namespace('Modules\\Bitrix\\Http\\Controllers') ->group(app_path('Modules/Bitrix/Routes/web.php')); + Route::middleware('api') + ->prefix('api') + ->group(base_path('Modules/Bitrix/Routes/api.php')); } } \ No newline at end of file diff --git a/app/Modules/Bitrix/Routes/api.php b/app/Modules/Bitrix/Routes/api.php new file mode 100644 index 0000000..1dd580d --- /dev/null +++ b/app/Modules/Bitrix/Routes/api.php @@ -0,0 +1,24 @@ +get('/user', function (Request $request) +{ + return $request->user(); +}); + +Route::get('/action', [BitrixApiController::class, 'index']); diff --git a/app/Modules/Contracts/Http/Livewire/ContractsTableLivewire.php b/app/Modules/Contracts/Http/Livewire/ContractsTableLivewire.php index 83a795a..08945ea 100644 --- a/app/Modules/Contracts/Http/Livewire/ContractsTableLivewire.php +++ b/app/Modules/Contracts/Http/Livewire/ContractsTableLivewire.php @@ -8,6 +8,7 @@ use Modules\Contracts\Models\ContractStatus; use Modules\User\Models\UserRole; use Modules\User\Models\Role; +use Modules\CityManager\Models\CityManager; use Modules\Main\Models\Company\CompanyAdmin; class ContractsTableLivewire extends Component @@ -18,23 +19,25 @@ public function mount() { } + /** + * Get array of available agents ids + * @return array + */ function getSelectingAgents() { - if ( - $userRole = - UserRole::where('user_id', auth()->id()) - ->where('role_id', Role::COMPANY_ADMIN) - ->count() == 1 - ) + if($cityManager = CityManager::where('user_id', auth()->id())->first()) { + return $agentsIds = Agent::whereIn('company_id',$cityManager->city->companies->pluck('id'))->pluck('id'); + } + elseif ($company = AdminCompanyOfUser()) { $companyAdmin = CompanyAdmin::where('user_id', auth()->id())->first(); - return $agentsIds = Agent::where('company_id', $companyAdmin->company_id)->pluck('id'); + return $agentsIds = Agent::where('company_id',$company->id)->pluck('id'); } - else + elseif ($agent = Agent::where('user_id', auth()->id())->first()) { - $agent = Agent::where('user_id', auth()->id())->first(); return [$agent->id]; } + return []; } private function getContracts() diff --git a/app/Modules/Contracts/Views/contract.blade.php b/app/Modules/Contracts/Views/contract.blade.php index fcde47b..78b5177 100644 --- a/app/Modules/Contracts/Views/contract.blade.php +++ b/app/Modules/Contracts/Views/contract.blade.php @@ -50,11 +50,14 @@ class="bi bi-arrow-right" viewBox="0 0 16 16"> {{ __('contracts.status_' . $contract->status) }} -