diff --git a/app/Modules/Admin/Http/Controllers/AdminCitiesController.php b/app/Modules/Admin/Http/Controllers/AdminCitiesController.php
index 7a595bb..0c8840c 100644
--- a/app/Modules/Admin/Http/Controllers/AdminCitiesController.php
+++ b/app/Modules/Admin/Http/Controllers/AdminCitiesController.php
@@ -10,7 +10,6 @@ class AdminCitiesController extends Controller
public function index(Request $request)
{
$cities = City::orderBy('name');
- //if ($request->filter) {
switch ( $request->filter )
{
case 'trashed':
diff --git a/app/Modules/Admin/Http/Controllers/AdminComplexesController.php b/app/Modules/Admin/Http/Controllers/AdminComplexesController.php
index 791cb9d..38565e6 100644
--- a/app/Modules/Admin/Http/Controllers/AdminComplexesController.php
+++ b/app/Modules/Admin/Http/Controllers/AdminComplexesController.php
@@ -35,7 +35,8 @@ public function edit(Complex $complex)
{
return view('admin::complexes.edit', [
'complex' => $complex,
- 'cities' => City::orderBy('name')->get()
+ 'cities' => City::orderBy('name')->get(),
+ 'backUrl' => route(name: 'admin.complexes')
]);
}
diff --git a/app/Modules/Admin/Http/Controllers/AdminController.php b/app/Modules/Admin/Http/Controllers/AdminController.php
index bf112ba..5fd70f4 100644
--- a/app/Modules/Admin/Http/Controllers/AdminController.php
+++ b/app/Modules/Admin/Http/Controllers/AdminController.php
@@ -14,7 +14,9 @@ public function index()
{
return $this->goToSuperAdminCreator();
}
- return view('admin::index');
+ return view('admin::index', [
+
+ ]);
}
public function superAdminExists()
diff --git a/app/Modules/Admin/Http/Controllers/AdminUsersController.php b/app/Modules/Admin/Http/Controllers/AdminUsersController.php
index 1ba1cc5..3a7ddb4 100644
--- a/app/Modules/Admin/Http/Controllers/AdminUsersController.php
+++ b/app/Modules/Admin/Http/Controllers/AdminUsersController.php
@@ -11,6 +11,8 @@
use Modules\User\Models\UserRole;
use Modules\User\Models\Role;
use Modules\User\Models\User;
+use Modules\Main\Models\Company\CompanyAdmin;
+use Modules\Main\Models\Agent\Agent;
class AdminUsersController extends Controller
{
@@ -41,7 +43,10 @@ public function edit(User $user)
return view('admin::users.edit', [
'user' => $user,
'userRoles' => $roles,
- 'roles' => Role::class
+ 'roles' => Role::class,
+ 'companyAdmins' => CompanyAdmin::where('user_id', $user->id)->get(),
+ 'companyAgents' => Agent::where('user_id', $user->id)->get(),
+ 'backUrl' => route(name: 'admin.users')
]);
}
public function store(Request $request)
@@ -52,6 +57,18 @@ public function store(Request $request)
return to_route('admin.users')->withSuccess('Учетная запись для ' . $request->name . ' создана. Пароль пользователя: ' . $password);
}
+ public function delete(Request $request, User $user)
+ {
+ if ($request->confirmed) {
+ $user->delete();
+ return to_route('admin.users');
+ } else {
+ return view('admin::users.confirm-delete',
+ ['user' => $user]
+ );
+ }
+ return to_route('admin.users');
+ }
public function update(Request $request, User $user)
{
$user->update($request->only('name', 'email', 'phone'));
diff --git a/app/Modules/Admin/Views/users/confirm-delete.blade.php b/app/Modules/Admin/Views/users/confirm-delete.blade.php
new file mode 100644
index 0000000..26753c0
--- /dev/null
+++ b/app/Modules/Admin/Views/users/confirm-delete.blade.php
@@ -0,0 +1,43 @@
+@php($title = 'Пользователи')
+@extends('layouts.admin')
+@section('content')
+
+
+
+
+
+
+ Вы удаляете пользователя {{ $user->name }}
+
+
+ @if(count($user->roles) > 0)
+
+
+ Проверьте назначенные данному пользователю права, которые будут аннулированы:
+
+
+ @foreach($user->roles as $role)
+
{{ __($role->name) }}
+ @endforeach
+
+
+ @endif
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/app/Modules/Admin/Views/users/edit.blade.php b/app/Modules/Admin/Views/users/edit.blade.php
index 9e04430..38f9a83 100644
--- a/app/Modules/Admin/Views/users/edit.blade.php
+++ b/app/Modules/Admin/Views/users/edit.blade.php
@@ -48,6 +48,20 @@
{{ __($userRole->role->name) }}
+ @if($userRole->role->id == $roles::COMPANY_ADMIN)
+
+ @foreach($companyAdmins as $admin)
+ {{ $admin->company->name }}
+ @endforeach
+
+ @endif
+ @if($userRole->role->id == $roles::AGENT)
+
+ @foreach($companyAgents as $agent)
+ {{ $agent->company->name }}
+ @endforeach
+
+ @endif
{{ $userRole->created_at?->diffForHumans() }}
diff --git a/app/Modules/Admin/Views/users/index.blade.php b/app/Modules/Admin/Views/users/index.blade.php
index 3cbb10e..94c2943 100644
--- a/app/Modules/Admin/Views/users/index.blade.php
+++ b/app/Modules/Admin/Views/users/index.blade.php
@@ -2,9 +2,7 @@
@extends('layouts.admin')
@section('content')
- @if ($users->count() == 0)
-
Нет данных для отображения
- @else
+
-
+ @if ($users->count() == 0)
+
Нет данных для отображения
+ @else
@endif
+
@livewire('post.card')
@@ -85,7 +86,7 @@
enctype="multipart/form-data">
diff --git a/app/Modules/CityManager/Models/CityManager.php b/app/Modules/CityManager/Models/CityManager.php
index 6d0d7f1..28bb416 100644
--- a/app/Modules/CityManager/Models/CityManager.php
+++ b/app/Modules/CityManager/Models/CityManager.php
@@ -32,5 +32,15 @@ protected static function booted()
'role_id' => Role::CITY_MANAGER
]);
});
+
+ static::deleted(function (CityManager $cityManager)
+ {
+ if (CityManager::where('user_id', $cityManager->user->id)->count() == 0) {
+ UserRole::where([
+ 'user_id' => $cityManager->user_id,
+ 'role_id' => Role::CITY_MANAGER
+ ])->delete();
+ }
+ });
}
}
diff --git a/app/Modules/Main/Database/Migrations/2026_01_22_000002_change_foreign_delete_in_company_admins_table.php b/app/Modules/Main/Database/Migrations/2026_01_22_000002_change_foreign_delete_in_company_admins_table.php
new file mode 100644
index 0000000..4bb76f9
--- /dev/null
+++ b/app/Modules/Main/Database/Migrations/2026_01_22_000002_change_foreign_delete_in_company_admins_table.php
@@ -0,0 +1,40 @@
+dropForeign(['user_id']);
+ $table->dropForeign(['company_id']);
+ $table->foreign('user_id')
+ ->references('id')->on('users')
+ ->onDelete('cascade');
+ $table->foreign('company_id')
+ ->references('id')->on('companies')
+ ->onDelete('cascade');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::table('company_admins', function (Blueprint $table) {
+ $table->dropForeign(['user_id']);
+ $table->dropForeign(['company_id']);
+
+ $table->foreign('user_id')
+ ->references('id')->on('users');
+ $table->foreign('company_id')
+ ->references('id')->on('companies');
+ });
+ }
+};
diff --git a/app/Modules/Main/Database/Migrations/2026_01_22_000003_change_foreign_delete_in_company_agents_table.php b/app/Modules/Main/Database/Migrations/2026_01_22_000003_change_foreign_delete_in_company_agents_table.php
new file mode 100644
index 0000000..5855d33
--- /dev/null
+++ b/app/Modules/Main/Database/Migrations/2026_01_22_000003_change_foreign_delete_in_company_agents_table.php
@@ -0,0 +1,39 @@
+dropForeign(['user_id']);
+ $table->dropForeign(['company_id']);
+ $table->foreign('user_id')
+ ->references('id')->on('users')
+ ->onDelete('cascade');
+ $table->foreign('company_id')
+ ->references('id')->on('companies')
+ ->onDelete('cascade');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::table('agents', function (Blueprint $table) {
+ $table->dropForeign(['user_id']);
+ $table->dropForeign(['company_id']);
+ $table->foreign('user_id')
+ ->references('id')->on('users');
+ $table->foreign('company_id')
+ ->references('id')->on('companies');
+ });
+ }
+};
diff --git a/app/Modules/Main/Helpers/helper.php b/app/Modules/Main/Helpers/helper.php
index 77a46ba..adf4503 100644
--- a/app/Modules/Main/Helpers/helper.php
+++ b/app/Modules/Main/Helpers/helper.php
@@ -60,6 +60,32 @@ function GetAvailableAgents($resultType = 'Collection')
}
}
+if (!function_exists('GetAvailableCompanies')) {
+ function GetAvailableCompanies($resultType = 'Collection')
+ {
+ $companiesIds = [];
+ if ($adminCompany = AdminCompanyOfUser()) {
+ $companiesIds[] = $adminCompany->id;
+ }
+ if ($cityManager = CityManager::where('user_id', auth()->user()->id)) {
+ if ($cityManager->count()) {
+ $companies = Company::whereIn('city_id', $cityManager->pluck('city_id'));
+ if ($companies->count()) {
+ $companies = $companies->get()->pluck('id');
+ $companiesIds = array_merge($companiesIds, $companies->all());
+ }
+ }
+ }
+ $companiesIds = array_unique($companiesIds);
+ $companies = Company::whereIn('id', $companiesIds);
+ if ($resultType == 'Collection') {
+ return $companies->get();
+ } else {
+ return $companies;
+ };
+ }
+}
+
if (!function_exists('GetAvailableComplexes')) {
function GetAvailableComplexes()
{
diff --git a/app/Modules/Main/Http/Livewire/CreateAgentLivewire.php b/app/Modules/Main/Http/Livewire/CreateAgentLivewire.php
index a8dd7ec..6ecb28b 100644
--- a/app/Modules/Main/Http/Livewire/CreateAgentLivewire.php
+++ b/app/Modules/Main/Http/Livewire/CreateAgentLivewire.php
@@ -15,7 +15,8 @@ class CreateAgentLivewire extends Component
public function mount($containerId = 'createAgentModal')
{
$this->containerId = $containerId;
- $availableCompaniesIds = GetAvailableAgents('Builder')->pluck('company_id');
+ $availableCompaniesIds = GetAvailableCompanies('Collection')->pluck('id');
+
$this->availableCompanies = Company::whereIn('id', $availableCompaniesIds)->get();
if ($this->availableCompanies->count() == 1) {
$this->companyId = $this->availableCompanies->first()->id;
diff --git a/lang/ru.json b/lang/ru.json
index b9e0614..0876b50 100644
--- a/lang/ru.json
+++ b/lang/ru.json
@@ -42,6 +42,7 @@
"Company admin": "Администратор агентства",
"Agent": "Агент",
"Client": "Клиент",
+ "City manager": "Региональный менеджер",
"Status new": "Новый",
"Status moderation": "Модерация",
"Status accepted": "Одобрен",
diff --git a/resources/views/layouts/admin.blade.php b/resources/views/layouts/admin.blade.php
index 5b8aee6..f6eaa2a 100644
--- a/resources/views/layouts/admin.blade.php
+++ b/resources/views/layouts/admin.blade.php
@@ -27,7 +27,7 @@
-