From 240351d83266270246684391b0b8affc4f10458d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=91=D0=B0=D0=B1=D0=BA=D0=B8=D0=BD?= Date: Mon, 4 Jul 2022 16:04:58 +0300 Subject: [PATCH] AUK ready --- app/Http/Controllers/AUKController.php | 63 ++++++++++++--- app/Models/AUK.php | 26 ++++++ app/Models/Project.php | 10 ++- .../2022_07_04_145512_create_auks_table.php | 36 +++++++++ resources/views/auks/actions.blade.php | 16 ++++ resources/views/auks/create.blade.php | 75 +++++++++++++++++ resources/views/auks/edit.blade.php | 81 +++++++++++++++++++ resources/views/auks/list.blade.php | 64 +++++++++++++++ resources/views/auks/optionChild.blade.php | 9 +++ .../views/auks/optionChildSelected.blade.php | 14 ++++ resources/views/auks/show.blade.php | 51 ++++++++++++ resources/views/auks/tableChild.blade.php | 19 +++++ resources/views/documents/edit.blade.php | 2 +- resources/views/layouts/navigation.blade.php | 2 +- routes/web.php | 4 +- 15 files changed, 458 insertions(+), 14 deletions(-) create mode 100644 app/Models/AUK.php create mode 100644 database/migrations/2022_07_04_145512_create_auks_table.php create mode 100644 resources/views/auks/actions.blade.php create mode 100644 resources/views/auks/create.blade.php create mode 100644 resources/views/auks/edit.blade.php create mode 100644 resources/views/auks/list.blade.php create mode 100644 resources/views/auks/optionChild.blade.php create mode 100644 resources/views/auks/optionChildSelected.blade.php create mode 100644 resources/views/auks/show.blade.php create mode 100644 resources/views/auks/tableChild.blade.php diff --git a/app/Http/Controllers/AUKController.php b/app/Http/Controllers/AUKController.php index 0bad42e..3903175 100644 --- a/app/Http/Controllers/AUKController.php +++ b/app/Http/Controllers/AUKController.php @@ -3,27 +3,37 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; +use App\Models\AUK; +use App\Models\Project; class AUKController extends Controller { /** * Display a listing of the resource. * + * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ - public function index() + public function index(Request $request) { - // + $project_id = $request->session()->get('project_id'); + $project = Project::find($project_id); + $top_auks = $project->auks()->where('parent_id',0)->get(); + return view('auks.list', ['project' => $project, 'top_auks' => $top_auks]); } /** * Show the form for creating a new resource. * + * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ - public function create() + public function create(Request $request) { - // + $project_id = $request->session()->get('project_id'); + $project = Project::find($project_id); + $top_auks = $project->auks()->where('parent_id',0)->get(); + return view('auks.create', ['project' => $project, 'top_auks' => $top_auks]); } /** @@ -34,7 +44,22 @@ class AUKController extends Controller */ public function store(Request $request) { - // + $project_id = $request->session()->get('project_id'); + $request->validate([ + 'name' => ['required', 'string', 'max:255'], + 'number' => ['required', 'integer'], + 'parent_id' => ['required', 'integer'], + ]); + + // $user = + AUK::create([ + 'project_id' => $project_id, + 'name' => $request->name, + 'number' => $request->number, + 'parent_id' => $request->parent_id, + ]); + + return redirect(route('auks.index')); } /** @@ -51,12 +76,17 @@ class AUKController extends Controller /** * Show the form for editing the specified resource. * + * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ - public function edit($id) + public function edit(Request $request,$id) { - // + $project_id = $request->session()->get('project_id'); + $project = Project::find($project_id); + $top_auks = $project->auks()->where('parent_id',0)->get(); + $auk = AUK::find($id); + return view('auks.edit', ['project' => $project, 'top_auks' => $top_auks, 'auk' => $auk]); } /** @@ -68,7 +98,21 @@ class AUKController extends Controller */ public function update(Request $request, $id) { - // + $project_id = $request->session()->get('project_id'); + $request->validate([ + 'name' => ['required', 'string', 'max:255'], + 'number' => ['required', 'integer'], + 'parent_id' => 'required|integer|different:id', + ]); + + $document = AUK::find($id); + $document->project_id = $project_id; + $document->name = $request->name; + $document->number = $request->number; + $document->parent_id = $request->parent_id; + $document->save(); + + return redirect()->route('auks.index'); } /** @@ -79,6 +123,7 @@ class AUKController extends Controller */ public function destroy($id) { - // + AUK::findOrFail($id)->delete(); + return redirect()->route('auks.index'); } } diff --git a/app/Models/AUK.php b/app/Models/AUK.php new file mode 100644 index 0000000..d23514c --- /dev/null +++ b/app/Models/AUK.php @@ -0,0 +1,26 @@ +hasMany('App\Models\AUK','parent_id','id'); + } +} + diff --git a/app/Models/Project.php b/app/Models/Project.php index 05dce2d..068d362 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -4,10 +4,12 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\SoftDeletes; + class Project extends Model { - use HasFactory; + use HasFactory, SoftDeletes; protected $fillable = [ 'name', 'description', @@ -18,4 +20,10 @@ class Project extends Model { return $this->hasMany(Document::class); } + + public function auks() + { + return $this->hasMany(AUK::class); + } + } diff --git a/database/migrations/2022_07_04_145512_create_auks_table.php b/database/migrations/2022_07_04_145512_create_auks_table.php new file mode 100644 index 0000000..8c05c51 --- /dev/null +++ b/database/migrations/2022_07_04_145512_create_auks_table.php @@ -0,0 +1,36 @@ +id(); + $table->integer('project_id')->unsigned(); + $table->string('name'); + $table->integer('number'); + $table->integer('parent_id')->unsigned()->nullable(); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('auks'); + } +} diff --git a/resources/views/auks/actions.blade.php b/resources/views/auks/actions.blade.php new file mode 100644 index 0000000..45ffdec --- /dev/null +++ b/resources/views/auks/actions.blade.php @@ -0,0 +1,16 @@ +{{-- + + --}} + + + +@if (!count($auk->childs)) +
+ + + +
+@endif diff --git a/resources/views/auks/create.blade.php b/resources/views/auks/create.blade.php new file mode 100644 index 0000000..8ac79ff --- /dev/null +++ b/resources/views/auks/create.blade.php @@ -0,0 +1,75 @@ + + +

+ {{ $project->name }}: {{ __('Create AUK') }} +

+
+ +
+
+
+
+
+ @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif +
+ @csrf + +
+ + + +
+ +
+ + + +
+ +
+ + + + + @foreach ($top_auks as $auks) + + @if (count($auks->childs)) + @include('auks.optionChild', [ + 'childs' => $auks->childs, + 'level' => 1, + ]) + @endif + @endforeach + +
+ + +
+ + +
+
+
+
+
+
+
+
diff --git a/resources/views/auks/edit.blade.php b/resources/views/auks/edit.blade.php new file mode 100644 index 0000000..dd4809e --- /dev/null +++ b/resources/views/auks/edit.blade.php @@ -0,0 +1,81 @@ + + +

+ {{ $project->name }}: {{ __('Edit AUK') }} +

+
+ +
+
+
+
+
+ @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif +
+ @csrf + @method('PUT') + +
+ + + +
+ +
+ + + +
+ +
+ + + + + @foreach ($top_auks as $top_auk) + @if ($auk->parent_id == $top_auk->id) + + @else + + @endif + @if (count($top_auk->childs)) + @include('documents.optionChildSelected', [ + 'childs' => $top_auk->childs, + 'parent_id' => $top_auk->parent_id, + 'level' => 1, + ]) + @endif + @endforeach + +
+ + +
+ + +
+
+
+
+
+
+
+
diff --git a/resources/views/auks/list.blade.php b/resources/views/auks/list.blade.php new file mode 100644 index 0000000..f8bc9bb --- /dev/null +++ b/resources/views/auks/list.blade.php @@ -0,0 +1,64 @@ + + +

+ {{ $project->name }}: {{ __('AUK list') }} +

+
+ +
+
+
+
+ + + + +
+ + + + + + + @forelse ($top_auks as $top_auk) + + + + + + + @if (count($top_auk->childs)) + @php + $level = 1; + @endphp + @include('auks.tableChild', [ + 'childs' => $top_auk->childs, + 'level' => $level, + ]) + @endif + + + @empty + + + + @endforelse +
+ {{ __('Title') }} + + {{ __('Number') }} + + {{ __('Actions') }} +
{{ $top_auk->name }}{{ $top_auk->number }} +
+ @include('auks.actions', ['auk' => $top_auk]) +
+
No AUKs!
+
+
+
+
+
+
diff --git a/resources/views/auks/optionChild.blade.php b/resources/views/auks/optionChild.blade.php new file mode 100644 index 0000000..c792148 --- /dev/null +++ b/resources/views/auks/optionChild.blade.php @@ -0,0 +1,9 @@ +@foreach ($childs as $child) + + @if (count($child->childs)) + @include('documents.optionChild', [ + 'childs' => $child->childs, + 'level' => $level + 1, + ]) + @endif +@endforeach diff --git a/resources/views/auks/optionChildSelected.blade.php b/resources/views/auks/optionChildSelected.blade.php new file mode 100644 index 0000000..a2883ff --- /dev/null +++ b/resources/views/auks/optionChildSelected.blade.php @@ -0,0 +1,14 @@ +@foreach ($childs as $child) + @if ($parent_id == $child->id) + + @else + + @endif + @if (count($child->childs)) + @include('auks.optionChildSelected', [ + 'childs' => $child->childs, + 'parent_id' => $auk->parent_id, + 'level' => $level + 1, + ]) + @endif +@endforeach diff --git a/resources/views/auks/show.blade.php b/resources/views/auks/show.blade.php new file mode 100644 index 0000000..70d0807 --- /dev/null +++ b/resources/views/auks/show.blade.php @@ -0,0 +1,51 @@ + + +

+ {{ __('Show project') }} +

+
+ +
+
+
+
+
+
+ + + +
+ + +
+ + + +
+ + +
+ + + +
+ + + +
+
+
+
+
+
\ No newline at end of file diff --git a/resources/views/auks/tableChild.blade.php b/resources/views/auks/tableChild.blade.php new file mode 100644 index 0000000..0585200 --- /dev/null +++ b/resources/views/auks/tableChild.blade.php @@ -0,0 +1,19 @@ +@foreach ($childs as $child) + + + {{ str_pad('', $level, '-') . ' ' . $child->name }} + + + {{ $child->number }} + + + @include('auks.actions', ['auk' => $child]) + + + @if (count($child->childs)) + @include('auks.tableChild', [ + 'childs' => $child->childs, + 'level' => $level + 1, + ]) + @endif +@endforeach diff --git a/resources/views/documents/edit.blade.php b/resources/views/documents/edit.blade.php index 0e3df0a..4daa322 100644 --- a/resources/views/documents/edit.blade.php +++ b/resources/views/documents/edit.blade.php @@ -1,7 +1,7 @@

- {{ $project->name }}: {{ __('Create document') }} + {{ $project->name }}: {{ __('Edit document') }}

diff --git a/resources/views/layouts/navigation.blade.php b/resources/views/layouts/navigation.blade.php index cf9c5ff..3d30f58 100644 --- a/resources/views/layouts/navigation.blade.php +++ b/resources/views/layouts/navigation.blade.php @@ -40,7 +40,7 @@ diff --git a/routes/web.php b/routes/web.php index 66abb5a..871c2cb 100644 --- a/routes/web.php +++ b/routes/web.php @@ -38,7 +38,7 @@ Route::resource('/projects', ProjectController::class)->middleware(['auth']); Route::post('/project/{project}/select',SelectProjectController::class)->middleware(['auth'])->name('project.select'); Route::resource('/mmc', MMCController::class)->middleware(['auth']); -Route::resource('/documents', DocumentController::class)->middleware(['auth']); -Route::resource('/auk', AUKController::class)->middleware(['auth']); +Route::resource('/documents', DocumentController::class)->except('show')->middleware(['auth']); +Route::resource('/auks', AUKController::class)->except('show')->middleware(['auth']); require __DIR__ . '/auth.php';