добавлен soft delete для компаний и агентов
This commit is contained in:
parent
457a77f7c2
commit
f011fd2eae
@ -46,4 +46,11 @@ public function restore($id)
|
|||||||
'agent' => $id
|
'agent' => $id
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function delete($id)
|
||||||
|
{
|
||||||
|
to_route('company.agents.delete', [
|
||||||
|
'agent' => $id
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,9 +16,15 @@ public function index(Request $request)
|
|||||||
{
|
{
|
||||||
$companies = Company::orderBy('name');
|
$companies = Company::orderBy('name');
|
||||||
//if ($request->filter) {
|
//if ($request->filter) {
|
||||||
if (!(!$request->filter || $request->filter == 'all'))
|
if ($request->filter)
|
||||||
{
|
{
|
||||||
$companies->where('status', $request->filter);
|
if ($request->filter == 'trashed') {
|
||||||
|
$companies->onlyTrashed();
|
||||||
|
} else {
|
||||||
|
if ($request->filter != 'all') {
|
||||||
|
$companies->where('status', $request->filter);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$companies = $companies->get();
|
$companies = $companies->get();
|
||||||
return view('admin::companies.index', [
|
return view('admin::companies.index', [
|
||||||
@ -41,5 +47,14 @@ public function update(Request $request, Company $company)
|
|||||||
$company->update($request->only('name', 'email', 'phone'));
|
$company->update($request->only('name', 'email', 'phone'));
|
||||||
return to_route('admin.companies.edit', ['company' => $company]);
|
return to_route('admin.companies.edit', ['company' => $company]);
|
||||||
}
|
}
|
||||||
|
public function delete(Company $company) {
|
||||||
|
$company->delete();
|
||||||
|
return back()->withSuccess('Агентство было перемещено в корзину. Все пользователи, прикрепленные к агентству не смогут войти на портал.');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function restore(Company $company) {
|
||||||
|
$company->restore();
|
||||||
|
return to_route('admin.companies.edit', ['company' => $company])->withSuccess('Агентство "' . $company->name . '" было восстановлено из корзины');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,11 +29,14 @@
|
|||||||
Route::post('/admin/users/create', [Modules\Admin\Http\Controllers\AdminUsersController::class, 'store'])->name('admin.users.create');
|
Route::post('/admin/users/create', [Modules\Admin\Http\Controllers\AdminUsersController::class, 'store'])->name('admin.users.create');
|
||||||
Route::get('/admin/users/{user}/edit', [Modules\Admin\Http\Controllers\AdminUsersController::class, 'edit'])->name('admin.users.edit');
|
Route::get('/admin/users/{user}/edit', [Modules\Admin\Http\Controllers\AdminUsersController::class, 'edit'])->name('admin.users.edit');
|
||||||
Route::post('/admin/users/{user}/update', [Modules\Admin\Http\Controllers\AdminUsersController::class, 'update'])->name('admin.users.update');
|
Route::post('/admin/users/{user}/update', [Modules\Admin\Http\Controllers\AdminUsersController::class, 'update'])->name('admin.users.update');
|
||||||
|
Route::post('/admin/users/{user}/delete', [Modules\Admin\Http\Controllers\AdminUsersController::class, 'delete'])->name('admin.users.delete');
|
||||||
|
|
||||||
Route::post('/admin/user-role/{userRole}/delete', [Modules\Admin\Http\Controllers\AdminUsersController::class, 'deleteUserRole'])->name('admin.users.role.delete');
|
Route::post('/admin/user-role/{userRole}/delete', [Modules\Admin\Http\Controllers\AdminUsersController::class, 'deleteUserRole'])->name('admin.users.role.delete');
|
||||||
Route::get('/admin/companies', [Modules\Admin\Http\Controllers\AdminCompaniesController::class, 'index'])->name('admin.companies');
|
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::get('/admin/companies/{company}/edit', [Modules\Admin\Http\Controllers\AdminCompaniesController::class, 'edit'])->name('admin.companies.edit')->withTrashed();
|
||||||
Route::post('/admin/companies/{company}/update', [Modules\Admin\Http\Controllers\AdminCompaniesController::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::post('/admin/companies/{company}/delete', [Modules\Admin\Http\Controllers\AdminCompaniesController::class, 'delete'])->name('admin.companies.delete');
|
||||||
|
Route::post('/admin/companies/{company}/restore', [Modules\Admin\Http\Controllers\AdminCompaniesController::class, 'restore'])->name('admin.companies.restore')->withTrashed();
|
||||||
Route::get('/admin/cities', [Modules\Admin\Http\Controllers\AdminCitiesController::class, 'index'])->name('admin.cities');
|
Route::get('/admin/cities', [Modules\Admin\Http\Controllers\AdminCitiesController::class, 'index'])->name('admin.cities');
|
||||||
|
|
||||||
Route::get('/admin/cities/managers', [Modules\Admin\Http\Controllers\AdminCityManagersController::class, 'index'])->name('admin.cities.managers');
|
Route::get('/admin/cities/managers', [Modules\Admin\Http\Controllers\AdminCityManagersController::class, 'index'])->name('admin.cities.managers');
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
@extends('layouts.admin')
|
@extends('layouts.admin')
|
||||||
@section('content')
|
@section('content')
|
||||||
<div>
|
<div>
|
||||||
<div class="d-flex mb-3">
|
<div class="d-flex mb-3 align-items-center">
|
||||||
<form class="p-2 border rounded-3 border-1 bg-white" method="GET" action="{{ route('admin.companies') }}">
|
<form class="p-2 border rounded-3 border-1 bg-white" method="GET" action="{{ route('admin.companies') }}">
|
||||||
<input type="radio" class="btn-check" name="filter" value="all" id="status_all" autocomplete="off"
|
<input type="radio" class="btn-check" name="filter" value="all" id="status_all" autocomplete="off"
|
||||||
onclick="this.form.submit()" {{ $filter == 'all' || !$filter ? 'checked' : '' }}>
|
onclick="this.form.submit()" {{ $filter == 'all' || !$filter ? 'checked' : '' }}>
|
||||||
@ -16,6 +16,7 @@
|
|||||||
@endforeach
|
@endforeach
|
||||||
</form>
|
</form>
|
||||||
<div class="ms-auto p-2">
|
<div class="ms-auto p-2">
|
||||||
|
<a class="btn btn-secondary" href="{{ route('admin.companies', ['filter' => 'trashed']) }}">Удаленные</a>
|
||||||
<!--<button class="btn btn-primary py-2 px-3 fs-5" data-bs-toggle="modal" data-bs-target="#createCityModal">
|
<!--<button class="btn btn-primary py-2 px-3 fs-5" data-bs-toggle="modal" data-bs-target="#createCityModal">
|
||||||
<i class="bi bi-plus"></i> Добавить комплекс
|
<i class="bi bi-plus"></i> Добавить комплекс
|
||||||
</button>-->
|
</button>-->
|
||||||
@ -63,11 +64,19 @@
|
|||||||
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
|
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
|
||||||
<a class="dropdown-item"
|
<a class="dropdown-item"
|
||||||
href="{{ route('admin.companies.edit', ['company' => $company]) }}">Редактировать</a>
|
href="{{ route('admin.companies.edit', ['company' => $company]) }}">Редактировать</a>
|
||||||
<form method="post"
|
@if($company->trashed())
|
||||||
action="{{ route('admin.companies.delete', ['company' => $company]) }}">
|
<form method="post"
|
||||||
|
action="{{ route('admin.companies.restore', ['company' => $company]) }}">
|
||||||
@csrf
|
@csrf
|
||||||
<button class="dropdown-item" type="submit">Удалить</button>
|
<button class="dropdown-item" type="submit">Восстановить</button>
|
||||||
</form>
|
</form>
|
||||||
|
@else
|
||||||
|
<form method="post"
|
||||||
|
action="{{ route('admin.companies.delete', ['company' => $company]) }}">
|
||||||
|
@csrf
|
||||||
|
<button class="dropdown-item" type="submit">Удалить</button>
|
||||||
|
</form>
|
||||||
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('companies', function (Blueprint $table)
|
||||||
|
{
|
||||||
|
$table->softDeletes();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('companies', function (Blueprint $table)
|
||||||
|
{
|
||||||
|
$table->dropSoftDeletes();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@ -23,10 +23,8 @@ public function index(Request $request)
|
|||||||
}
|
}
|
||||||
|
|
||||||
return view('main::company.agents.table', [
|
return view('main::company.agents.table', [
|
||||||
//'agents' => $agents->get(),
|
|
||||||
'status' => $request->status,
|
'status' => $request->status,
|
||||||
'cities' => City::all()
|
'cities' => City::all()
|
||||||
])->with('statuses', AgentStatus::class);
|
])->with('statuses', AgentStatus::class);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,7 +27,12 @@ public function __invoke(Request $request, Agent $agent)
|
|||||||
abort(404);
|
abort(404);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$agent->delete();
|
|
||||||
|
if ($agent->trashed()) {
|
||||||
|
$agent->forceDelete();
|
||||||
|
} else {
|
||||||
|
$agent->delete();
|
||||||
|
};
|
||||||
return to_route('company.agents.table');
|
return to_route('company.agents.table');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,15 +2,19 @@
|
|||||||
|
|
||||||
namespace Modules\Main\Models\Company;
|
namespace Modules\Main\Models\Company;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Modules\Payment\Traits\Paymentable;
|
use Modules\Payment\Traits\Paymentable;
|
||||||
use Modules\Main\Models\City;
|
use Modules\Main\Models\City;
|
||||||
use Modules\Bitrix\Traits\Bitrixable;
|
use Modules\Bitrix\Traits\Bitrixable;
|
||||||
|
|
||||||
|
|
||||||
class Company extends Model
|
class Company extends Model
|
||||||
{
|
{
|
||||||
use HasFactory;
|
use HasFactory;
|
||||||
|
use SoftDeletes;
|
||||||
use Paymentable;
|
use Paymentable;
|
||||||
use Bitrixable;
|
use Bitrixable;
|
||||||
const STATUS_NEW = 'new';
|
const STATUS_NEW = 'new';
|
||||||
|
|||||||
@ -29,7 +29,7 @@
|
|||||||
//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/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');
|
||||||
Route::post('/company/agents/{agent}/password/reset/', Modules\Main\Http\Controllers\Company\ResetAgentPasswordController::class)->name('company.agent.password.reset');
|
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}/delete', Modules\Main\Http\Controllers\Company\DeleteAgentController::class)->name('company.agents.delete')->withTrashed();
|
||||||
Route::get('/company/agents/{agent}/restore', Modules\Main\Http\Controllers\Company\RestoreAgentController::class)->name('company.agents.restore');
|
Route::get('/company/agents/{agent}/restore', Modules\Main\Http\Controllers\Company\RestoreAgentController::class)->name('company.agents.restore');
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<div>
|
<div>
|
||||||
<div class="fs-5 bg-light p-0 m-0 border border-1 rounded-4 overflow-hidden">
|
<div class="fs-5 bg-light py-4 m-0 border border-1 rounded-4">
|
||||||
<table class="table m-0">
|
<table class="table m-0">
|
||||||
<tbody class="">
|
<tbody class="">
|
||||||
@foreach ($agents as $num => $agent)
|
@foreach ($agents as $num => $agent)
|
||||||
@ -17,7 +17,7 @@
|
|||||||
{{ $agent->user->email }}
|
{{ $agent->user->email }}
|
||||||
</td>
|
</td>
|
||||||
@if (!$agent->trashed())
|
@if (!$agent->trashed())
|
||||||
<td class="align-middle text-center">
|
<td class="align-middle text-end ">
|
||||||
<div class="dropdown" style="">
|
<div class="dropdown" style="">
|
||||||
<button class="btn btn-light" type="button" id="dropdownMenuButton"
|
<button class="btn btn-light" type="button" id="dropdownMenuButton"
|
||||||
data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
@ -39,13 +39,26 @@
|
|||||||
</td>
|
</td>
|
||||||
@else
|
@else
|
||||||
<td class="align-middle">
|
<td class="align-middle">
|
||||||
{{ $agent->deleted_at->diffForHumans() }}
|
Уволен {{ $agent->deleted_at->diffForHumans() }}
|
||||||
<div>
|
</td>
|
||||||
<a style="text-decoration: underline dotted;" href="#"
|
<td class="align-middle text-end ">
|
||||||
wire:confirm = "Выбранный агент сможет создавать новые контакты.\nПродолжить?"
|
<div class="dropdown" style="">
|
||||||
wire:click = "restore({{ $agent->id }})">
|
<button class="btn btn-light" type="button" id="dropdownMenuButton"
|
||||||
Восстановить
|
data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
</a>
|
<i class="bi bi-three-dots-vertical"></i>
|
||||||
|
</button>
|
||||||
|
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
|
||||||
|
<a class="dropdown-item"
|
||||||
|
wire:confirm = "Выбранный агент сможет создавать новые контакты.\nПродолжить?"
|
||||||
|
wire:click = "restore({{ $agent->id }})">
|
||||||
|
Восстановить
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item"
|
||||||
|
wire:confirm = "Запись об этом агенте и всех его контактах будут безвозвратно удалены.\nПродолжить?"
|
||||||
|
wire:click = "delete({{ $agent->id }})">
|
||||||
|
Удалить навсегда
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@endif
|
@endif
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user