feat: add bylaw management features including documents, legal authorities, subject categories, and nodes

This commit is contained in:
2026-06-26 13:49:50 +03:30
parent 2e26bd229b
commit 9cf6957675
113 changed files with 1112 additions and 358 deletions

View File

@@ -0,0 +1,56 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\BylawCodificationLink;
use Illuminate\Http\Request;
class BylawCodificationLinkController extends Controller
{
public function index()
{
$items = BylawCodificationLink::latest('created_at')->paginate(15);
return view('admin.bylaw-codification-link.index', compact('items'));
}
public function create()
{
return view('admin.bylaw-codification-link.create');
}
public function store(Request $request)
{
$data = $request->validate(['source_entity_type' => 'required|in:bylaw_node,bylaw_doc,law_doc,court_verdict,advisory_opinion', 'source_entity_id' => 'required|integer', 'target_entity_type' => 'required|in:bylaw_node,bylaw_doc,law_doc,court_verdict,advisory_opinion', 'target_entity_id' => 'required|integer', 'link_type' => 'required|in:repeals_explicitly,repeals_implicitly,annuls_entirely,annuls_partially,amends,adds_to,interprets,is_executive_bylaw_of', 'effective_date' => 'nullable|date', 'justification' => 'nullable|string']);
$data['created_at'] = now();
BylawCodificationLink::create($data);
return redirect(route('bylaw-codification-link.index'));
}
public function edit(BylawCodificationLink $bylawCodificationLink)
{
return view('admin.bylaw-codification-link.update', compact('bylawCodificationLink'));
}
public function show(BylawCodificationLink $bylawCodificationLink)
{
return redirect(route('bylaw-codification-link.edit', $bylawCodificationLink));
}
public function update(Request $request, BylawCodificationLink $bylawCodificationLink)
{
$data = $request->validate(['source_entity_type' => 'required|in:bylaw_node,bylaw_doc,law_doc,court_verdict,advisory_opinion', 'source_entity_id' => 'required|integer', 'target_entity_type' => 'required|in:bylaw_node,bylaw_doc,law_doc,court_verdict,advisory_opinion', 'target_entity_id' => 'required|integer', 'link_type' => 'required|in:repeals_explicitly,repeals_implicitly,annuls_entirely,annuls_partially,amends,adds_to,interprets,is_executive_bylaw_of', 'effective_date' => 'nullable|date', 'justification' => 'nullable|string']);
$bylawCodificationLink->update($data);
return redirect(route('bylaw-codification-link.edit', $bylawCodificationLink));
}
public function destroy(BylawCodificationLink $bylawCodificationLink)
{
$bylawCodificationLink->delete();
return redirect(route('bylaw-codification-link.index'));
}
}