agents restore added

This commit is contained in:
Thekindbull 2025-04-04 14:24:17 +08:00
parent 2154ca1bec
commit 2c5dcebc84
5 changed files with 86 additions and 2 deletions

View File

@ -0,0 +1,32 @@
<?php
namespace App\Http\Controllers\Company;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Company\CompanyAdmin;
use App\Models\Agent\Agent;
use App\Models\User;
class RestoreAgentController extends Controller
{
public function __invoke($agentId)
{
$agent = Agent::withTrashed()->find($agentId);
$admin = CompanyAdmin::where('user_id', auth()->id())
->where(
'company_id',
$agent->company_id
);
if (!$admin->count())
{
abort(404);
return;
}
if (!Agent::where('user_id', $agent->user->id)->count())
{
$agent->restore();
}
return to_route('company.agents.table');
}
}

View File

@ -36,4 +36,17 @@ public function render()
] ]
); );
} }
public function dismiss($id)
{
to_route('company.agents.delete', [
'agent' => $id
]);
}
public function restore($id)
{
to_route('company.agents.restore', [
'agent' => $id
]);
}
} }

View File

@ -43,12 +43,22 @@ protected static function booted(): void
{ {
static::created(function (Agent $agent) static::created(function (Agent $agent)
{ {
UserRole::create([ UserRole::insertOrIgnore([
'user_id' => $agent->user_id, 'user_id' => $agent->user_id,
'role_id' => Role::AGENT 'role_id' => Role::AGENT
]); ]);
$agent->notify(); $agent->notify();
}); });
static::restored(function (Agent $agent)
{
UserRole::insertOrIgnore([
'user_id' => $agent->user_id,
'role_id' => Role::AGENT
]);
$agent->notify();
});
static::updated(function (Agent $agent) static::updated(function (Agent $agent)
{ {
if ($agent->trashed()) if ($agent->trashed())

View File

@ -18,7 +18,9 @@
</td> </td>
@if (!$agent->trashed()) @if (!$agent->trashed())
<td class="align-middle text-center bg-white"> <td class="align-middle text-center bg-white">
<a class="btn" href="{{ route('company.agents.delete', ['agent' => $agent->id]) }}"> <a class="btn"
wire:confirm = "Выбранный агент потеряет доступ к личному кабинету и больше не сможет создавать новые контакты.\nПродолжить?"
wire:click = "dismiss({{ $agent->id }})">
<svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25"
fill="currentColor" class="bi bi-person-dash" viewBox="0 0 16 16"> fill="currentColor" class="bi bi-person-dash" viewBox="0 0 16 16">
<path <path
@ -31,6 +33,13 @@
@else @else
<td class="align-middle"> <td class="align-middle">
{{ $agent->deleted_at->diffForHumans() }} {{ $agent->deleted_at->diffForHumans() }}
<div>
<a style="text-decoration: underline dotted;" href="#"
wire:confirm = "Выбранный агент сможет создавать новые контакты.\nПродолжить?"
wire:click = "restore({{ $agent->id }})">
Восстановить
</a>
</div>
</td> </td>
@endif @endif
</tr> </tr>
@ -41,4 +50,22 @@
<div class="mt-3"> <div class="mt-3">
{{ $agents->links('layouts.pagination') }} {{ $agents->links('layouts.pagination') }}
</div> </div>
<div class="modal fade" id="confirmModal" tabindex="-1" aria-labelledby="confirmModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5" id="exampleModalLabel">Подтвердите действие</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
Выбранный агент потеряет доступ к личному кабинету и больше не сможет создавать новые контакты.
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Отмена</button>
<button type="button" class="btn btn-danger">Продолжить</button>
</div>
</div>
</div>
</div>
</div> </div>

View File

@ -45,6 +45,8 @@
Route::get('/agents/table', [App\Http\Controllers\Company\AgentsTableController::class, 'index'])->name('company.agents.table'); Route::get('/agents/table', [App\Http\Controllers\Company\AgentsTableController::class, 'index'])->name('company.agents.table');
Route::post('/company/agents/store/', App\Http\Controllers\Company\CreateAgentController::class)->name('company.agents.store'); Route::post('/company/agents/store/', App\Http\Controllers\Company\CreateAgentController::class)->name('company.agents.store');
Route::get('/company/agents/{agent}/delete', App\Http\Controllers\Company\DeleteAgentController::class)->name('company.agents.delete'); Route::get('/company/agents/{agent}/delete', App\Http\Controllers\Company\DeleteAgentController::class)->name('company.agents.delete');
Route::get('/company/agents/{agent}/restore', App\Http\Controllers\Company\RestoreAgentController::class)->name('company.agents.restore');
}); });
//МАКЕТЫ //МАКЕТЫ