Агенты
@@ -63,7 +110,7 @@
{{ $companyAgent->user->name }}
- {{ $companyAgent->created_at->diffForHumans() }}
+ {{ $companyAgent->created_at?->diffForHumans() }}
|
@@ -86,4 +133,5 @@
@livewire('company.agent.create', ['containerId' => 'createAgentModal', 'companyId' => $company->id])
+ @livewire('company.admin.create', ['containerId' => 'createCompanyAdminModal', 'companyId' => $company->id])
@endsection
diff --git a/app/Modules/Main/Http/Controllers/Company/CreateAdminController.php b/app/Modules/Main/Http/Controllers/Company/CreateAdminController.php
new file mode 100644
index 0000000..b0f9710
--- /dev/null
+++ b/app/Modules/Main/Http/Controllers/Company/CreateAdminController.php
@@ -0,0 +1,60 @@
+company_id);
+ if ($request->user()->cannot('update', $company))
+ {
+ abort(403, 'Unauthorized action');
+ }
+
+ $user = User::where('email', $request->email)->orWhere('phone', $request->phone)->first();
+ if ($user)
+ {
+ if ($user->id !== auth()->id()) //если это не текущий пользователь-админ, который хочет себя сделать агентом, то ошибка
+ {
+ if (CompanyAdmin::where('user_id', $user->id)->count()) // и если этот пользователь уже админ
+ {
+ return back()->with('error', __('Admin is not unique'));
+ }
+ }
+ }
+ else
+ {
+ $user = $user = User::create($request->all());
+ }
+
+ if ($user)
+ {
+ CompanyAdmin::where('user_id', $user->id)->delete(); //на случай, если где-то этот пользователь уже был админом
+ $agent = CompanyAdmin::create([
+ 'user_id' => $user->id,
+ 'company_id' => $company->id
+ ]);
+ }
+
+ if ($request->sendToEmail)
+ {
+ $user->setForcedPassword();
+ }
+ else
+ {
+ $password = $user->setForcedPassword(false);
+ return back()->with('success', 'Пароль для пользователя установлен: ' . $password);
+ }
+ return back();
+ }
+}
diff --git a/app/Modules/Main/Http/Livewire/CreateCompanyAdminLivewire.php b/app/Modules/Main/Http/Livewire/CreateCompanyAdminLivewire.php
new file mode 100644
index 0000000..900e28c
--- /dev/null
+++ b/app/Modules/Main/Http/Livewire/CreateCompanyAdminLivewire.php
@@ -0,0 +1,32 @@
+containerId = $containerId;
+ $availableCompaniesIds = GetAvailableAgents('Builder')->pluck('company_id');
+ $this->availableCompanies = Company::whereIn('id', $availableCompaniesIds)->get();
+ if ($this->availableCompanies->count() == 1) {
+ $this->companyId = $this->availableCompanies->first()->id;
+ };
+ }
+
+ public function render()
+ {
+ return view('main::company.livewire.createAdmin', [
+ ]);
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/Modules/Main/Models/Company/CompanyAdmin.php b/app/Modules/Main/Models/Company/CompanyAdmin.php
index e2baf03..fcf4fa5 100644
--- a/app/Modules/Main/Models/Company/CompanyAdmin.php
+++ b/app/Modules/Main/Models/Company/CompanyAdmin.php
@@ -5,6 +5,7 @@
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
+use Modules\User\Models\User;
use Modules\User\Models\UserRole;
use Modules\User\Models\Role;
@@ -19,6 +20,10 @@ public function company()
{
return $this->belongsTo(Company::class);
}
+ public function user()
+ {
+ return $this->belongsTo(User::class);
+ }
protected static function booted(): void
{
static::created(function (CompanyAdmin $admin)
diff --git a/app/Modules/Main/Providers/ModuleServiceProvider.php b/app/Modules/Main/Providers/ModuleServiceProvider.php
index 6bf4867..2d7762a 100644
--- a/app/Modules/Main/Providers/ModuleServiceProvider.php
+++ b/app/Modules/Main/Providers/ModuleServiceProvider.php
@@ -67,6 +67,7 @@ protected function registerLivewire()
{
//Livewire::component('', \Modules\\Http\Livewire\::class);
Livewire::component('company.agent.create', \Modules\Main\Http\Livewire\CreateAgentLivewire::class);
+ Livewire::component('company.admin.create', \Modules\Main\Http\Livewire\CreateCompanyAdminLivewire::class);
}
protected function registerComponent()
diff --git a/app/Modules/Main/Routes/web.php b/app/Modules/Main/Routes/web.php
index 0ffc8ac..e83943c 100644
--- a/app/Modules/Main/Routes/web.php
+++ b/app/Modules/Main/Routes/web.php
@@ -22,6 +22,9 @@
{
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::post('/companies/admins/store/', Modules\Main\Http\Controllers\Company\CreateAdminController::class)->name('company.admin.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('/companies/agents/store/', Modules\Main\Http\Controllers\Company\CreateAgentController::class)->name('company.agents.store');
diff --git a/app/Modules/Main/Views/company/livewire/createAdmin.blade.php b/app/Modules/Main/Views/company/livewire/createAdmin.blade.php
new file mode 100644
index 0000000..3b38599
--- /dev/null
+++ b/app/Modules/Main/Views/company/livewire/createAdmin.blade.php
@@ -0,0 +1,67 @@
+
\ No newline at end of file
|