feat: add bylaw management features including documents, legal authorities, subject categories, and nodes
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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'));
|
||||
}
|
||||
}
|
||||
69
app/Http/Controllers/Admin/BylawDocumentController.php
Normal file
69
app/Http/Controllers/Admin/BylawDocumentController.php
Normal 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'));
|
||||
}
|
||||
}
|
||||
59
app/Http/Controllers/Admin/BylawLegalAuthorityController.php
Normal file
59
app/Http/Controllers/Admin/BylawLegalAuthorityController.php
Normal 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'));
|
||||
}
|
||||
}
|
||||
57
app/Http/Controllers/Admin/BylawNodeController.php
Normal file
57
app/Http/Controllers/Admin/BylawNodeController.php
Normal 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'));
|
||||
}
|
||||
}
|
||||
55
app/Http/Controllers/Admin/BylawNodeTypeController.php
Normal file
55
app/Http/Controllers/Admin/BylawNodeTypeController.php
Normal 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'));
|
||||
}
|
||||
}
|
||||
@@ -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'));
|
||||
}
|
||||
}
|
||||
@@ -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'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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']);
|
||||
}
|
||||
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user