добавлен soft delete для компаний и агентов
This commit is contained in:
parent
457a77f7c2
commit
f011fd2eae
@ -46,4 +46,11 @@ public function restore($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');
|
||||
//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();
|
||||
return view('admin::companies.index', [
|
||||
@ -41,5 +47,14 @@ public function update(Request $request, Company $company)
|
||||
$company->update($request->only('name', 'email', 'phone'));
|
||||
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::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}/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::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}/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/managers', [Modules\Admin\Http\Controllers\AdminCityManagersController::class, 'index'])->name('admin.cities.managers');
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
@extends('layouts.admin')
|
||||
@section('content')
|
||||
<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') }}">
|
||||
<input type="radio" class="btn-check" name="filter" value="all" id="status_all" autocomplete="off"
|
||||
onclick="this.form.submit()" {{ $filter == 'all' || !$filter ? 'checked' : '' }}>
|
||||
@ -16,6 +16,7 @@
|
||||
@endforeach
|
||||
</form>
|
||||
<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">
|
||||
<i class="bi bi-plus"></i> Добавить комплекс
|
||||
</button>-->
|
||||
@ -63,11 +64,19 @@
|
||||
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
|
||||
<a class="dropdown-item"
|
||||
href="{{ route('admin.companies.edit', ['company' => $company]) }}">Редактировать</a>
|
||||
<form method="post"
|
||||
action="{{ route('admin.companies.delete', ['company' => $company]) }}">
|
||||
@if($company->trashed())
|
||||
<form method="post"
|
||||
action="{{ route('admin.companies.restore', ['company' => $company]) }}">
|
||||
@csrf
|
||||
<button class="dropdown-item" type="submit">Удалить</button>
|
||||
</form>
|
||||
<button class="dropdown-item" type="submit">Восстановить</button>
|
||||
</form>
|
||||
@else
|
||||
<form method="post"
|
||||
action="{{ route('admin.companies.delete', ['company' => $company]) }}">
|
||||
@csrf
|
||||
<button class="dropdown-item" type="submit">Удалить</button>
|
||||
</form>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</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', [
|
||||
//'agents' => $agents->get(),
|
||||
'status' => $request->status,
|
||||
'cities' => City::all()
|
||||
])->with('statuses', AgentStatus::class);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -27,7 +27,12 @@ public function __invoke(Request $request, Agent $agent)
|
||||
abort(404);
|
||||
return;
|
||||
}
|
||||
$agent->delete();
|
||||
|
||||
if ($agent->trashed()) {
|
||||
$agent->forceDelete();
|
||||
} else {
|
||||
$agent->delete();
|
||||
};
|
||||
return to_route('company.agents.table');
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,15 +2,19 @@
|
||||
|
||||
namespace Modules\Main\Models\Company;
|
||||
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Modules\Payment\Traits\Paymentable;
|
||||
use Modules\Main\Models\City;
|
||||
use Modules\Bitrix\Traits\Bitrixable;
|
||||
|
||||
|
||||
class Company extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
use SoftDeletes;
|
||||
use Paymentable;
|
||||
use Bitrixable;
|
||||
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('/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::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');
|
||||
|
||||
});
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<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">
|
||||
<tbody class="">
|
||||
@foreach ($agents as $num => $agent)
|
||||
@ -17,7 +17,7 @@
|
||||
{{ $agent->user->email }}
|
||||
</td>
|
||||
@if (!$agent->trashed())
|
||||
<td class="align-middle text-center">
|
||||
<td class="align-middle text-end ">
|
||||
<div class="dropdown" style="">
|
||||
<button class="btn btn-light" type="button" id="dropdownMenuButton"
|
||||
data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
@ -39,13 +39,26 @@
|
||||
</td>
|
||||
@else
|
||||
<td class="align-middle">
|
||||
{{ $agent->deleted_at->diffForHumans() }}
|
||||
<div>
|
||||
<a style="text-decoration: underline dotted;" href="#"
|
||||
wire:confirm = "Выбранный агент сможет создавать новые контакты.\nПродолжить?"
|
||||
wire:click = "restore({{ $agent->id }})">
|
||||
Восстановить
|
||||
</a>
|
||||
Уволен {{ $agent->deleted_at->diffForHumans() }}
|
||||
</td>
|
||||
<td class="align-middle text-end ">
|
||||
<div class="dropdown" style="">
|
||||
<button class="btn btn-light" type="button" id="dropdownMenuButton"
|
||||
data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<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>
|
||||
</td>
|
||||
@endif
|
||||
|
||||
Loading…
Reference in New Issue
Block a user