From b5b50159a7135be5d6d6ce44d71f64935d89610f Mon Sep 17 00:00:00 2001 From: Thekindbull Date: Tue, 11 Nov 2025 15:29:04 +0800 Subject: [PATCH] =?UTF-8?q?-=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20=D1=81=20?= =?UTF-8?q?=D0=B0=D0=B4=D0=BC=D0=B8=D0=BD=D0=B8=D1=81=D1=82=D1=80=D0=B0?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=D0=BC=20=D0=B0?= =?UTF-8?q?=D0=B3=D0=B5=D0=BD=D1=82=D1=81=D1=82=D0=B2:=20=D1=81=D0=B4?= =?UTF-8?q?=D0=B5=D0=BB=D0=B0=D0=BD=D0=BE=20=D1=80=D0=B5=D0=B4=D0=B0=D0=BA?= =?UTF-8?q?=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B4?= =?UTF-8?q?=D0=B0=D0=BD=D0=BD=D1=8B=D1=85,=20=D0=B0=20=D1=82=D0=B0=D0=BA?= =?UTF-8?q?=D0=B6=D0=B5=20=D1=83=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B0=D0=B3=D0=B5=D0=BD=D1=82=D0=B0=D0=BC=D0=B8?= =?UTF-8?q?=20=D0=B8=D0=B7=20=D0=B0=D0=B4=D0=BC=D0=B8=D0=BD=D0=BA=D0=B8=20?= =?UTF-8?q?(=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5,?= =?UTF-8?q?=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5)=20-=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD=20=D1=80=D0=B5?= =?UTF-8?q?=D1=84=D0=B0=D0=BA=D1=82=D0=BE=D1=80=D0=B8=D0=BD=D0=B3=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BC=D0=BF=D0=BE=D0=BD=D0=B5=D0=BD=D1=82=D1=8B=20=D1=81?= =?UTF-8?q?=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B0=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D0=B0=20-=20=D0=B2=20=D0=B0=D0=B4=D0=BC=D0=B8?= =?UTF-8?q?=D0=BD=D0=BA=D1=83=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20=D1=81=20?= =?UTF-8?q?url=20=D0=BD=D0=B0=20=D1=81=D1=82=D0=BE=D1=80=D0=BE=D0=BD=D0=B5?= =?UTF-8?q?=20=D0=B1=D0=B8=D1=82=D1=80=D0=B8=D0=BA=D1=81=D0=B0=20-=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD=20=D1=80=D0=B5?= =?UTF-8?q?=D1=84=D0=B0=D0=BA=D1=82=D0=BE=D1=80=D0=B8=D0=BD=D0=B3=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=B4=D0=B0=20=D0=BF=D0=BE=20=D0=BE=D1=82=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BA=D0=B5=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85?= =?UTF-8?q?=20=D0=B2=20=D0=B1=D0=B8=D1=82=D1=80=D0=B8=D0=BA=D1=81=20-=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B7=D0=BD=D0=B5=D1=81=D0=B5=D0=BD=D1=8B=20=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D0=B2=D1=88=D0=B8=D0=B5=D1=81=D1=8F=20=D0=BC?= =?UTF-8?q?=D0=B8=D0=B3=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20=D0=BF=D0=BE=20?= =?UTF-8?q?=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8F=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdminBitrixWebhooksController.php | 26 +++++------ .../Controllers/AdminCompaniesController.php | 8 +++- app/Modules/Admin/Routes/web.php | 2 +- .../Admin/Views/bitrix/webhooks.blade.php | 15 ++++--- .../Admin/Views/companies/edit.blade.php | 35 +++++++++------ ...001_change_name_type_in_webhooks_table.php | 24 +++++++++++ .../Bitrix/Enums/BitrixWebhooksEnum.php | 13 ++++++ app/Modules/Bitrix/Models/BitrixSender.php | 43 +++++++++++++++++-- app/Modules/Bitrix/Models/BitrixWebhooks.php | 19 ++++++-- app/Modules/Bitrix/Models/SendAgent.php | 2 - app/Modules/Bitrix/Models/SendClient.php | 1 - app/Modules/Bitrix/Models/SendCompany.php | 3 +- app/Modules/Bitrix/Models/SendDeal.php | 1 - app/Modules/Bitrix/Models/SendDealAgent.php | 1 - app/Modules/Bitrix/Models/SendDealClient.php | 1 - ...6_add_new_requisites_to_contract_table.php | 0 ..._add_plan7_id_column_to_contract_table.php | 0 .../2024_06_20_035667_create_cities_table.php | 0 ...024_06_30_230001_create_statuses_table.php | 0 ...24_07_04_052702_create_complexes_table.php | 0 ...24_10_23_141203_create_companies_table.php | 0 .../2024_10_23_162850_create_agents_table.php | 0 ..._23_163951_create_company_admins_table.php | 0 .../2024_10_23_170000_create_deals_table.php | 0 ..._24_062613_create_company_agents_table.php | 0 ...8_162446_add_status_to_companies_table.php | 0 ...19_add_secret_token_to_companies_table.php | 0 ...12_145038_create_client_contract_table.php | 0 ..._add_deleted_at_column_to_cities_table.php | 0 ...d_deleted_at_column_to_complexes_table.php | 0 ...d_deleted_at_column_to_complexes_table.php | 0 ...725_add_city_column_to_companies_table.php | 0 ...726_copy_client_field_from_deals_table.php | 0 ...9_delete_client_field_from_deals_table.php | 0 ...01_add_phone_column_to_companies_table.php | 30 +++++++++++++ .../Company/AgentsTableController.php | 7 +-- .../Company/CreateAgentController.php | 27 +++++++----- .../Http/Livewire/CreateAgentLivewire.php | 28 ++++++++++++ app/Modules/Main/Models/Company/Company.php | 1 + .../Main/Providers/ModuleServiceProvider.php | 20 +++++---- app/Modules/Main/Routes/web.php | 3 +- .../Views/agent/livewire/create.blade.php | 42 ++++++++++++++++++ .../Main/Views/company/agents/table.blade.php | 42 +----------------- .../Main/Views/company/created.blade.php | 11 +++-- resources/views/layouts/admin.blade.php | 5 +++ routes/web.php | 2 +- 46 files changed, 291 insertions(+), 121 deletions(-) create mode 100644 app/Modules/Bitrix/Database/Migrations/2025_11_12_000001_change_name_type_in_webhooks_table.php create mode 100644 app/Modules/Bitrix/Enums/BitrixWebhooksEnum.php rename {database/migrations => app/Modules/Contracts/Database/Migrations}/2025_06_10_095056_add_new_requisites_to_contract_table.php (100%) rename {database/migrations => app/Modules/Contracts/Database/Migrations}/2025_06_18_095056_add_plan7_id_column_to_contract_table.php (100%) rename {database/migrations => app/Modules/Main/Database/Migrations}/2024_06_20_035667_create_cities_table.php (100%) rename {database/migrations => app/Modules/Main/Database/Migrations}/2024_06_30_230001_create_statuses_table.php (100%) rename {database/migrations => app/Modules/Main/Database/Migrations}/2024_07_04_052702_create_complexes_table.php (100%) rename {database/migrations => app/Modules/Main/Database/Migrations}/2024_10_23_141203_create_companies_table.php (100%) rename {database/migrations => app/Modules/Main/Database/Migrations}/2024_10_23_162850_create_agents_table.php (100%) rename {database/migrations => app/Modules/Main/Database/Migrations}/2024_10_23_163951_create_company_admins_table.php (100%) rename {database/migrations => app/Modules/Main/Database/Migrations}/2024_10_23_170000_create_deals_table.php (100%) rename {database/migrations => app/Modules/Main/Database/Migrations}/2024_10_24_062613_create_company_agents_table.php (100%) rename {database/migrations => app/Modules/Main/Database/Migrations}/2024_11_28_162446_add_status_to_companies_table.php (100%) rename {database/migrations => app/Modules/Main/Database/Migrations}/2024_11_28_162619_add_secret_token_to_companies_table.php (100%) rename {database/migrations => app/Modules/Main/Database/Migrations}/2025_03_12_145038_create_client_contract_table.php (100%) rename {database/migrations => app/Modules/Main/Database/Migrations}/2025_04_10_065707_add_deleted_at_column_to_cities_table.php (100%) rename {database/migrations => app/Modules/Main/Database/Migrations}/2025_04_10_073346_add_deleted_at_column_to_complexes_table.php (100%) rename {database/migrations => app/Modules/Main/Database/Migrations}/2025_04_11_053823_add_deleted_at_column_to_complexes_table.php (100%) rename {database/migrations => app/Modules/Main/Database/Migrations}/2025_06_10_083725_add_city_column_to_companies_table.php (100%) rename app/Modules/{Bitrix => Main}/Database/Migrations/2025_11_08_456726_copy_client_field_from_deals_table.php (100%) rename app/Modules/{Bitrix => Main}/Database/Migrations/2025_11_08_456729_delete_client_field_from_deals_table.php (100%) create mode 100644 app/Modules/Main/Database/Migrations/2025_11_12_000001_add_phone_column_to_companies_table.php create mode 100644 app/Modules/Main/Http/Livewire/CreateAgentLivewire.php create mode 100644 app/Modules/Main/Views/agent/livewire/create.blade.php diff --git a/app/Modules/Admin/Http/Controllers/AdminBitrixWebhooksController.php b/app/Modules/Admin/Http/Controllers/AdminBitrixWebhooksController.php index 237a122..db45c29 100644 --- a/app/Modules/Admin/Http/Controllers/AdminBitrixWebhooksController.php +++ b/app/Modules/Admin/Http/Controllers/AdminBitrixWebhooksController.php @@ -6,40 +6,34 @@ use App\Http\Controllers\Controller; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Storage; use Modules\Bitrix\Models\BitrixWebhooks; +use Modules\Bitrix\Enums\BitrixWebhooksEnum; class AdminBitrixWebhooksController extends Controller { - private $names = [ - 'CREATE_AGENT', - 'CREATE_COMPANY', - 'CREATE_CONTACT', - 'CREATE_DEAL', - 'UPDATE_DEAL', - 'DEAL_SYNC' - ]; + public function index() { $webhooks = BitrixWebhooks::all()->keyBy('name')->toArray(); return view('admin::bitrix.webhooks', [ - 'names' => $this->names, - 'webhooks' => $webhooks + 'webhooksEnumCases' => BitrixWebhooksEnum::cases(), + 'webhooks' => $webhooks ]); } public function create(Request $request) { - foreach ($this->names as $name) + foreach (BitrixWebhooksEnum::cases() as $webhook) { - if ($request->has($name) && $request->$name) + $webhookName = $webhook->name; + if ($request->has($webhookName) && $request->$webhookName) { BitrixWebhooks::updateOrCreate( - ['name' => $name], + ['name' => $webhookName], [ - 'name' => $name, - 'url' => $request->$name + 'name' => $webhookName, + 'url' => $request->$webhookName ] ); } diff --git a/app/Modules/Admin/Http/Controllers/AdminCompaniesController.php b/app/Modules/Admin/Http/Controllers/AdminCompaniesController.php index bcec43d..1cdff46 100644 --- a/app/Modules/Admin/Http/Controllers/AdminCompaniesController.php +++ b/app/Modules/Admin/Http/Controllers/AdminCompaniesController.php @@ -6,6 +6,8 @@ use Illuminate\Http\Request; use Modules\Main\Models\Company\Company; use Modules\Main\Models\Company\CompanyStatus; + +use Modules\Main\Models\Agent\Agent; class AdminCompaniesController extends Controller { public function index(Request $request) @@ -26,14 +28,16 @@ public function index(Request $request) public function edit(Company $company) { return view('admin::companies.edit', [ - 'company' => $company, + 'company' => $company, + 'companyAgentsRelation' => Agent::where('company_id', $company->id)->get(), + 'companyAdminsRelation' => [] ]); } public function update(Request $request, Company $company) { $company->update($request->only('name', 'email', 'phone')); - return to_route('admin.companies'); + return to_route('admin.companies.edit', ['company' => $company]); } } diff --git a/app/Modules/Admin/Routes/web.php b/app/Modules/Admin/Routes/web.php index 9823354..2813489 100644 --- a/app/Modules/Admin/Routes/web.php +++ b/app/Modules/Admin/Routes/web.php @@ -24,7 +24,7 @@ Route::get('/admin/companies', [Modules\Admin\Http\Controllers\AdminCompaniesController::class, 'index'])->name('admin.companies'); Route::get('/admin/companies/{company}/edit', [Modules\Admin\Http\Controllers\AdminCompaniesController::class, 'edit'])->name('admin.companies.edit'); - Route::post('/admin/companies/{company}/update', [Modules\Admin\Http\Controllers\AdminUsersController::class, 'update'])->name('admin.companies.update'); + Route::post('/admin/companies/{company}/update', [Modules\Admin\Http\Controllers\AdminCompaniesController::class, 'update'])->name('admin.companies.update'); Route::post('/admin/companies/{company}/delete', [Modules\Admin\Http\Controllers\AdminUsersController::class, 'update'])->name('admin.companies.delete'); Route::get('/admin/cities', [Modules\Admin\Http\Controllers\AdminCitiesController::class, 'index'])->name('admin.cities'); diff --git a/app/Modules/Admin/Views/bitrix/webhooks.blade.php b/app/Modules/Admin/Views/bitrix/webhooks.blade.php index 32db269..a283a8b 100644 --- a/app/Modules/Admin/Views/bitrix/webhooks.blade.php +++ b/app/Modules/Admin/Views/bitrix/webhooks.blade.php @@ -3,18 +3,19 @@ @extends('layouts.admin') @section('content')
- @foreach ($names as $name) -
+ @foreach ($webhooksEnumCases as $webhookEnum) +
@csrf -
- {{ __('admin.' . $name) }} +
+ {{ $webhookEnum->name }} + {{ __('admin.' . $webhookEnum->name) . ' webhook label' }}
- +
@endforeach diff --git a/app/Modules/Admin/Views/companies/edit.blade.php b/app/Modules/Admin/Views/companies/edit.blade.php index 747c937..b7f09c8 100644 --- a/app/Modules/Admin/Views/companies/edit.blade.php +++ b/app/Modules/Admin/Views/companies/edit.blade.php @@ -1,9 +1,9 @@ -@php($title = 'Агентства') +@php($title = $company->name) @extends('layouts.admin') @section('content')
-

Редактировать данные пользователя

+

Редактировать данные агентства

@csrf @@ -18,15 +18,15 @@
+ value="{{ $company->email }}"> @error('email')
{{ $message }}
@enderror
- + + value="{{ $company->phone }}"> @error('phone')
{{ $message }}
@enderror @@ -37,23 +37,33 @@
-

Роли пользователя

+ - - @foreach ($userRoles as $userRole) + @foreach ($companyAgentsRelation as $companyAgent)
Роль - Когда назначена + ФИО + Когда назначен
- {{ __($userRole->role->name) }} + {{ $companyAgent->user->name }} - {{ $userRole->created_at->diffForHumans() }} + {{ $companyAgent->created_at->diffForHumans() }}
+ @livewire('company.agent.create', ['containerId' => 'createAgentModal', 'companyId' => $company->id]) @endsection diff --git a/app/Modules/Bitrix/Database/Migrations/2025_11_12_000001_change_name_type_in_webhooks_table.php b/app/Modules/Bitrix/Database/Migrations/2025_11_12_000001_change_name_type_in_webhooks_table.php new file mode 100644 index 0000000..cd971df --- /dev/null +++ b/app/Modules/Bitrix/Database/Migrations/2025_11_12_000001_change_name_type_in_webhooks_table.php @@ -0,0 +1,24 @@ +url = $url; $this->data = $data; } + + protected function getUrl() + { + $webhookEnumItem = false; + $childClass = get_class($this); + switch ( $childClass ) + { + case SendAgent::class: + $webhookEnumItem = BitrixWebhooksEnum::CREATE_AGENT; + break; + case SendClient::class: + $webhookEnumItem = BitrixWebhooksEnum::CREATE_CONTACT; + break; + case SendCompany::class: + $webhookEnumItem = BitrixWebhooksEnum::CREATE_COMPANY; + break; + case SendDeal::class: + $webhookEnumItem = BitrixWebhooksEnum::CREATE_DEAL; + break; + case SendDealAgent::class: + $webhookEnumItem = BitrixWebhooksEnum::ADD_CLIENT_TO_DEAL; + break; + case SendDealClient::class: + $webhookEnumItem = BitrixWebhooksEnum::ADD_CLIENT_TO_DEAL; + break; + } + if ($webhookEnumItem) + { + return BitrixWebhooks::getUrlByName($webhookEnumItem); + } + else + { + throw new \Exception('Undefined url of webhook for ' . $childClass . ' class'); + } + } public function send() { $postdata = http_build_query( @@ -35,7 +70,7 @@ public function send() try { $context = stream_context_create($opts); - $result = file_get_contents($this->url, false, $context); + $result = file_get_contents($this->getUrl(), false, $context); $result = json_decode($result, $associative = true); $this->resultData = $result; if (is_array($this->resultData) && array_key_exists('result', $result)) diff --git a/app/Modules/Bitrix/Models/BitrixWebhooks.php b/app/Modules/Bitrix/Models/BitrixWebhooks.php index 6aed767..66e8541 100644 --- a/app/Modules/Bitrix/Models/BitrixWebhooks.php +++ b/app/Modules/Bitrix/Models/BitrixWebhooks.php @@ -4,16 +4,29 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; -use Illuminate\Database\Eloquent\Relations\MorphTo; - +use Modules\Bitrix\Enums\BitrixWebhooksEnum; class BitrixWebhooks extends Model { use HasFactory; - protected $table = 'bx_webhooks'; protected $fillable = [ 'name', 'url' ]; + + /** + * Get webhook url by its name + * @param string $name webhook name + * @return string|bool url of webhook or false + */ + public static function getUrlByName(BitrixWebhooksEnum $webhook): string|bool + { + $row = BitrixWebhooks::where('name', $webhook->name); + if ($row->count() == 1) + { + return $row->first()->url; + } + return false; + } } diff --git a/app/Modules/Bitrix/Models/SendAgent.php b/app/Modules/Bitrix/Models/SendAgent.php index 72b4500..ddad41b 100644 --- a/app/Modules/Bitrix/Models/SendAgent.php +++ b/app/Modules/Bitrix/Models/SendAgent.php @@ -16,7 +16,5 @@ public function __construct(Agent $agent) 'name' => $agent->user->name, 'phones' => [$agent->user->phone], ]; - dd($this->data); - $this->url = 'https://b24alfa.pro/channels/lk/createContact/'; } } diff --git a/app/Modules/Bitrix/Models/SendClient.php b/app/Modules/Bitrix/Models/SendClient.php index d753813..4cc44d7 100644 --- a/app/Modules/Bitrix/Models/SendClient.php +++ b/app/Modules/Bitrix/Models/SendClient.php @@ -16,6 +16,5 @@ public function __construct(Client $client) 'name' => $client->name, 'phones' => [$client->phone], ]; - $this->url = 'https://b24alfa.pro/channels/lk/createContact/'; } } diff --git a/app/Modules/Bitrix/Models/SendCompany.php b/app/Modules/Bitrix/Models/SendCompany.php index 0c54a20..36847a4 100644 --- a/app/Modules/Bitrix/Models/SendCompany.php +++ b/app/Modules/Bitrix/Models/SendCompany.php @@ -15,13 +15,12 @@ public function __construct(Company $company) 'name' => $company->name, 'inn' => $company->inn, 'email' => $company->email, + 'phone' => $company->phone, 'address' => $company->legal_address, 'callbackUrl' => route('api.company.confirm', [ 'token' => $company->secret ]) ]; - //dd($company); - $this->url = 'https://b24alfa.pro/channels/lk/createCompany/'; } } diff --git a/app/Modules/Bitrix/Models/SendDeal.php b/app/Modules/Bitrix/Models/SendDeal.php index 36683c0..5765908 100644 --- a/app/Modules/Bitrix/Models/SendDeal.php +++ b/app/Modules/Bitrix/Models/SendDeal.php @@ -15,6 +15,5 @@ public function __construct(Deal $deal) $this->data = [ 'complexName' => $deal->complex->name ]; - $this->url = 'https://b24alfa.pro/channels/lk/createSmartProcess/'; } } diff --git a/app/Modules/Bitrix/Models/SendDealAgent.php b/app/Modules/Bitrix/Models/SendDealAgent.php index caac447..c8bbbd6 100644 --- a/app/Modules/Bitrix/Models/SendDealAgent.php +++ b/app/Modules/Bitrix/Models/SendDealAgent.php @@ -17,6 +17,5 @@ public function __construct(Deal $deal) 'contactId' => $deal->agent->bitrixId(), 'type' => 'agent' ]; - $this->url = 'https://b24alfa.pro/channels/lk/addContactToSmartProcess/'; } } diff --git a/app/Modules/Bitrix/Models/SendDealClient.php b/app/Modules/Bitrix/Models/SendDealClient.php index 68e6344..05ee4aa 100644 --- a/app/Modules/Bitrix/Models/SendDealClient.php +++ b/app/Modules/Bitrix/Models/SendDealClient.php @@ -18,6 +18,5 @@ public function __construct(Deal $deal, Client $client) 'contactId' => $client->bitrixId(), 'type' => 'contact' ]; - $this->url = 'https://b24alfa.pro/channels/lk/addContactToSmartProcess/'; } } diff --git a/database/migrations/2025_06_10_095056_add_new_requisites_to_contract_table.php b/app/Modules/Contracts/Database/Migrations/2025_06_10_095056_add_new_requisites_to_contract_table.php similarity index 100% rename from database/migrations/2025_06_10_095056_add_new_requisites_to_contract_table.php rename to app/Modules/Contracts/Database/Migrations/2025_06_10_095056_add_new_requisites_to_contract_table.php diff --git a/database/migrations/2025_06_18_095056_add_plan7_id_column_to_contract_table.php b/app/Modules/Contracts/Database/Migrations/2025_06_18_095056_add_plan7_id_column_to_contract_table.php similarity index 100% rename from database/migrations/2025_06_18_095056_add_plan7_id_column_to_contract_table.php rename to app/Modules/Contracts/Database/Migrations/2025_06_18_095056_add_plan7_id_column_to_contract_table.php diff --git a/database/migrations/2024_06_20_035667_create_cities_table.php b/app/Modules/Main/Database/Migrations/2024_06_20_035667_create_cities_table.php similarity index 100% rename from database/migrations/2024_06_20_035667_create_cities_table.php rename to app/Modules/Main/Database/Migrations/2024_06_20_035667_create_cities_table.php diff --git a/database/migrations/2024_06_30_230001_create_statuses_table.php b/app/Modules/Main/Database/Migrations/2024_06_30_230001_create_statuses_table.php similarity index 100% rename from database/migrations/2024_06_30_230001_create_statuses_table.php rename to app/Modules/Main/Database/Migrations/2024_06_30_230001_create_statuses_table.php diff --git a/database/migrations/2024_07_04_052702_create_complexes_table.php b/app/Modules/Main/Database/Migrations/2024_07_04_052702_create_complexes_table.php similarity index 100% rename from database/migrations/2024_07_04_052702_create_complexes_table.php rename to app/Modules/Main/Database/Migrations/2024_07_04_052702_create_complexes_table.php diff --git a/database/migrations/2024_10_23_141203_create_companies_table.php b/app/Modules/Main/Database/Migrations/2024_10_23_141203_create_companies_table.php similarity index 100% rename from database/migrations/2024_10_23_141203_create_companies_table.php rename to app/Modules/Main/Database/Migrations/2024_10_23_141203_create_companies_table.php diff --git a/database/migrations/2024_10_23_162850_create_agents_table.php b/app/Modules/Main/Database/Migrations/2024_10_23_162850_create_agents_table.php similarity index 100% rename from database/migrations/2024_10_23_162850_create_agents_table.php rename to app/Modules/Main/Database/Migrations/2024_10_23_162850_create_agents_table.php diff --git a/database/migrations/2024_10_23_163951_create_company_admins_table.php b/app/Modules/Main/Database/Migrations/2024_10_23_163951_create_company_admins_table.php similarity index 100% rename from database/migrations/2024_10_23_163951_create_company_admins_table.php rename to app/Modules/Main/Database/Migrations/2024_10_23_163951_create_company_admins_table.php diff --git a/database/migrations/2024_10_23_170000_create_deals_table.php b/app/Modules/Main/Database/Migrations/2024_10_23_170000_create_deals_table.php similarity index 100% rename from database/migrations/2024_10_23_170000_create_deals_table.php rename to app/Modules/Main/Database/Migrations/2024_10_23_170000_create_deals_table.php diff --git a/database/migrations/2024_10_24_062613_create_company_agents_table.php b/app/Modules/Main/Database/Migrations/2024_10_24_062613_create_company_agents_table.php similarity index 100% rename from database/migrations/2024_10_24_062613_create_company_agents_table.php rename to app/Modules/Main/Database/Migrations/2024_10_24_062613_create_company_agents_table.php diff --git a/database/migrations/2024_11_28_162446_add_status_to_companies_table.php b/app/Modules/Main/Database/Migrations/2024_11_28_162446_add_status_to_companies_table.php similarity index 100% rename from database/migrations/2024_11_28_162446_add_status_to_companies_table.php rename to app/Modules/Main/Database/Migrations/2024_11_28_162446_add_status_to_companies_table.php diff --git a/database/migrations/2024_11_28_162619_add_secret_token_to_companies_table.php b/app/Modules/Main/Database/Migrations/2024_11_28_162619_add_secret_token_to_companies_table.php similarity index 100% rename from database/migrations/2024_11_28_162619_add_secret_token_to_companies_table.php rename to app/Modules/Main/Database/Migrations/2024_11_28_162619_add_secret_token_to_companies_table.php diff --git a/database/migrations/2025_03_12_145038_create_client_contract_table.php b/app/Modules/Main/Database/Migrations/2025_03_12_145038_create_client_contract_table.php similarity index 100% rename from database/migrations/2025_03_12_145038_create_client_contract_table.php rename to app/Modules/Main/Database/Migrations/2025_03_12_145038_create_client_contract_table.php diff --git a/database/migrations/2025_04_10_065707_add_deleted_at_column_to_cities_table.php b/app/Modules/Main/Database/Migrations/2025_04_10_065707_add_deleted_at_column_to_cities_table.php similarity index 100% rename from database/migrations/2025_04_10_065707_add_deleted_at_column_to_cities_table.php rename to app/Modules/Main/Database/Migrations/2025_04_10_065707_add_deleted_at_column_to_cities_table.php diff --git a/database/migrations/2025_04_10_073346_add_deleted_at_column_to_complexes_table.php b/app/Modules/Main/Database/Migrations/2025_04_10_073346_add_deleted_at_column_to_complexes_table.php similarity index 100% rename from database/migrations/2025_04_10_073346_add_deleted_at_column_to_complexes_table.php rename to app/Modules/Main/Database/Migrations/2025_04_10_073346_add_deleted_at_column_to_complexes_table.php diff --git a/database/migrations/2025_04_11_053823_add_deleted_at_column_to_complexes_table.php b/app/Modules/Main/Database/Migrations/2025_04_11_053823_add_deleted_at_column_to_complexes_table.php similarity index 100% rename from database/migrations/2025_04_11_053823_add_deleted_at_column_to_complexes_table.php rename to app/Modules/Main/Database/Migrations/2025_04_11_053823_add_deleted_at_column_to_complexes_table.php diff --git a/database/migrations/2025_06_10_083725_add_city_column_to_companies_table.php b/app/Modules/Main/Database/Migrations/2025_06_10_083725_add_city_column_to_companies_table.php similarity index 100% rename from database/migrations/2025_06_10_083725_add_city_column_to_companies_table.php rename to app/Modules/Main/Database/Migrations/2025_06_10_083725_add_city_column_to_companies_table.php diff --git a/app/Modules/Bitrix/Database/Migrations/2025_11_08_456726_copy_client_field_from_deals_table.php b/app/Modules/Main/Database/Migrations/2025_11_08_456726_copy_client_field_from_deals_table.php similarity index 100% rename from app/Modules/Bitrix/Database/Migrations/2025_11_08_456726_copy_client_field_from_deals_table.php rename to app/Modules/Main/Database/Migrations/2025_11_08_456726_copy_client_field_from_deals_table.php diff --git a/app/Modules/Bitrix/Database/Migrations/2025_11_08_456729_delete_client_field_from_deals_table.php b/app/Modules/Main/Database/Migrations/2025_11_08_456729_delete_client_field_from_deals_table.php similarity index 100% rename from app/Modules/Bitrix/Database/Migrations/2025_11_08_456729_delete_client_field_from_deals_table.php rename to app/Modules/Main/Database/Migrations/2025_11_08_456729_delete_client_field_from_deals_table.php diff --git a/app/Modules/Main/Database/Migrations/2025_11_12_000001_add_phone_column_to_companies_table.php b/app/Modules/Main/Database/Migrations/2025_11_12_000001_add_phone_column_to_companies_table.php new file mode 100644 index 0000000..6301e93 --- /dev/null +++ b/app/Modules/Main/Database/Migrations/2025_11_12_000001_add_phone_column_to_companies_table.php @@ -0,0 +1,30 @@ +string('phone'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('companies', function (Blueprint $table) + { + // + }); + } +}; diff --git a/app/Modules/Main/Http/Controllers/Company/AgentsTableController.php b/app/Modules/Main/Http/Controllers/Company/AgentsTableController.php index 5794351..b32f4fd 100644 --- a/app/Modules/Main/Http/Controllers/Company/AgentsTableController.php +++ b/app/Modules/Main/Http/Controllers/Company/AgentsTableController.php @@ -29,9 +29,10 @@ public function index(Request $request) } return view('main::company.agents.table', [ - 'agents' => $agents->get(), - 'status' => $request->status, - 'cities' => City::all() + 'agents' => $agents->get(), + 'companyId' => $admin->company_id, + 'status' => $request->status, + 'cities' => City::all() ])->with('statuses', AgentStatus::class); } else diff --git a/app/Modules/Main/Http/Controllers/Company/CreateAgentController.php b/app/Modules/Main/Http/Controllers/Company/CreateAgentController.php index affb227..9e24035 100644 --- a/app/Modules/Main/Http/Controllers/Company/CreateAgentController.php +++ b/app/Modules/Main/Http/Controllers/Company/CreateAgentController.php @@ -4,26 +4,33 @@ use App\Http\Controllers\Controller; use Illuminate\Http\Request; +use Modules\Main\Models\Company\Company; use Modules\Main\Models\Company\CompanyAdmin; use Modules\Main\Models\Agent\Agent; -use App\Models\User; +use Modules\User\Models\User; use App\Notifications\UserRegistered; class CreateAgentController extends Controller { - public function __invoke(Request $request) + public function __invoke(Request $request, Company $company) { - //dd($request->sendToEmail); - $admin = CompanyAdmin::where('user_id', auth()->id()); - if (!$admin->count()) + if (!$company) { - abort(404); - return; + $admin = CompanyAdmin::where('user_id', auth()->id()); + if (!$admin->count()) + { + abort(404); + return; + } + $admin = $admin->first(); + $company = Company::find($admin->company_id); + } + if (!$company) + { + return back()->with('error', 'Не удалось установить принадлежность создаваемого агента'); } - $admin = $admin->first(); - $user = User::where('email', $request->email)->orWhere('phone', $request->phone)->first(); if ($user) { @@ -45,7 +52,7 @@ public function __invoke(Request $request) Agent::where('user_id', $user->id)->delete(); //на случай, если где-то этот пользователь уже был агентом $agent = Agent::create([ 'user_id' => $user->id, - 'company_id' => $admin->company_id + 'company_id' => $company->id ]); } diff --git a/app/Modules/Main/Http/Livewire/CreateAgentLivewire.php b/app/Modules/Main/Http/Livewire/CreateAgentLivewire.php new file mode 100644 index 0000000..200b008 --- /dev/null +++ b/app/Modules/Main/Http/Livewire/CreateAgentLivewire.php @@ -0,0 +1,28 @@ +companyId = $companyId; + $this->containerId = $containerId; + } + + + public function render() + { + return view('main::agent.livewire.create', [ + ]); + } + + +} \ No newline at end of file diff --git a/app/Modules/Main/Models/Company/Company.php b/app/Modules/Main/Models/Company/Company.php index 95f082c..ded1e6e 100644 --- a/app/Modules/Main/Models/Company/Company.php +++ b/app/Modules/Main/Models/Company/Company.php @@ -21,6 +21,7 @@ class Company extends Model 'full_name', 'inn', 'email', + 'phone', 'address', 'legal_address', 'details', diff --git a/app/Modules/Main/Providers/ModuleServiceProvider.php b/app/Modules/Main/Providers/ModuleServiceProvider.php index 8196e34..d6b43e1 100644 --- a/app/Modules/Main/Providers/ModuleServiceProvider.php +++ b/app/Modules/Main/Providers/ModuleServiceProvider.php @@ -8,7 +8,7 @@ class ModuleServiceProvider extends ServiceProvider { - protected String $moduleName = 'Main'; + protected string $moduleName = 'Main'; public function register() { @@ -27,38 +27,42 @@ public function boot() protected function registerViews() { - $moduleViewsPath = __DIR__.'/../Views'; + $moduleViewsPath = __DIR__ . '/../Views'; $this->loadViewsFrom( - $moduleViewsPath, strtolower($this->moduleName) + $moduleViewsPath, + strtolower($this->moduleName) ); } protected function registerLivewireViews() { - $moduleViewsPath = __DIR__.'/../Views/livewire'; + $moduleViewsPath = __DIR__ . '/../Views/livewire'; $this->loadViewsFrom( - $moduleViewsPath, strtolower($this->moduleName) + $moduleViewsPath, + strtolower($this->moduleName) ); } protected function registerMigrations() { $this->loadMigrationsFrom( - app_path('Modules/'.$this->moduleName.'/Database/Migrations') + app_path('Modules/' . $this->moduleName . '/Database/Migrations') ); } protected function registerConfig() { - $path = app_path('Modules/'.$this->moduleName.'/Config/config.php'); + $path = app_path('Modules/' . $this->moduleName . '/Config/config.php'); $this->mergeConfigFrom( - $path, strtolower($this->moduleName) + $path, + strtolower($this->moduleName) ); } protected function registerLivewire() { //Livewire::component('', \Modules\\Http\Livewire\::class); + Livewire::component('company.agent.create', \Modules\Main\Http\Livewire\CreateAgentLivewire::class); } protected function registerComponent() diff --git a/app/Modules/Main/Routes/web.php b/app/Modules/Main/Routes/web.php index 694665f..f277bfe 100644 --- a/app/Modules/Main/Routes/web.php +++ b/app/Modules/Main/Routes/web.php @@ -25,7 +25,8 @@ Route::get('/company/details/{company?}', [Modules\Main\Http\Controllers\Company\DetailsController::class, 'index'])->name('company.details'); Route::post('/company/{company}/details/', [Modules\Main\Http\Controllers\Company\DetailsController::class, 'store'])->name('company.details.store'); Route::get('/agents/table', [Modules\Main\Http\Controllers\Company\AgentsTableController::class, 'index'])->name('company.agents.table'); - Route::post('/company/agents/store/', Modules\Main\Http\Controllers\Company\CreateAgentController::class)->name('company.agents.store'); + //Route::post('/company/agents/store/', Modules\Main\Http\Controllers\Company\CreateAgentController::class)->name('company.agents.store'); + Route::post('/companies/{company?}/agents/store/', Modules\Main\Http\Controllers\Company\CreateAgentController::class)->name('company.agents.store'); Route::post('/company/agents/{agent}/password/reset/', Modules\Main\Http\Controllers\Company\ResetAgentPasswordController::class)->name('company.agent.password.reset'); Route::get('/company/agents/{agent}/delete', Modules\Main\Http\Controllers\Company\DeleteAgentController::class)->name('company.agents.delete'); Route::get('/company/agents/{agent}/restore', Modules\Main\Http\Controllers\Company\RestoreAgentController::class)->name('company.agents.restore'); diff --git a/app/Modules/Main/Views/agent/livewire/create.blade.php b/app/Modules/Main/Views/agent/livewire/create.blade.php new file mode 100644 index 0000000..9d23d3d --- /dev/null +++ b/app/Modules/Main/Views/agent/livewire/create.blade.php @@ -0,0 +1,42 @@ +
+ +
diff --git a/app/Modules/Main/Views/company/agents/table.blade.php b/app/Modules/Main/Views/company/agents/table.blade.php index 5114f4a..0a95dcb 100644 --- a/app/Modules/Main/Views/company/agents/table.blade.php +++ b/app/Modules/Main/Views/company/agents/table.blade.php @@ -38,45 +38,5 @@
@endif
- - - - + @livewire('company.agent.create', ['containerId' => 'createAgentModal', 'companyId' => $companyId]) @endsection diff --git a/app/Modules/Main/Views/company/created.blade.php b/app/Modules/Main/Views/company/created.blade.php index 77ae50d..3446c8e 100644 --- a/app/Modules/Main/Views/company/created.blade.php +++ b/app/Modules/Main/Views/company/created.blade.php @@ -4,18 +4,21 @@
- +
- +
@endsection diff --git a/resources/views/layouts/admin.blade.php b/resources/views/layouts/admin.blade.php index e4a4182..5b8aee6 100644 --- a/resources/views/layouts/admin.blade.php +++ b/resources/views/layouts/admin.blade.php @@ -93,6 +93,11 @@ class="bi bi-caret-left" viewBox="0 0 16 16"> @livewire('admin.menu')
+ @if (session('success')) +
+ {{ session('success') }} +
+ @endif @foreach ($errors->all() as $error) {{ $error }} @endforeach diff --git a/routes/web.php b/routes/web.php index 667411d..98be77a 100644 --- a/routes/web.php +++ b/routes/web.php @@ -18,7 +18,7 @@ Route::get('/', function () { return view(view: 'welcome'); -}); +})->name('welcome'); Auth::routes();