forked from aslan/applicant-site
refactoring Department resource
This commit is contained in:
parent
abfa800707
commit
35104455c2
|
@ -1,10 +1,10 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Catalog;
|
namespace App\Http\Controllers\admin\Catalog;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\StoreDepartmentRequest;
|
use App\Http\Requests\admin\Catalog\StoreDepartmentRequest;
|
||||||
use App\Http\Requests\UpdateDepartmentRequest;
|
use App\Http\Requests\admin\Catalog\UpdateDepartmentRequest;
|
||||||
use App\Models\Department;
|
use App\Models\Department;
|
||||||
use App\Models\Faculty;
|
use App\Models\Faculty;
|
||||||
use Illuminate\Contracts\View\Factory;
|
use Illuminate\Contracts\View\Factory;
|
||||||
|
@ -17,13 +17,13 @@ class DepartmentController extends Controller
|
||||||
public function index(): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
|
public function index(): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
|
||||||
{
|
{
|
||||||
$departments = Department::all();
|
$departments = Department::all();
|
||||||
return view('catalog.department.index', compact('departments'));
|
return view('admin.catalog.department.index', compact('departments'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function create(): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
|
public function create(): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
|
||||||
{
|
{
|
||||||
$faculties = Faculty::pluck('name', 'id');
|
$faculties = Faculty::pluck('name', 'id');
|
||||||
return view('catalog.department.create', compact('faculties'));
|
return view('admin.catalog.department.create', compact('faculties'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function store(StoreDepartmentRequest $request): RedirectResponse
|
public function store(StoreDepartmentRequest $request): RedirectResponse
|
||||||
|
@ -42,13 +42,15 @@ class DepartmentController extends Controller
|
||||||
|
|
||||||
public function show(Department $department): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
|
public function show(Department $department): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
|
||||||
{
|
{
|
||||||
return view('catalog.department.show', compact('department'));
|
$faculty = Faculty::find($department->faculty->id);
|
||||||
|
$educationalInstitution = $faculty->educationalInstitution;
|
||||||
|
return view('admin.catalog.department.show', compact('department', 'faculty', 'educationalInstitution'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function edit(Department $department): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
|
public function edit(Department $department): View|Application|Factory|\Illuminate\Contracts\Foundation\Application
|
||||||
{
|
{
|
||||||
$faculties = Faculty::pluck('name', 'id');
|
$faculties = Faculty::pluck('name', 'id');
|
||||||
return view('catalog.department.edit', compact('department', 'faculties'));
|
return view('admin.catalog.department.edit', compact('department', 'faculties'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update(UpdateDepartmentRequest $request, Department $department): RedirectResponse
|
public function update(UpdateDepartmentRequest $request, Department $department): RedirectResponse
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Requests\Catalog;
|
namespace App\Http\Requests\admin\Catalog;
|
||||||
|
|
||||||
use Illuminate\Contracts\Validation\ValidationRule;
|
use Illuminate\Contracts\Validation\ValidationRule;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
@ -26,7 +26,8 @@ class StoreDepartmentRequest extends FormRequest
|
||||||
'position' => 'required|int|max:255',
|
'position' => 'required|int|max:255',
|
||||||
'name' => 'required|string|max:255|unique:educational_institutions,name',
|
'name' => 'required|string|max:255|unique:educational_institutions,name',
|
||||||
'description' => 'string',
|
'description' => 'string',
|
||||||
'faculty_id' => 'required|int'
|
'slug' => 'required|string',
|
||||||
|
'faculty_id' => 'required|int',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,30 +1,22 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Requests\Catalog;
|
namespace App\Http\Requests\admin\Catalog;
|
||||||
|
|
||||||
use Illuminate\Contracts\Validation\ValidationRule;
|
use Illuminate\Contracts\Validation\ValidationRule;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
class UpdateDepartmentRequest extends FormRequest
|
class UpdateDepartmentRequest extends FormRequest
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Determine if the user is authorized to make this request.
|
|
||||||
*/
|
|
||||||
public function authorize(): bool
|
public function authorize(): bool
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the validation rules that apply to the request.
|
|
||||||
*
|
|
||||||
* @return array<string, ValidationRule|array<mixed>|string>
|
|
||||||
*/
|
|
||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'position' => 'int|max:255',
|
'position' => 'required|int|max:255',
|
||||||
'description' => 'string',
|
'description' => 'string',
|
||||||
|
'slug' => 'string|required',
|
||||||
'faculty_id' => 'int|required',
|
'faculty_id' => 'int|required',
|
||||||
'name' => [
|
'name' => [
|
||||||
'required',
|
'required',
|
|
@ -14,6 +14,7 @@ class Department extends Model
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
'id',
|
'id',
|
||||||
'name',
|
'name',
|
||||||
|
'slug',
|
||||||
'description',
|
'description',
|
||||||
'position',
|
'position',
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,66 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Policies;
|
|
||||||
|
|
||||||
use App\Models\Department;
|
|
||||||
use App\Models\User;
|
|
||||||
use Illuminate\Auth\Access\Response;
|
|
||||||
|
|
||||||
class DepartmentPolicy
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Determine whether the user can view any models.
|
|
||||||
*/
|
|
||||||
public function viewAny(User $user): bool
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine whether the user can view the model.
|
|
||||||
*/
|
|
||||||
public function view(User $user, Department $department): bool
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine whether the user can create models.
|
|
||||||
*/
|
|
||||||
public function create(User $user): bool
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine whether the user can update the model.
|
|
||||||
*/
|
|
||||||
public function update(User $user, Department $department): bool
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine whether the user can delete the model.
|
|
||||||
*/
|
|
||||||
public function delete(User $user, Department $department): bool
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine whether the user can restore the model.
|
|
||||||
*/
|
|
||||||
public function restore(User $user, Department $department): bool
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine whether the user can permanently delete the model.
|
|
||||||
*/
|
|
||||||
public function forceDelete(User $user, Department $department): bool
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -3,21 +3,19 @@
|
||||||
namespace Database\Factories;
|
namespace Database\Factories;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||||
|
use Illuminate\Support\Facades\Hash;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
|
||||||
/**
|
|
||||||
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Department>
|
|
||||||
*/
|
|
||||||
class DepartmentFactory extends Factory
|
class DepartmentFactory extends Factory
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Define the model's default state.
|
|
||||||
*
|
|
||||||
* @return array<string, mixed>
|
|
||||||
*/
|
|
||||||
public function definition(): array
|
public function definition(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
//
|
'name' => fake()->name(),
|
||||||
|
'description' => fake()->text(),
|
||||||
|
'slug' => fake()->slug(),
|
||||||
|
'position' => fake()->randomNumber(),
|
||||||
|
'faculty_id' => fake()->realTextBetween(1,5,1),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,8 +14,9 @@ return new class extends Migration
|
||||||
Schema::create('departments', function (Blueprint $table) {
|
Schema::create('departments', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
$table->string('name');
|
$table->string('name');
|
||||||
$table->string('description');
|
$table->text('description');
|
||||||
$table->integer('position');
|
$table->integer('position');
|
||||||
|
$table->string('slug');
|
||||||
$table->foreignId('faculty_id')->constrained('faculties');
|
$table->foreignId('faculty_id')->constrained('faculties');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
|
|
|
@ -20,12 +20,14 @@ class DepartmentSeeder extends Seeder
|
||||||
'name' => 'Кафедра инф. без.',
|
'name' => 'Кафедра инф. без.',
|
||||||
'description' => 'Кафедра инф. без. описание',
|
'description' => 'Кафедра инф. без. описание',
|
||||||
'position' => 1,
|
'position' => 1,
|
||||||
|
'slug' => 'departmentInfWithout',
|
||||||
'faculty_id' => 1,
|
'faculty_id' => 1,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'name' => 'кафедра стоматологии',
|
'name' => 'кафедра стоматологии',
|
||||||
'description' => 'кафедра стоматологии описание',
|
'description' => 'кафедра стоматологии описание',
|
||||||
'position' => 2,
|
'position' => 2,
|
||||||
|
'slug' => 'departmentOfDentistry',
|
||||||
'faculty_id' => 2,
|
'faculty_id' => 2,
|
||||||
],
|
],
|
||||||
]);
|
]);
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
<th scope="col">Позиция</th>
|
<th scope="col">Позиция</th>
|
||||||
<th scope="col">Название</th>
|
<th scope="col">Название</th>
|
||||||
<th scope="col">Описание</th>
|
<th scope="col">Описание</th>
|
||||||
|
<th scope="col">URL</th>
|
||||||
<th scope="col">Факультет</th>
|
<th scope="col">Факультет</th>
|
||||||
<th scope="col">действия</th>
|
<th scope="col">действия</th>
|
||||||
<th scope="col"></th>
|
<th scope="col"></th>
|
||||||
|
@ -24,6 +25,7 @@
|
||||||
<th scope="row">{{ $department->position }}</th>
|
<th scope="row">{{ $department->position }}</th>
|
||||||
<td><a href="{{ route('departments.show', $department) }}">{{ $department->name }}</a></td>
|
<td><a href="{{ route('departments.show', $department) }}">{{ $department->name }}</a></td>
|
||||||
<td>{{ Str::words($department->description, 10, '...') }}</td>
|
<td>{{ Str::words($department->description, 10, '...') }}</td>
|
||||||
|
<td>{{ $department->slug }}</td>
|
||||||
<td>{{ $department->faculty->name }}</td>
|
<td>{{ $department->faculty->name }}</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{{ route("departments.edit", $department) }}"
|
<a href="{{ route("departments.edit", $department) }}"
|
|
@ -1,17 +1,9 @@
|
||||||
@php
|
|
||||||
use App\Models\Department;
|
|
||||||
use App\Models\Faculty;
|
|
||||||
use Illuminate\Support\Collection;
|
|
||||||
/** @var Collection|Department[] $department */
|
|
||||||
|
|
||||||
$faculty = Faculty::find($department->faculty->id)
|
|
||||||
@endphp
|
|
||||||
@extends('layouts.admin-layout')
|
@extends('layouts.admin-layout')
|
||||||
@section('content')
|
@section('content')
|
||||||
@auth()
|
@auth()
|
||||||
<h6>
|
<h6>
|
||||||
<a href="{{ route('educational-institutions.show', $faculty->educationalInstitution) }}">
|
<a href="{{ route('educational-institutions.show', $educationalInstitution) }}">
|
||||||
{{ $faculty->educationalInstitution->name }}
|
{{ $educationalInstitution->name }}
|
||||||
</a>-> <a href="{{ route('faculties.show', $faculty) }}">{{ $faculty->name }}</a>
|
</a>-> <a href="{{ route('faculties.show', $faculty) }}">{{ $faculty->name }}</a>
|
||||||
-> {{ $department->name }}
|
-> {{ $department->name }}
|
||||||
</h6>
|
</h6>
|
||||||
|
@ -22,10 +14,10 @@
|
||||||
<p>{{ $department->description }}</p>
|
<p>{{ $department->description }}</p>
|
||||||
<h2>Позиция</h2>
|
<h2>Позиция</h2>
|
||||||
<p>{{ $department->position }}</p>
|
<p>{{ $department->position }}</p>
|
||||||
{{-- <h2>Факультеты</h2>--}}
|
<h2>Направления подготовки</h2>
|
||||||
{{-- @foreach($department->faculties as $faculty)--}}
|
@foreach($department->directions as $direction)
|
||||||
{{-- <p><a href="{{ route('faculties.show', $faculty) }}">{{ $faculty->name }}</a></p>--}}
|
<p><a href="{{ route('faculties.show', $direction) }}">{{ $direction->name }}</a></p>
|
||||||
{{-- @endforeach--}}
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
@endauth
|
@endauth
|
||||||
@endsection
|
@endsection
|
|
@ -1,31 +1,33 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
use App\Http\Controllers\Catalog\DepartmentController;
|
use App\Http\Controllers\admin\Catalog\DepartmentController;
|
||||||
use App\Http\Controllers\Catalog\DirectionController;
|
use App\Http\Controllers\admin\Catalog\DirectionController;
|
||||||
use App\Http\Controllers\Catalog\EducationalInstitutionController;
|
use App\Http\Controllers\admin\Catalog\EducationalInstitutionController;
|
||||||
use App\Http\Controllers\Catalog\FacultyController;
|
use App\Http\Controllers\admin\Catalog\FacultyController;
|
||||||
use App\Http\Controllers\DocumentController;
|
use App\Http\Controllers\admin\DocumentController;
|
||||||
use App\Http\Controllers\ReceptionScreenController;
|
use App\Http\Controllers\admin\ReceptionScreenController;
|
||||||
use App\Http\Controllers\UserController;
|
use App\Http\Controllers\admin\UserController;
|
||||||
|
|
||||||
Route::middleware(['auth', 'verified'])->prefix('admin')->group(function () {
|
Route::middleware(['auth', 'verified'])->prefix('admin')->group(function () {
|
||||||
Route::get('/dashboard', function () {
|
Route::get('/dashboard', function () {
|
||||||
return view('admin');
|
return view('admin');
|
||||||
})->name('dashboard');
|
})->name('dashboard');
|
||||||
|
|
||||||
Route::get('/files/create/{document?}', [DocumentController::class, 'create'])->name('document_create');
|
Route::get('/documents/create/{document?}', [DocumentController::class, 'create'])->name('documents_create');
|
||||||
Route::get('/files/download/{Document}', [DocumentController::class, 'download'])->name('document.download');
|
Route::get('/documents/download/{Document}', [DocumentController::class, 'download'])->name('documents_download');
|
||||||
|
|
||||||
Route::resource('/educational-institutions', EducationalInstitutionController::class)
|
Route::resource('/educational-institutions', EducationalInstitutionController::class)
|
||||||
->scoped(['educational_institution' => 'slug']);
|
->scoped(['educational_institution' => 'slug']);
|
||||||
Route::resource('/directions', DirectionController::class)
|
Route::resource('/directions', DirectionController::class)
|
||||||
->scoped(['educational_institution' => 'slug']);
|
->scoped(['directions' => 'slug']);
|
||||||
|
|
||||||
|
Route::resource('/departments', DepartmentController::class)
|
||||||
|
->scoped(['department' => 'slug']);
|
||||||
|
|
||||||
Route::resources([
|
Route::resources([
|
||||||
'/files' => DocumentController::class,
|
'/documents' => DocumentController::class,
|
||||||
'/users' => UserController::class,
|
'/users' => UserController::class,
|
||||||
'/admin-reception-screen' => ReceptionScreenController::class,
|
'/admin-reception-screen' => ReceptionScreenController::class,
|
||||||
'/faculties' => FacultyController::class,
|
'/faculties' => FacultyController::class,
|
||||||
'/departments' => DepartmentController::class,
|
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue