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

@@ -44,9 +44,9 @@ class ArtController extends Controller
$laws = Law::all();
$sections = Section::all();
$divisions = Division::all();
$branches = Branch::all();
$branches = Branch::all();
return view('admin.art.create', compact('chapters', 'parts', 'gates', 'books', 'volums', 'laws', 'sections','branches','divisions'));
return view('admin.art.create', compact('chapters', 'parts', 'gates', 'books', 'volums', 'laws', 'sections', 'branches', 'divisions'));
}
public function store(Request $request)
@@ -64,7 +64,7 @@ class ArtController extends Controller
'law_id' => 'required',
'division_id' => 'nullable',
'branch_id' => 'nullable',
'is_free' => 'nullable'
'is_free' => 'nullable',
]);
$validated['is_free'] = $request->input('is_free') ? true : false;
@@ -84,10 +84,9 @@ class ArtController extends Controller
$laws = Law::all();
$sections = Section::all();
$divisions = Division::all();
$branches = Branch::all();
$branches = Branch::all();
return view('admin.art.update', compact('art', 'chapters', 'parts', 'gates', 'books', 'volums', 'laws', 'sections','branches','divisions'));
return view('admin.art.update', compact('art', 'chapters', 'parts', 'gates', 'books', 'volums', 'laws', 'sections', 'branches', 'divisions'));
}
public function update(Request $request, Art $art)
@@ -106,14 +105,14 @@ class ArtController extends Controller
'law_id' => 'required',
'division_id' => 'nullable',
'branch_id' => 'nullable',
'is_free' => 'nullable'
'is_free' => 'nullable',
]);
$validated['is_free'] = $request->input('is_free') ? true : false;
$art->update($validated);
return redirect(route('art.edit',$art->id));
return redirect(route('art.edit', $art->id));
}
public function destroy(Art $art)

View File

@@ -15,7 +15,7 @@ class BookController extends Controller
$query = Book::query();
if ($request->filled('q')) {
$query->where('title', 'like', '%' . $request->q . '%');
$query->where('title', 'like', '%'.$request->q.'%');
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);

View File

@@ -21,7 +21,7 @@ class BranchController extends Controller
$query = Branch::query();
if ($request->filled('q')) {
$query->where('title', 'like', '%' . $request->q . '%');
$query->where('title', 'like', '%'.$request->q.'%');
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
@@ -41,7 +41,7 @@ class BranchController extends Controller
$sections = Section::all();
$divisions = Division::all();
return view('admin.branch.create', compact('chapters', 'parts', 'gates', 'books', 'volums', 'laws', 'sections','divisions'));
return view('admin.branch.create', compact('chapters', 'parts', 'gates', 'books', 'volums', 'laws', 'sections', 'divisions'));
}
public function store(Request $request)
@@ -75,7 +75,7 @@ class BranchController extends Controller
$sections = Section::all();
$divisions = Division::all();
return view('admin.branch.update', compact('branch', 'chapters', 'parts', 'gates', 'books', 'volums', 'laws', 'sections','divisions'));
return view('admin.branch.update', compact('branch', 'chapters', 'parts', 'gates', 'books', 'volums', 'laws', 'sections', 'divisions'));
}
public function update(Request $request, Branch $branch)
@@ -83,7 +83,7 @@ class BranchController extends Controller
$validated = $request->validate([
'title' => 'required',
'number' => 'required',
'number' => 'required',
'chapter_id' => 'nullable',
'part_id' => 'nullable',
'gate_id' => 'nullable',
@@ -104,5 +104,5 @@ class BranchController extends Controller
$branch->delete();
return redirect(route('branch.index'));
}
}
}

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'));
}
}

View File

@@ -0,0 +1,69 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\BylawDocument;
use App\Models\BylawLegalAuthority;
use App\Models\BylawSubjectCategory;
use Illuminate\Http\Request;
class BylawDocumentController extends Controller
{
public function index(Request $request)
{
$query = BylawDocument::with(['category', 'approvalAuthority', 'promulgationAuthority']);
if ($request->filled('q')) {
$query->where('title', 'like', "%{$request->q}%");
}
$items = $query->latest()->paginate(15)->withQueryString();
return view('admin.bylaw-document.index', compact('items'));
}
public function create()
{
$categories = BylawSubjectCategory::all();
$authorities = BylawLegalAuthority::all();
return view('admin.bylaw-document.create', compact('categories', 'authorities'));
}
public function store(Request $request)
{
$data = $request->validate(['title' => 'required|string|max:1000', 'category_id' => 'nullable|exists:bylaw_subject_categories,id', 'approval_authority_id' => 'nullable|exists:bylaw_legal_authorities,id', 'approval_date' => 'nullable|date', 'promulgation_authority_id' => 'nullable|exists:bylaw_legal_authorities,id', 'promulgation_date' => 'nullable|date', 'promulgation_number' => 'nullable|string|max:100', 'official_gazette_number' => 'nullable|string|max:100', 'official_gazette_date' => 'nullable|date', 'execution_date' => 'nullable|date', 'bylaw_type' => 'required|in:executive,delegated,independent', 'global_status' => 'required|in:valid,explicitly_repealed,implicitly_repealed,annulled,expired,draft', 'pdf_file_path' => 'nullable|string|max:500', 'is_published' => 'nullable|boolean', 'description' => 'nullable|string']);
$data['is_published'] = $request->boolean('is_published');
BylawDocument::create($data);
return redirect(route('bylaw-document.index'));
}
public function edit(BylawDocument $bylawDocument)
{
$categories = BylawSubjectCategory::all();
$authorities = BylawLegalAuthority::all();
return view('admin.bylaw-document.update', compact('bylawDocument', 'categories', 'authorities'));
}
public function show(BylawDocument $bylawDocument)
{
return redirect(route('bylaw-document.edit', $bylawDocument));
}
public function update(Request $request, BylawDocument $bylawDocument)
{
$data = $request->validate(['title' => 'required|string|max:1000', 'category_id' => 'nullable|exists:bylaw_subject_categories,id', 'approval_authority_id' => 'nullable|exists:bylaw_legal_authorities,id', 'approval_date' => 'nullable|date', 'promulgation_authority_id' => 'nullable|exists:bylaw_legal_authorities,id', 'promulgation_date' => 'nullable|date', 'promulgation_number' => 'nullable|string|max:100', 'official_gazette_number' => 'nullable|string|max:100', 'official_gazette_date' => 'nullable|date', 'execution_date' => 'nullable|date', 'bylaw_type' => 'required|in:executive,delegated,independent', 'global_status' => 'required|in:valid,explicitly_repealed,implicitly_repealed,annulled,expired,draft', 'pdf_file_path' => 'nullable|string|max:500', 'is_published' => 'nullable|boolean', 'description' => 'nullable|string']);
$data['is_published'] = $request->boolean('is_published');
$bylawDocument->update($data);
return redirect(route('bylaw-document.edit', $bylawDocument));
}
public function destroy(BylawDocument $bylawDocument)
{
$bylawDocument->delete();
return redirect(route('bylaw-document.index'));
}
}

View File

@@ -0,0 +1,59 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\BylawLegalAuthority;
use Illuminate\Http\Request;
class BylawLegalAuthorityController extends Controller
{
public function index(Request $request)
{
$query = BylawLegalAuthority::query();
if ($request->filled('q')) {
$query->where('name', 'like', "%{$request->q}%");
}
$items = $query->latest()->paginate(15)->withQueryString();
return view('admin.bylaw-legal-authority.index', compact('items'));
}
public function create()
{
return view('admin.bylaw-legal-authority.create');
}
public function store(Request $request)
{
$data = $request->validate(['name' => 'required|unique:bylaw_legal_authorities,name', 'authority_type' => 'required|in:executive,judicial,legislative,administrative,other', 'description' => 'nullable|string']);
BylawLegalAuthority::create($data);
return redirect(route('bylaw-legal-authority.index'));
}
public function edit(BylawLegalAuthority $bylawLegalAuthority)
{
return view('admin.bylaw-legal-authority.update', compact('bylawLegalAuthority'));
}
public function show(BylawLegalAuthority $bylawLegalAuthority)
{
return redirect(route('bylaw-legal-authority.edit', $bylawLegalAuthority));
}
public function update(Request $request, BylawLegalAuthority $bylawLegalAuthority)
{
$data = $request->validate(['name' => 'required|unique:bylaw_legal_authorities,name,'.$bylawLegalAuthority->id, 'authority_type' => 'required|in:executive,judicial,legislative,administrative,other', 'description' => 'nullable|string']);
$bylawLegalAuthority->update($data);
return redirect(route('bylaw-legal-authority.edit', $bylawLegalAuthority));
}
public function destroy(BylawLegalAuthority $bylawLegalAuthority)
{
$bylawLegalAuthority->delete();
return redirect(route('bylaw-legal-authority.index'));
}
}

View File

@@ -0,0 +1,57 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\BylawDocument;
use App\Models\BylawNode;
use App\Models\BylawNodeType;
use Illuminate\Http\Request;
class BylawNodeController extends Controller
{
public function index()
{
$items = BylawNode::with(['document', 'type'])->latest()->paginate(15);
return view('admin.bylaw-node.index', compact('items'));
}
public function create()
{
return view('admin.bylaw-node.create', ['documents' => BylawDocument::all(), 'types' => BylawNodeType::all(), 'parents' => BylawNode::all()]);
}
public function store(Request $request)
{
$data = $request->validate(['document_id' => 'required|exists:bylaw_documents,id', 'parent_id' => 'nullable|exists:bylaw_nodes,id', 'node_type_id' => 'required|exists:bylaw_node_types,id', 'node_identifier' => 'nullable|string|max:50', 'title' => 'nullable|string|max:500', 'node_content' => 'nullable|string', 'sort_order' => 'nullable|integer', 'valid_from' => 'nullable|date', 'valid_to' => 'nullable|date', 'node_status' => 'required|in:valid,repealed,annulled,amended,suspended']);
BylawNode::create($data);
return redirect(route('bylaw-node.index'));
}
public function edit(BylawNode $bylawNode)
{
return view('admin.bylaw-node.update', ['bylawNode' => $bylawNode, 'documents' => BylawDocument::all(), 'types' => BylawNodeType::all(), 'parents' => BylawNode::where('id', '!=', $bylawNode->id)->get()]);
}
public function show(BylawNode $bylawNode)
{
return redirect(route('bylaw-node.edit', $bylawNode));
}
public function update(Request $request, BylawNode $bylawNode)
{
$data = $request->validate(['document_id' => 'required|exists:bylaw_documents,id', 'parent_id' => 'nullable|exists:bylaw_nodes,id', 'node_type_id' => 'required|exists:bylaw_node_types,id', 'node_identifier' => 'nullable|string|max:50', 'title' => 'nullable|string|max:500', 'node_content' => 'nullable|string', 'sort_order' => 'nullable|integer', 'valid_from' => 'nullable|date', 'valid_to' => 'nullable|date', 'node_status' => 'required|in:valid,repealed,annulled,amended,suspended']);
$bylawNode->update($data);
return redirect(route('bylaw-node.edit', $bylawNode));
}
public function destroy(BylawNode $bylawNode)
{
$bylawNode->delete();
return redirect(route('bylaw-node.index'));
}
}

View File

@@ -0,0 +1,55 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\BylawNodeType;
use Illuminate\Http\Request;
class BylawNodeTypeController extends Controller
{
public function index(Request $request)
{
$items = BylawNodeType::latest()->paginate(15)->withQueryString();
return view('admin.bylaw-node-type.index', compact('items'));
}
public function create()
{
return view('admin.bylaw-node-type.create');
}
public function store(Request $request)
{
$data = $request->validate(['name' => 'required|unique:bylaw_node_types,name', 'hierarchy_level' => 'required|integer']);
BylawNodeType::create($data);
return redirect(route('bylaw-node-type.index'));
}
public function edit(BylawNodeType $bylawNodeType)
{
return view('admin.bylaw-node-type.update', compact('bylawNodeType'));
}
public function show(BylawNodeType $bylawNodeType)
{
return redirect(route('bylaw-node-type.edit', $bylawNodeType));
}
public function update(Request $request, BylawNodeType $bylawNodeType)
{
$data = $request->validate(['name' => 'required|unique:bylaw_node_types,name,'.$bylawNodeType->id, 'hierarchy_level' => 'required|integer']);
$bylawNodeType->update($data);
return redirect(route('bylaw-node-type.edit', $bylawNodeType));
}
public function destroy(BylawNodeType $bylawNodeType)
{
$bylawNodeType->delete();
return redirect(route('bylaw-node-type.index'));
}
}

View File

@@ -0,0 +1,64 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\BylawSubjectCategory;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
class BylawSubjectCategoryController extends Controller
{
public function index(Request $request)
{
$query = BylawSubjectCategory::query();
if ($request->filled('q')) {
$query->where('name', 'like', "%{$request->q}%");
} $items = $query->latest()->paginate(15)->withQueryString();
return view('admin.bylaw-subject-category.index', compact('items'));
}
public function create()
{
$parents = BylawSubjectCategory::all();
return view('admin.bylaw-subject-category.create', compact('parents'));
}
public function store(Request $request)
{
$data = $request->validate(['parent_id' => 'nullable|exists:bylaw_subject_categories,id', 'name' => 'required|string', 'slug' => 'nullable|string|unique:bylaw_subject_categories,slug', 'sort_order' => 'nullable|integer']);
$data['slug'] = $data['slug'] ?? Str::slug($data['name']);
BylawSubjectCategory::create($data);
return redirect(route('bylaw-subject-category.index'));
}
public function edit(BylawSubjectCategory $bylawSubjectCategory)
{
$parents = BylawSubjectCategory::where('id', '!=', $bylawSubjectCategory->id)->get();
return view('admin.bylaw-subject-category.update', compact('bylawSubjectCategory', 'parents'));
}
public function show(BylawSubjectCategory $bylawSubjectCategory)
{
return redirect(route('bylaw-subject-category.edit', $bylawSubjectCategory));
}
public function update(Request $request, BylawSubjectCategory $bylawSubjectCategory)
{
$data = $request->validate(['parent_id' => 'nullable|exists:bylaw_subject_categories,id', 'name' => 'required|string', 'slug' => 'required|string|unique:bylaw_subject_categories,slug,'.$bylawSubjectCategory->id, 'sort_order' => 'nullable|integer']);
$bylawSubjectCategory->update($data);
return redirect(route('bylaw-subject-category.edit', $bylawSubjectCategory));
}
public function destroy(BylawSubjectCategory $bylawSubjectCategory)
{
$bylawSubjectCategory->delete();
return redirect(route('bylaw-subject-category.index'));
}
}

View File

@@ -13,7 +13,7 @@ class CategoryController extends Controller
$query = Category::query();
if ($request->filled('q')) {
$query->where('name', 'like', '%' . $request->q . '%');
$query->where('name', 'like', '%'.$request->q.'%');
}
if ($request->filled('type')) {
$query->where('type', $request->type);
@@ -32,12 +32,11 @@ class CategoryController extends Controller
public function store(Request $request)
{
$validated = $request->validate([
$validated = $request->validate([
'name' => 'required',
'type' => 'required'
'type' => 'required',
]);
Category::create($validated);
return redirect(route('categories.index'));
@@ -45,25 +44,25 @@ class CategoryController extends Controller
public function edit(Category $category)
{
return view('admin.categories.update',compact('category'));
return view('admin.categories.update', compact('category'));
}
public function update(Request $request, Category $category)
{
$validated = $request->validate([
$validated = $request->validate([
'name' => 'required',
'type' => 'required'
'type' => 'required',
]);
$category->update($validated);
return redirect(route('categories.index'));
}
public function destroy(Category $category)
{
$category->delete();
return redirect(route('categories.index'));
}
}

View File

@@ -18,7 +18,7 @@ class ChapterController extends Controller
$query = Chapter::query();
if ($request->filled('q')) {
$query->where('title', 'like', '%' . $request->q . '%');
$query->where('title', 'like', '%'.$request->q.'%');
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
@@ -35,7 +35,7 @@ class ChapterController extends Controller
$sections = Section::all();
$divisions = Division::all();
return view('admin.chapter.create', compact('sections', 'books', 'volums', 'laws','divisions'));
return view('admin.chapter.create', compact('sections', 'books', 'volums', 'laws', 'divisions'));
}
public function store(Request $request)
@@ -47,7 +47,7 @@ class ChapterController extends Controller
'book_id' => 'nullable',
'volum_id' => 'nullable',
'law_id' => 'nullable',
'division_id' => 'nullable'
'division_id' => 'nullable',
]);
Chapter::query()->create($validated);
@@ -63,7 +63,7 @@ class ChapterController extends Controller
$laws = Law::all();
$divisions = Division::all();
return view('admin.chapter.update', compact('sections', 'chapter', 'books', 'volums', 'laws','divisions'));
return view('admin.chapter.update', compact('sections', 'chapter', 'books', 'volums', 'laws', 'divisions'));
}
public function update(Request $request, Chapter $chapter)
@@ -75,7 +75,7 @@ class ChapterController extends Controller
'book_id' => 'nullable',
'volum_id' => 'nullable',
'law_id' => 'nullable',
'division_id' => 'nullable'
'division_id' => 'nullable',
]);
$chapter->update($validated);

View File

@@ -16,7 +16,7 @@ class DivisionController extends Controller
$query = Division::query();
if ($request->filled('q')) {
$query->where('title', 'like', '%' . $request->q . '%');
$query->where('title', 'like', '%'.$request->q.'%');
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
@@ -55,7 +55,7 @@ class DivisionController extends Controller
$volums = Volum::all();
$laws = Law::all();
return view('admin.division.update', compact('division','books', 'volums', 'laws'));
return view('admin.division.update', compact('division', 'books', 'volums', 'laws'));
}
public function update(Request $request, Division $division)

View File

@@ -20,7 +20,7 @@ class GateController extends Controller
$query = Gate::query();
if ($request->filled('q')) {
$query->where('title', 'like', '%' . $request->q . '%');
$query->where('title', 'like', '%'.$request->q.'%');
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
@@ -37,9 +37,9 @@ class GateController extends Controller
$books = Book::all();
$volums = Volum::all();
$laws = Law::all();
$divisions = Division::all();
$divisions = Division::all();
return view('admin.gate.create', compact('parts', 'chapters', 'sections', 'books', 'volums', 'laws','divisions'));
return view('admin.gate.create', compact('parts', 'chapters', 'sections', 'books', 'volums', 'laws', 'divisions'));
}
public function store(Request $request)
@@ -64,9 +64,9 @@ class GateController extends Controller
$books = Book::all();
$volums = Volum::all();
$laws = Law::all();
$divisions = Division::all();
$divisions = Division::all();
return view('admin.gate.update', compact('gate', 'parts', 'chapters', 'sections', 'books', 'volums', 'laws','divisions'));
return view('admin.gate.update', compact('gate', 'parts', 'chapters', 'sections', 'books', 'volums', 'laws', 'divisions'));
}
public function update(Request $request, Gate $gate)

View File

@@ -40,7 +40,7 @@ class JudicialPrecedentCategoryController extends Controller
public function store(Request $request)
{
$validated = $request->validate([
'name' => 'required|string|unique:judicial_precedent_categories,name'
'name' => 'required|string|unique:judicial_precedent_categories,name',
]);
JudicialPrecedentCategory::create($validated);
@@ -70,7 +70,7 @@ class JudicialPrecedentCategoryController extends Controller
public function update(Request $request, JudicialPrecedentCategory $judicialPrecedentCategory)
{
$validated = $request->validate([
'name' => 'required|string|unique:judicial_precedent_categories,name,' . $judicialPrecedentCategory->id
'name' => 'required|string|unique:judicial_precedent_categories,name,'.$judicialPrecedentCategory->id,
]);
$judicialPrecedentCategory->update($validated);
@@ -84,6 +84,7 @@ class JudicialPrecedentCategoryController extends Controller
public function destroy(JudicialPrecedentCategory $judicialPrecedentCategory)
{
$judicialPrecedentCategory->delete();
return redirect(route('judicial-precedent-category.index'));
}
}

View File

@@ -33,6 +33,7 @@ class JudicialPrecedentController extends Controller
{
$arts = Art::all();
$categories = JudicialPrecedentCategory::all();
return view('admin.judicial-precedent.create', compact('arts', 'categories'));
}
@@ -46,7 +47,7 @@ class JudicialPrecedentController extends Controller
'issuing_authority' => 'nullable|string',
'category_id' => 'nullable|exists:judicial_precedent_categories,id',
'art_ids' => 'nullable|array',
'art_ids.*' => 'exists:arts,id'
'art_ids.*' => 'exists:arts,id',
]);
$judicialPrecedent = JudicialPrecedent::create([
@@ -55,10 +56,10 @@ class JudicialPrecedentController extends Controller
'subject' => $validated['subject'],
'full_text' => $validated['full_text'],
'issuing_authority' => $validated['issuing_authority'] ?? 'هیأت عمومی دیوان عالی کشور',
'category_id' => $validated['category_id']
'category_id' => $validated['category_id'],
]);
if (!empty($validated['art_ids'])) {
if (! empty($validated['art_ids'])) {
$judicialPrecedent->arts()->attach($validated['art_ids']);
}
@@ -70,25 +71,25 @@ class JudicialPrecedentController extends Controller
$arts = Art::all();
$categories = JudicialPrecedentCategory::all();
$selectedArtIds = $judicialPrecedent->arts->pluck('id')->toArray();
return view('admin.judicial-precedent.update', compact('judicialPrecedent', 'arts', 'categories', 'selectedArtIds'));
}
public function update(Request $request, JudicialPrecedent $judicialPrecedent)
{
$validated = $request->validate([
'ruling_number' => 'required|unique:judicial_precedents,ruling_number,' . $judicialPrecedent->id,
'ruling_number' => 'required|unique:judicial_precedents,ruling_number,'.$judicialPrecedent->id,
'ruling_date' => 'required|date',
'subject' => 'required|string',
'full_text' => 'required|string',
'issuing_authority' => 'nullable|string',
'category_id' => 'nullable|exists:judicial_precedent_categories,id',
'art_ids' => 'nullable|array',
'art_ids.*' => 'exists:arts,id'
'art_ids.*' => 'exists:arts,id',
]);
$judicialPrecedent->update($validated);
$judicialPrecedent->arts()->sync($validated['art_ids'] ?? []);
return redirect(route('judicial-precedent.edit', $judicialPrecedent->id));
@@ -97,6 +98,7 @@ class JudicialPrecedentController extends Controller
public function destroy(JudicialPrecedent $judicialPrecedent)
{
$judicialPrecedent->delete();
return redirect(route('judicial-precedent.index'));
}
}

View File

@@ -14,7 +14,7 @@ class LawController extends Controller
$query = Law::query();
if ($request->filled('q')) {
$query->where('title', 'like', '%' . $request->q . '%');
$query->where('title', 'like', '%'.$request->q.'%');
}
if ($request->filled('locked')) {
$query->where('is_locked', $request->locked === '1');
@@ -46,7 +46,7 @@ class LawController extends Controller
$validated['is_locked'] = $request->has('is_locked', false);
if ($request->hasFile('image') && $request->file('image')->isValid()) {
$imageName = uniqid('image_', true) . '.' . $request->file('image')->getClientOriginalExtension();
$imageName = uniqid('image_', true).'.'.$request->file('image')->getClientOriginalExtension();
$request->file('image')->move(public_path('images'), $imageName);
@@ -58,11 +58,10 @@ class LawController extends Controller
return redirect()->route('law.index')->with('success', 'Law created successfully.');
}
public function edit(Law $law)
{
$categories = Category::all();
return view('admin.law.update', compact('law', 'categories'));
}
@@ -79,7 +78,7 @@ class LawController extends Controller
$validated['is_locked'] = $request->boolean('is_locked');
if ($request->hasFile('image') && $request->file('image')->isValid()) {
$imageName = uniqid('image_', true) . '.' . $request->file('image')->getClientOriginalExtension();
$imageName = uniqid('image_', true).'.'.$request->file('image')->getClientOriginalExtension();
$request->file('image')->move(public_path('images'), $imageName);
$validated['image'] = $imageName;
}

View File

@@ -52,7 +52,7 @@ class LegalOpinionCategoryController extends Controller
public function update(Request $request, LegalOpinionCategory $legalOpinionCategory)
{
$validated = $request->validate([
'name' => 'required|string|unique:legal_opinion_categories,name,' . $legalOpinionCategory->id,
'name' => 'required|string|unique:legal_opinion_categories,name,'.$legalOpinionCategory->id,
]);
$legalOpinionCategory->update($validated);

View File

@@ -64,7 +64,7 @@ class LegalOpinionController extends Controller
'category_id' => $validated['category_id'],
]);
if (!empty($validated['art_ids'])) {
if (! empty($validated['art_ids'])) {
$legalOpinion->arts()->attach($validated['art_ids']);
}

View File

@@ -36,6 +36,7 @@ class NotificationController extends Controller
public function store(StoreRequest $request)
{
Notification::create($request->validated());
return redirect()->route('notifications.index');
}
@@ -47,12 +48,14 @@ class NotificationController extends Controller
public function update(UpdateRequest $request, Notification $notification)
{
$notification->update($request->validated());
return redirect()->route('notifications.index');
}
public function destroy(Notification $notification)
{
$notification->delete();
return redirect()->route('notifications.index');
}
}

View File

@@ -19,7 +19,7 @@ class PartController extends Controller
$query = Part::query();
if ($request->filled('q')) {
$query->where('title', 'like', '%' . $request->q . '%');
$query->where('title', 'like', '%'.$request->q.'%');
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
@@ -37,7 +37,7 @@ class PartController extends Controller
$laws = Law::all();
$divisions = Division::all();
return view('admin.part.create', compact('chapters', 'sections', 'books', 'volums', 'laws','divisions'));
return view('admin.part.create', compact('chapters', 'sections', 'books', 'volums', 'laws', 'divisions'));
}
public function store(Request $request)
@@ -50,7 +50,7 @@ class PartController extends Controller
'book_id' => 'nullable',
'volum_id' => 'nullable',
'law_id' => 'nullable',
'division_id' => 'nullable'
'division_id' => 'nullable',
]);
Part::query()->create($validated);
@@ -67,7 +67,7 @@ class PartController extends Controller
$laws = Law::all();
$divisions = Division::all();
return view('admin.part.update', compact('part', 'chapters', 'sections', 'books', 'volums', 'laws','divisions'));
return view('admin.part.update', compact('part', 'chapters', 'sections', 'books', 'volums', 'laws', 'divisions'));
}
public function update(Request $request, Part $part)
@@ -80,7 +80,7 @@ class PartController extends Controller
'book_id' => 'nullable',
'volum_id' => 'nullable',
'law_id' => 'nullable',
'division_id' => 'nullable'
'division_id' => 'nullable',
]);
$part->update($validated);

View File

@@ -17,7 +17,7 @@ class SectionController extends Controller
$query = Section::query();
if ($request->filled('q')) {
$query->where('title', 'like', '%' . $request->q . '%');
$query->where('title', 'like', '%'.$request->q.'%');
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
@@ -34,7 +34,7 @@ class SectionController extends Controller
$sections = Section::all();
$divisions = Division::all();
return view('admin.section.create', compact('books', 'volums', 'laws','sections','divisions'));
return view('admin.section.create', compact('books', 'volums', 'laws', 'sections', 'divisions'));
}
public function store(Request $request)
@@ -45,7 +45,7 @@ class SectionController extends Controller
'book_id' => 'nullable',
'volum_id' => 'nullable',
'law_id' => 'nullable',
'division_id' => 'nullable'
'division_id' => 'nullable',
]);
section::query()->create($validated);
@@ -60,8 +60,8 @@ class SectionController extends Controller
$laws = Law::all();
$sections = Section::all();
$divisions = Division::all();
return view('admin.section.update', compact('section', 'books', 'volums', 'laws','sections','divisions'));
return view('admin.section.update', compact('section', 'books', 'volums', 'laws', 'sections', 'divisions'));
}
public function update(Request $request, Section $section)
@@ -72,7 +72,7 @@ class SectionController extends Controller
'book_id' => 'nullable',
'volum_id' => 'nullable',
'law_id' => 'nullable',
'division_id' => 'nullable'
'division_id' => 'nullable',
]);
$section->update($validated);

View File

@@ -37,15 +37,15 @@ class SubscribePlanController extends Controller
$validated['is_free'] = $request->has('is_free');
SubscribePlan::create($validated);
return redirect()->route('subscribe-plans.index');
}
return redirect()->route('subscribe-plans.index');
}
public function edit(SubscribePlan $subscribePlan)
{
return view('admin.subscribe-plans.update', compact('subscribePlan'));
}
public function update(UpdateRequest $request, SubscribePlan $subscribePlan)
{
$validated = $request->validated();
@@ -53,12 +53,14 @@ class SubscribePlanController extends Controller
$validated['is_free'] = $request->has('is_free');
$subscribePlan->update($validated);
return redirect()->route('subscribe-plans.index');
return redirect()->route('subscribe-plans.index');
}
public function destroy(SubscribePlan $subscribePlan)
{
$subscribePlan->delete();
return redirect()->route('subscribe-plans.index');
}
}

View File

@@ -41,6 +41,7 @@ class VersionController extends Controller
$validated['force_update'] = $validated['force_update'] == 'on' ? 1 : 0;
}
Version::create($validated);
return redirect(route('versions.index'));
}
@@ -56,12 +57,14 @@ class VersionController extends Controller
$validated['force_update'] = $validated['force_update'] == 'on' ? 1 : 0;
}
$version->update($validated);
return redirect(route('versions.index'));
}
public function destroy(Version $version)
{
$version->delete();
return redirect(route('versions.index'));
}
}

View File

@@ -14,7 +14,7 @@ class VolumController extends Controller
$query = Volum::query();
if ($request->filled('q')) {
$query->where('title', 'like', '%' . $request->q . '%');
$query->where('title', 'like', '%'.$request->q.'%');
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);