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 @@ +| + {{ __('Title') }} + | ++ {{ __('Number') }} + | ++ {{ __('Actions') }} + | +
|---|---|---|
| {{ $top_auk->name }} | +{{ $top_auk->number }} | +
+
+ @include('auks.actions', ['auk' => $top_auk])
+
+ |
+
+
| No AUKs! | +||