diff --git a/app/Http/Controllers/Company/AgentsTableController.php b/app/Http/Controllers/Company/AgentsTableController.php index 5462332..69b6069 100644 --- a/app/Http/Controllers/Company/AgentsTableController.php +++ b/app/Http/Controllers/Company/AgentsTableController.php @@ -4,40 +4,40 @@ use App\Http\Controllers\Controller; use Illuminate\Http\Request; -use App\Models\Agent\Agent; -use App\Models\Agent\AgentStatus; -use App\Models\Company\CompanyAdmin; -use App\Models\City; +use Modules\Main\Models\Agent\Agent; +use Modules\Main\Models\Agent\AgentStatus; +use Modules\Main\Models\Company\CompanyAdmin; +use Modules\Main\Models\City; class AgentsTableController extends Controller - { +{ public function index(Request $request) - { + { $user = auth()->user(); $admin = CompanyAdmin::where('user_id', $user->id); if ($admin->count()) - { + { $admin = $admin->first(); $agents = Agent::where('company_id', $admin->company_id); switch ( $request->status ) - { + { case AgentStatus::DISMISSED: $agents->whereNotNull('deleted_at'); break; default: $agents->withTrashed(); - } + } return view('company.agents.table', [ 'agents' => $agents->get(), 'status' => $request->status, 'cities' => City::all() ])->with('statuses', AgentStatus::class); - } + } else - { + { abort(code: 401); return; - } } } +} diff --git a/app/Http/Controllers/Company/DetailsController.php b/app/Http/Controllers/Company/DetailsController.php index 1eafae3..794feea 100644 --- a/app/Http/Controllers/Company/DetailsController.php +++ b/app/Http/Controllers/Company/DetailsController.php @@ -5,10 +5,10 @@ use App\Http\Controllers\Controller; use Illuminate\Http\Request; -use App\Models\Company\Company; -use App\Models\Company\Details; -use App\Models\Company\CompanyAdmin; -use App\Models\Company\CompanyType; +use Modules\Main\Models\Company\Company; +use Modules\Main\Models\Company\Details; +use Modules\Main\Models\Company\CompanyAdmin; +use Modules\Main\Models\Company\CompanyType; class DetailsController extends Controller { public function index($companyId = null) diff --git a/app/Http/Controllers/Company/ResetAgentPasswordController.php b/app/Http/Controllers/Company/ResetAgentPasswordController.php index f5adcdf..e9f01f6 100644 --- a/app/Http/Controllers/Company/ResetAgentPasswordController.php +++ b/app/Http/Controllers/Company/ResetAgentPasswordController.php @@ -4,9 +4,8 @@ use App\Http\Controllers\Controller; use Illuminate\Http\Request; -use App\Models\Company\CompanyAdmin; -use App\Models\Agent\Agent; -use App\Models\User; +use Modules\Main\Models\Company\CompanyAdmin; +use Modules\Main\Models\Agent\Agent; use App\Notifications\UserRegistered; diff --git a/app/Livewire/AgentsTable.php b/app/Livewire/AgentsTable.php index 9088eff..92023df 100644 --- a/app/Livewire/AgentsTable.php +++ b/app/Livewire/AgentsTable.php @@ -4,11 +4,9 @@ use Livewire\Component; use Livewire\WithPagination; -use Livewire\WithoutUrlPagination; -use App\Models\Company\CompanyAdmin; -use App\Models\Agent\Agent; -use App\Models\Agent\AgentStatus; -use App\Models\Deal\Deal; +use Modules\Main\Models\Company\CompanyAdmin; +use Modules\Main\Models\Agent\Agent; +use Modules\Main\Models\Agent\AgentStatus; class AgentsTable extends Component { diff --git a/app/Livewire/MainMenu.php b/app/Livewire/MainMenu.php index 90fbafc..24782d4 100644 --- a/app/Livewire/MainMenu.php +++ b/app/Livewire/MainMenu.php @@ -4,24 +4,24 @@ use Livewire\Component; -use App\Models\User\UserRole; -use App\Models\User\Role; +use Modules\User\Models\UserRole; +use Modules\User\Models\Role; class MainMenu extends Component - { +{ public $userId; public function mount() - { + { $this->userId = auth()->user()->id; - } + } public function render() - { + { return view('livewire.main-menu', [ 'userRoles' => UserRole::where('user_id', $this->userId)->pluck('role_id')->toArray(), - 'roles' => Role::class + 'roles' => Role::class ]); - } } +} diff --git a/app/Models/Deal/Client.php b/app/Models/Deal/Client.php index 52c7727..6d05607 100644 --- a/app/Models/Deal/Client.php +++ b/app/Models/Deal/Client.php @@ -8,9 +8,9 @@ use Illuminate\Notifications\Notifiable; use Laravel\Sanctum\HasApiTokens; -use App\Models\User; +use Modules\User\Models\User; use App\Models\Deal\Deal; -use App\Models\Agent\Agent; +use Modules\Main\Models\Agent\Agent; class Client extends User { protected $table = 'users'; diff --git a/app/Models/Deal/Deal.php b/app/Models/Deal/Deal.php index f6971bf..a9ab826 100644 --- a/app/Models/Deal/Deal.php +++ b/app/Models/Deal/Deal.php @@ -4,16 +4,14 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; - -use App\Models\User\UserRole; -use App\Models\User\Role; +use Illuminate\Notifications\Notifiable; +use Modules\User\Models\User; +use Modules\User\Models\UserRole; +use Modules\User\Models\Role; use Modules\Contracts\Models\Contract; use Modules\Main\Models\Complex; use Modules\Main\Models\Agent\Agent; -use Illuminate\Notifications\Notifiable; use Modules\Bitrix\Traits\Bitrixable; - - class Deal extends Model { use HasFactory, Notifiable, Bitrixable; @@ -31,7 +29,7 @@ public function complex() } public function user() { - return $this->belongsTo(\App\Models\User::class, 'client_id'); + return $this->belongsTo(User::class, 'client_id'); } public function agent() { diff --git a/app/Modules/Admin/Http/Controllers/AdminCitiesController.php b/app/Modules/Admin/Http/Controllers/AdminCitiesController.php index 9a6f600..7a595bb 100644 --- a/app/Modules/Admin/Http/Controllers/AdminCitiesController.php +++ b/app/Modules/Admin/Http/Controllers/AdminCitiesController.php @@ -4,9 +4,7 @@ use App\Http\Controllers\Controller; use Illuminate\Http\Request; - -use App\Models\City; - +use Modules\Main\Models\City; class AdminCitiesController extends Controller { public function index(Request $request) diff --git a/app/Modules/Admin/Http/Controllers/AdminCityManagersController.php b/app/Modules/Admin/Http/Controllers/AdminCityManagersController.php new file mode 100644 index 0000000..87727cd --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/AdminCityManagersController.php @@ -0,0 +1,20 @@ + CityManager::with(['user', 'city'])->get(), + 'cities' => City::all(), + 'filter' => $request->filter + ]); + } +} diff --git a/app/Modules/Admin/Http/Controllers/AdminCompaniesController.php b/app/Modules/Admin/Http/Controllers/AdminCompaniesController.php index 38e0eab..bcec43d 100644 --- a/app/Modules/Admin/Http/Controllers/AdminCompaniesController.php +++ b/app/Modules/Admin/Http/Controllers/AdminCompaniesController.php @@ -2,15 +2,10 @@ namespace Modules\Admin\Http\Controllers; -use Modules\Post\Models\Post; -use Modules\Post\Models\PostCategory; - use App\Http\Controllers\Controller; use Illuminate\Http\Request; - -use App\Models\Company\Company; -use App\Models\Company\CompanyStatus; - +use Modules\Main\Models\Company\Company; +use Modules\Main\Models\Company\CompanyStatus; class AdminCompaniesController extends Controller { public function index(Request $request) diff --git a/app/Modules/Admin/Http/Controllers/AdminComplexesController.php b/app/Modules/Admin/Http/Controllers/AdminComplexesController.php index c266a68..791cb9d 100644 --- a/app/Modules/Admin/Http/Controllers/AdminComplexesController.php +++ b/app/Modules/Admin/Http/Controllers/AdminComplexesController.php @@ -5,8 +5,8 @@ use App\Http\Controllers\Controller; use Illuminate\Http\Request; -use App\Models\Complex; -use App\Models\City; +use Modules\Main\Models\Complex; +use Modules\Main\Models\City; class AdminComplexesController extends Controller { diff --git a/app/Modules/Admin/Http/Controllers/AdminController.php b/app/Modules/Admin/Http/Controllers/AdminController.php index d826415..bf112ba 100644 --- a/app/Modules/Admin/Http/Controllers/AdminController.php +++ b/app/Modules/Admin/Http/Controllers/AdminController.php @@ -1,14 +1,11 @@ name('admin.cities.create'); Route::post('/admin/cities/{city}/delete', [Modules\Admin\Http\Controllers\AdminCitiesController::class, 'delete'])->name('admin.cities.delete'); Route::post('/admin/cities/{city}/restore', [Modules\Admin\Http\Controllers\AdminCitiesController::class, 'restore'])->withTrashed()->name('admin.cities.restore'); + Route::get('/admin/cities/managers', [Modules\Admin\Http\Controllers\AdminCityManagersController::class, 'index'])->name('admin.cities.managers'); Route::get('/admin/complexes', [Modules\Admin\Http\Controllers\AdminComplexesController::class, 'index'])->name('admin.complexes'); Route::get('/admin/complexes/{complex}/edit', [Modules\Admin\Http\Controllers\AdminComplexesController::class, 'edit'])->name('admin.complexes.edit'); diff --git a/app/Modules/Admin/Views/cities/managers.blade.php b/app/Modules/Admin/Views/cities/managers.blade.php new file mode 100644 index 0000000..9a0d765 --- /dev/null +++ b/app/Modules/Admin/Views/cities/managers.blade.php @@ -0,0 +1,67 @@ +@php($title = 'Менеджеры') +@extends('layouts.admin') +@section('content') + +
+
+ + + @foreach ($cities as $city) + id ? 'checked' : '' }}> + + @endforeach +
+ + +
+ +
+
+
+ +
+ + + +@endsection diff --git a/app/Modules/Admin/Views/menu/index.blade.php b/app/Modules/Admin/Views/menu/index.blade.php index 44993f1..cd3a70d 100644 --- a/app/Modules/Admin/Views/menu/index.blade.php +++ b/app/Modules/Admin/Views/menu/index.blade.php @@ -23,6 +23,10 @@ class="nav-link d-flex align-items-center gap-2 fs-5 border rounded-4" class="nav-link d-flex align-items-center gap-2 fs-5 border rounded-4" href="{{ route('admin.complexes', ['filter' => 'actual']) }}">ЖК +
  • diff --git a/app/Modules/CityManager/Database/Migrations/2025_09_16_015544_create_city_managers_table.php b/app/Modules/CityManager/Database/Migrations/2025_09_16_015544_create_city_managers_table.php index d3ea2cf..c19b95b 100644 --- a/app/Modules/CityManager/Database/Migrations/2025_09_16_015544_create_city_managers_table.php +++ b/app/Modules/CityManager/Database/Migrations/2025_09_16_015544_create_city_managers_table.php @@ -11,8 +11,11 @@ */ public function up(): void { - Schema::create('city_managers', function (Blueprint $table) { + Schema::create('city_managers', function (Blueprint $table) + { $table->id(); + $table->foreignId('city_id')->references('id')->on('cities')->onDelete('cascade'); + $table->foreignId('user_id')->references('id')->on('users')->onDelete('cascade'); $table->timestamps(); }); } diff --git a/app/Modules/Main/Database/Migrations/2025_09_15_032348_create_mains_table.php b/app/Modules/CityManager/Database/Migrations/2025_09_16_015762_add_city_manager_role_to_roles_table.php similarity index 67% rename from app/Modules/Main/Database/Migrations/2025_09_15_032348_create_mains_table.php rename to app/Modules/CityManager/Database/Migrations/2025_09_16_015762_add_city_manager_role_to_roles_table.php index 78329ac..ea086c6 100644 --- a/app/Modules/Main/Database/Migrations/2025_09_15_032348_create_mains_table.php +++ b/app/Modules/CityManager/Database/Migrations/2025_09_16_015762_add_city_manager_role_to_roles_table.php @@ -11,10 +11,9 @@ */ public function up(): void { - Schema::create('mains', function (Blueprint $table) { - $table->id(); - $table->timestamps(); - }); + DB::table('roles')->insert([ + ['id' => 5, 'name' => 'City manager'], + ]); } /** @@ -22,6 +21,6 @@ public function up(): void */ public function down(): void { - Schema::dropIfExists('mains'); + DB::table('roles')->where('id', 5)->delete(); } }; diff --git a/app/Modules/CityManager/Models/CityManager.php b/app/Modules/CityManager/Models/CityManager.php index 2864289..3d4dd24 100644 --- a/app/Modules/CityManager/Models/CityManager.php +++ b/app/Modules/CityManager/Models/CityManager.php @@ -1,11 +1,24 @@ belongsTo(User::class, 'user_id'); + } + public function city() + { + return $this->belongsTo(City::class, 'city_id'); + } } diff --git a/app/Modules/ClientCreateForm/Database/Migrations/2025_09_15_023040_create_client_create_forms_table.php b/app/Modules/ClientCreateForm/Database/Migrations/2025_09_15_023040_create_client_create_forms_table.php deleted file mode 100644 index 4966796..0000000 --- a/app/Modules/ClientCreateForm/Database/Migrations/2025_09_15_023040_create_client_create_forms_table.php +++ /dev/null @@ -1,27 +0,0 @@ -id(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('client_create_forms'); - } -}; diff --git a/app/Modules/ClientCreateForm/Http/Livewire/ClientCreateLivewire.php b/app/Modules/ClientCreateForm/Http/Livewire/ClientCreateLivewire.php index 3ddd46e..dadfe6e 100644 --- a/app/Modules/ClientCreateForm/Http/Livewire/ClientCreateLivewire.php +++ b/app/Modules/ClientCreateForm/Http/Livewire/ClientCreateLivewire.php @@ -11,6 +11,8 @@ class ClientCreateLivewire extends Component public $availableAgents; public $complexes; public $maxClientsCount; + public $maxClientPhonesCount; + ///////////////////// public $agent; public $clients; @@ -25,6 +27,7 @@ public function mount() $this->complexes = GetAvailableComplexes(); $this->availableAgents = GetAvailableAgents(); $this->maxClientsCount = 2; + $this->maxClientPhonesCount = 2; $this->clientLabels = ['Основной контакт', 'Супруг/супруга']; $this->status = FormStatus::NEW; @@ -69,7 +72,7 @@ public function deleteContact($index = false) { unset($this->clients[$index]); $this->clients = array_values($this->clients); - $this->updateCurrentClientIndex($index - 1); + $this->setCurrentClient($index - 1); } } public function setCurrentClient($index) @@ -106,8 +109,10 @@ public function saveClient() } public function addPhoneForClient() { - $this->currentClient['phones'][] = ''; - + if (count($this->currentClient['phones']) < $this->maxClientPhonesCount) + { + $this->currentClient['phones'][] = ''; + } } public function render() { diff --git a/app/Modules/ClientCreateForm/Views/livewire/form.blade.php b/app/Modules/ClientCreateForm/Views/livewire/form.blade.php index 7df5339..1d216c9 100644 --- a/app/Modules/ClientCreateForm/Views/livewire/form.blade.php +++ b/app/Modules/ClientCreateForm/Views/livewire/form.blade.php @@ -9,21 +9,20 @@
    @if ($status == FormStatus::NEW || $status == FormStatus::READY) -
    - Добавить клиента -
    -
    -
    -
    +
    +
    +
    -
    +
    -
    +
    + @foreach ($currentClient['phones'] as $phoneKey => $phone)
    - + @error('currentClient.phone.{{ $phoneKey }}') {{ $message }} @enderror
    - @if (count($currentClient['phones']) == $phoneKey + 1) + @if (count($currentClient['phones']) == $phoneKey + 1 && + count($this->currentClient['phones']) < $this->maxClientPhonesCount) + @if ($currentClientIndex == 0 && count($clients) <= 2) +
    + + +
    + @endif + @if ($currentClientIndex > 0) +
    + @endif
    - @endforeach - +
    - @if ($currentClientIndex == 0 && count($clients) <= 2) -
    - - -
    - @endif - @if ($currentClientIndex > 0) - - @endif +
    +
    + +
    +
    +
    +
    +
    + +

    Пользователь не найден

    +
    +
    +
    +
    +
    diff --git a/config/auth.php b/config/auth.php index 9548c15..e94863d 100644 --- a/config/auth.php +++ b/config/auth.php @@ -13,8 +13,8 @@ | */ - 'defaults' => [ - 'guard' => 'web', + 'defaults' => [ + 'guard' => 'web', 'passwords' => 'users', ], @@ -35,9 +35,9 @@ | */ - 'guards' => [ + 'guards' => [ 'web' => [ - 'driver' => 'session', + 'driver' => 'session', 'provider' => 'users', ], ], @@ -59,10 +59,10 @@ | */ - 'providers' => [ + 'providers' => [ 'users' => [ 'driver' => 'eloquent', - 'model' => App\Models\User::class, + 'model' => Modules\User\Models\User::class, ], // 'users' => [ @@ -90,11 +90,11 @@ | */ - 'passwords' => [ + 'passwords' => [ 'users' => [ 'provider' => 'users', - 'table' => 'password_reset_tokens', - 'expire' => 60, + 'table' => 'password_reset_tokens', + 'expire' => 60, 'throttle' => 60, ], ], diff --git a/resources/views/clients/table.blade.php b/resources/views/clients/table.blade.php index d5e8ced..b001a81 100644 --- a/resources/views/clients/table.blade.php +++ b/resources/views/clients/table.blade.php @@ -45,6 +45,7 @@