Init(Core): Change repo

This commit is contained in:
2026-04-24 15:29:37 +03:30
commit ededb41a3a
1499 changed files with 199187 additions and 0 deletions

View File

@@ -0,0 +1,125 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Art;
use App\Models\Book;
use App\Models\Branch;
use App\Models\Chapter;
use App\Models\Division;
use App\Models\Gate;
use App\Models\Law;
use App\Models\Part;
use App\Models\Section;
use App\Models\Volum;
use Illuminate\Http\Request;
class ArtController extends Controller
{
public function index(Request $request)
{
$query = Art::query();
if ($request->filled('q')) {
$q = $request->q;
$query->where(function ($qry) use ($q) {
$qry->where('title', 'like', "%{$q}%")->orWhere('text', 'like', "%{$q}%");
});
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
$arts = $query->paginate($perPage)->withQueryString();
return view('admin.art.index', compact('arts'));
}
public function create()
{
$chapters = Chapter::all();
$parts = Part::all();
$gates = Gate::all();
$books = Book::all();
$volums = Volum::all();
$laws = Law::all();
$sections = Section::all();
$divisions = Division::all();
$branches = Branch::all();
return view('admin.art.create', compact('chapters', 'parts', 'gates', 'books', 'volums', 'laws', 'sections','branches','divisions'));
}
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required',
'text' => 'required',
'number' => 'required',
'chapter_id' => 'nullable',
'part_id' => 'nullable',
'gate_id' => 'nullable',
'section_id' => 'nullable',
'book_id' => 'nullable',
'volum_id' => 'nullable',
'law_id' => 'required',
'division_id' => 'nullable',
'branch_id' => 'nullable',
'is_free' => 'nullable'
]);
$validated['is_free'] = $request->input('is_free') ? true : false;
art::query()->create($validated);
return redirect(route('art.index'));
}
public function edit(art $art)
{
$chapters = Chapter::all();
$parts = Part::all();
$gates = Gate::all();
$books = Book::all();
$volums = Volum::all();
$laws = Law::all();
$sections = Section::all();
$divisions = Division::all();
$branches = Branch::all();
return view('admin.art.update', compact('art', 'chapters', 'parts', 'gates', 'books', 'volums', 'laws', 'sections','branches','divisions'));
}
public function update(Request $request, Art $art)
{
$validated = $request->validate([
'title' => 'required',
'text' => 'required',
'number' => 'required',
'chapter_id' => 'nullable',
'part_id' => 'nullable',
'gate_id' => 'nullable',
'section_id' => 'nullable',
'book_id' => 'nullable',
'volum_id' => 'nullable',
'law_id' => 'required',
'division_id' => 'nullable',
'branch_id' => 'nullable',
'is_free' => 'nullable'
]);
$validated['is_free'] = $request->input('is_free') ? true : false;
$art->update($validated);
return redirect(route('art.edit',$art->id));
}
public function destroy(Art $art)
{
$art->delete();
return redirect(route('art.index'));
}
}

View File

@@ -0,0 +1,77 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Book;
use App\Models\Law;
use App\Models\Volum;
use Illuminate\Http\Request;
class BookController extends Controller
{
public function index(Request $request)
{
$query = Book::query();
if ($request->filled('q')) {
$query->where('title', 'like', '%' . $request->q . '%');
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
$books = $query->paginate($perPage)->withQueryString();
return view('admin.book.index', compact('books'));
}
public function create()
{
$volums = Volum::all();
$laws = Law::all();
return view('admin.book.create', compact('volums', 'laws'));
}
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required',
'number' => 'required',
'volum_id' => 'required',
'law_id' => 'nullable',
]);
book::query()->create($validated);
return redirect(route('book.index'));
}
public function edit(Book $book)
{
$volums = Volum::all();
$laws = Law::all();
return view('admin.book.update', compact('book', 'volums', 'laws'));
}
public function update(Request $request, Book $book)
{
$validated = $request->validate([
'title' => 'required',
'number' => 'required',
'volum_id' => 'required',
'law_id' => 'nullable',
]);
$book->update($validated);
return redirect(route('book.index'));
}
public function destroy(Book $book)
{
$book->delete();
return redirect(route('book.index'));
}
}

View File

@@ -0,0 +1,108 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Book;
use App\Models\Branch;
use App\Models\Chapter;
use App\Models\Division;
use App\Models\Gate;
use App\Models\Law;
use App\Models\Part;
use App\Models\Section;
use App\Models\Volum;
use Illuminate\Http\Request;
class BranchController extends Controller
{
public function index(Request $request)
{
$query = Branch::query();
if ($request->filled('q')) {
$query->where('title', 'like', '%' . $request->q . '%');
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
$branchs = $query->paginate($perPage)->withQueryString();
return view('admin.branch.index', compact('branchs'));
}
public function create()
{
$chapters = Chapter::all();
$parts = Part::all();
$gates = Gate::all();
$books = Book::all();
$volums = Volum::all();
$laws = Law::all();
$sections = Section::all();
$divisions = Division::all();
return view('admin.branch.create', compact('chapters', 'parts', 'gates', 'books', 'volums', 'laws', 'sections','divisions'));
}
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required',
'number' => 'required',
'chapter_id' => 'nullable',
'part_id' => 'nullable',
'gate_id' => 'nullable',
'section_id' => 'nullable',
'book_id' => 'nullable',
'volum_id' => 'required',
'law_id' => 'required',
'division' => 'nullable',
]);
branch::query()->create($validated);
return redirect(route('branch.index'));
}
public function edit(branch $branch)
{
$chapters = Chapter::all();
$parts = Part::all();
$gates = Gate::all();
$books = Book::all();
$volums = Volum::all();
$laws = Law::all();
$sections = Section::all();
$divisions = Division::all();
return view('admin.branch.update', compact('branch', 'chapters', 'parts', 'gates', 'books', 'volums', 'laws', 'sections','divisions'));
}
public function update(Request $request, Branch $branch)
{
$validated = $request->validate([
'title' => 'required',
'number' => 'required',
'chapter_id' => 'nullable',
'part_id' => 'nullable',
'gate_id' => 'nullable',
'section_id' => 'nullable',
'book_id' => 'nullable',
'volum_id' => 'required',
'law_id' => 'required',
'division_id' => 'nullable',
]);
$branch->update($validated);
return redirect(route('branch.index'));
}
public function destroy(Branch $branch)
{
$branch->delete();
return redirect(route('branch.index'));
}
}

View File

@@ -0,0 +1,49 @@
<?php
namespace App\Http\Controllers\admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\admin\category\CreateCategoryRequest;
use App\Http\Requests\admin\category\UpdateCategoryRequest;
use App\Models\Category;
class CategoriesController extends Controller
{
public function index()
{
$categories = Category::query()->select('id', 'name', 'label')->get();
return view('admin.categories.index', compact('categories'));
}
public function create()
{
return view('admin.categories.create');
}
public function store(CreateCategoryRequest $request)
{
Category::query()->create($request->validated());
return redirect(route('categories.index'));
}
public function edit(Category $category)
{
return view('admin.categories.update', compact('category'));
}
public function update(UpdateCategoryRequest $request, Category $category)
{
$category->update($request->validated());
return redirect(route('categories.index'));
}
public function destroy(Category $category)
{
$category->delete();
return back();
}
}

View File

@@ -0,0 +1,69 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Category;
use Illuminate\Http\Request;
class CategoryController extends Controller
{
public function index(Request $request)
{
$query = Category::query();
if ($request->filled('q')) {
$query->where('name', 'like', '%' . $request->q . '%');
}
if ($request->filled('type')) {
$query->where('type', $request->type);
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
$categories = $query->paginate($perPage)->withQueryString();
return view('admin.categories.index', compact('categories'));
}
public function create()
{
return view('admin.categories.create');
}
public function store(Request $request)
{
$validated = $request->validate([
'name' => 'required',
'type' => 'required'
]);
Category::create($validated);
return redirect(route('categories.index'));
}
public function edit(Category $category)
{
return view('admin.categories.update',compact('category'));
}
public function update(Request $request, Category $category)
{
$validated = $request->validate([
'name' => '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

@@ -0,0 +1,92 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Book;
use App\Models\Chapter;
use App\Models\Division;
use App\Models\Law;
use App\Models\Section;
use App\Models\Volum;
use Illuminate\Http\Request;
class ChapterController extends Controller
{
public function index(Request $request)
{
$query = Chapter::query();
if ($request->filled('q')) {
$query->where('title', 'like', '%' . $request->q . '%');
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
$chapters = $query->paginate($perPage)->withQueryString();
return view('admin.chapter.index', compact('chapters'));
}
public function create()
{
$books = Book::all();
$volums = Volum::all();
$laws = Law::all();
$sections = Section::all();
$divisions = Division::all();
return view('admin.chapter.create', compact('sections', 'books', 'volums', 'laws','divisions'));
}
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required',
'number' => 'required',
'section_id' => 'nullable',
'book_id' => 'nullable',
'volum_id' => 'nullable',
'law_id' => 'nullable',
'division_id' => 'nullable'
]);
Chapter::query()->create($validated);
return redirect(route('chapter.index'));
}
public function edit(Chapter $chapter)
{
$sections = Section::all();
$books = Book::all();
$volums = Volum::all();
$laws = Law::all();
$divisions = Division::all();
return view('admin.chapter.update', compact('sections', 'chapter', 'books', 'volums', 'laws','divisions'));
}
public function update(Request $request, Chapter $chapter)
{
$validated = $request->validate([
'title' => 'required',
'number' => 'required',
'section_id' => 'nullable',
'book_id' => 'nullable',
'volum_id' => 'nullable',
'law_id' => 'nullable',
'division_id' => 'nullable'
]);
$chapter->update($validated);
return redirect(route('chapter.index'));
}
public function destroy(Chapter $chapter)
{
$chapter->delete();
return redirect(route('chapter.index'));
}
}

View File

@@ -0,0 +1,83 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Book;
use App\Models\Division;
use App\Models\Law;
use App\Models\Volum;
use Illuminate\Http\Request;
class DivisionController extends Controller
{
public function index(Request $request)
{
$query = Division::query();
if ($request->filled('q')) {
$query->where('title', 'like', '%' . $request->q . '%');
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
$divisions = $query->paginate($perPage)->withQueryString();
return view('admin.division.index', compact('divisions'));
}
public function create()
{
$books = Book::all();
$volums = Volum::all();
$laws = Law::all();
return view('admin.division.create', compact('books', 'volums', 'laws'));
}
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required',
'number' => 'required',
'book_id' => 'nullable',
'volum_id' => 'required',
'law_id' => 'required',
]);
division::query()->create($validated);
return redirect(route('division.index'));
}
public function edit(division $division)
{
$books = Book::all();
$volums = Volum::all();
$laws = Law::all();
return view('admin.division.update', compact('division','books', 'volums', 'laws'));
}
public function update(Request $request, Division $division)
{
$validated = $request->validate([
'title' => 'required',
'number' => 'required',
'book_id' => 'nullable',
'volum_id' => 'required',
'law_id' => 'required',
]);
$division->update($validated);
return redirect(route('division.index'));
}
public function destroy(Division $division)
{
$division->delete();
return redirect(route('division.index'));
}
}

View File

@@ -0,0 +1,92 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Book;
use App\Models\Chapter;
use App\Models\Division;
use App\Models\Gate;
use App\Models\Law;
use App\Models\Part;
use App\Models\Section;
use App\Models\Volum;
use Illuminate\Http\Request;
class GateController extends Controller
{
public function index(Request $request)
{
$query = Gate::query();
if ($request->filled('q')) {
$query->where('title', 'like', '%' . $request->q . '%');
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
$gates = $query->paginate($perPage)->withQueryString();
return view('admin.gate.index', compact('gates'));
}
public function create()
{
$parts = Part::all();
$chapters = Chapter::all();
$sections = Section::all();
$books = Book::all();
$volums = Volum::all();
$laws = Law::all();
$divisions = Division::all();
return view('admin.gate.create', compact('parts', 'chapters', 'sections', 'books', 'volums', 'laws','divisions'));
}
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required',
'number' => 'required',
'part_id' => 'nullable',
'division_id' => 'nullable',
]);
Gate::query()->create($validated);
return redirect(route('gate.index'));
}
public function edit(Gate $gate)
{
$parts = Part::all();
$chapters = Chapter::all();
$sections = Section::all();
$books = Book::all();
$volums = Volum::all();
$laws = Law::all();
$divisions = Division::all();
return view('admin.gate.update', compact('gate', 'parts', 'chapters', 'sections', 'books', 'volums', 'laws','divisions'));
}
public function update(Request $request, Gate $gate)
{
$validated = $request->validate([
'title' => 'required',
'number' => 'required',
'part_id' => 'nullable',
'division_id' => 'nullable',
]);
$gate->update($validated);
return redirect(route('gate.index'));
}
public function destroy(Gate $gate)
{
$gate->delete();
return redirect(route('gate.index'));
}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
class HomeController extends Controller
{
public function index()
{
return view('admin.dashboard');
}
}

View File

@@ -0,0 +1,96 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Art;
use App\Models\JudicialPrecedent;
use Illuminate\Http\Request;
class JudicialPrecedentController extends Controller
{
public function index(Request $request)
{
$query = JudicialPrecedent::query();
if ($request->filled('q')) {
$q = $request->q;
$query->where(function ($qry) use ($q) {
$qry->where('ruling_number', 'like', "%{$q}%")
->orWhere('subject', 'like', "%{$q}%")
->orWhere('full_text', 'like', "%{$q}%");
});
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
$judicialPrecedents = $query->paginate($perPage)->withQueryString();
return view('admin.judicial-precedent.index', compact('judicialPrecedents'));
}
public function create()
{
$arts = Art::all();
return view('admin.judicial-precedent.create', compact('arts'));
}
public function store(Request $request)
{
$validated = $request->validate([
'ruling_number' => 'required|unique:judicial_precedents,ruling_number',
'ruling_date' => 'required|date',
'subject' => 'required|string',
'full_text' => 'required|string',
'issuing_authority' => 'nullable|string',
'art_ids' => 'nullable|array',
'art_ids.*' => 'exists:arts,id'
]);
$judicialPrecedent = JudicialPrecedent::create([
'ruling_number' => $validated['ruling_number'],
'ruling_date' => $validated['ruling_date'],
'subject' => $validated['subject'],
'full_text' => $validated['full_text'],
'issuing_authority' => $validated['issuing_authority'] ?? 'هیأت عمومی دیوان عالی کشور'
]);
if (!empty($validated['art_ids'])) {
$judicialPrecedent->arts()->attach($validated['art_ids']);
}
return redirect(route('judicial-precedent.index'));
}
public function edit(JudicialPrecedent $judicialPrecedent)
{
$arts = Art::all();
$selectedArtIds = $judicialPrecedent->arts->pluck('id')->toArray();
return view('admin.judicial-precedent.update', compact('judicialPrecedent', 'arts', 'selectedArtIds'));
}
public function update(Request $request, JudicialPrecedent $judicialPrecedent)
{
$validated = $request->validate([
'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',
'art_ids' => 'nullable|array',
'art_ids.*' => 'exists:arts,id'
]);
$judicialPrecedent->update($validated);
$judicialPrecedent->arts()->sync($validated['art_ids'] ?? []);
return redirect(route('judicial-precedent.edit', $judicialPrecedent->id));
}
public function destroy(JudicialPrecedent $judicialPrecedent)
{
$judicialPrecedent->delete();
return redirect(route('judicial-precedent.index'));
}
}

View File

@@ -0,0 +1,99 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Category;
use App\Models\Law;
use Illuminate\Http\Request;
class LawController extends Controller
{
public function index(Request $request)
{
$query = Law::query();
if ($request->filled('q')) {
$query->where('title', 'like', '%' . $request->q . '%');
}
if ($request->filled('locked')) {
$query->where('is_locked', $request->locked === '1');
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
$laws = $query->paginate($perPage)->withQueryString();
return view('admin.law.index', compact('laws'));
}
public function create()
{
$categories = Category::all();
return view('admin.law.create', compact('categories'));
}
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required|string|max:255',
'is_locked' => 'nullable',
'category_id' => 'nullable|integer|exists:categories,id',
'price' => 'nullable|numeric',
'image' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
$validated['is_locked'] = $request->has('is_locked', false);
if ($request->hasFile('image') && $request->file('image')->isValid()) {
dd($request->has('image'));
$imageName = uniqid('image_', true) . '.' . $request->file('image')->getClientOriginalExtension();
$request->file('image')->move(public_path('images'), $imageName);
$validated['image'] = $imageName;
}
Law::create($validated);
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'));
}
public function update(Request $request, Law $law)
{
$validated = $request->validate([
'title' => 'required|string|max:255',
'is_locked' => 'sometimes',
'category_id' => 'nullable|integer',
'price' => 'nullable|numeric',
'image' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
$validated['is_locked'] = $request->boolean('is_locked');
if ($request->hasFile('image') && $request->file('image')->isValid()) {
$imageName = uniqid('image_', true) . '.' . $request->file('image')->getClientOriginalExtension();
$request->file('image')->move(public_path('images'), $imageName);
$validated['image'] = $imageName;
}
$law->update($validated);
return redirect()->route('law.index');
}
public function destroy(Law $law)
{
$law->delete();
return redirect(route('law.index'));
}
}

View File

@@ -0,0 +1,58 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\admin\Notification\StoreRequest;
use App\Http\Requests\admin\Notification\UpdateRequest;
use App\Models\Notification;
use Illuminate\Http\Request;
class NotificationController extends Controller
{
public function index(Request $request)
{
$query = Notification::query();
if ($request->filled('q')) {
$q = $request->q;
$query->where(function ($qry) use ($q) {
$qry->where('title', 'like', "%{$q}%")
->orWhere('description', 'like', "%{$q}%");
});
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
$notifications = $query->latest()->paginate($perPage)->withQueryString();
return view('admin.notifications.index', compact('notifications'));
}
public function create()
{
return view('admin.notifications.create');
}
public function store(StoreRequest $request)
{
Notification::create($request->validated());
return redirect()->route('notifications.index');
}
public function edit(Notification $notification)
{
return view('admin.notifications.update', compact('notification'));
}
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

@@ -0,0 +1,97 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Book;
use App\Models\Chapter;
use App\Models\Division;
use App\Models\Law;
use App\Models\Part;
use App\Models\Section;
use App\Models\Volum;
use Illuminate\Http\Request;
class PartController extends Controller
{
public function index(Request $request)
{
$query = Part::query();
if ($request->filled('q')) {
$query->where('title', 'like', '%' . $request->q . '%');
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
$parts = $query->paginate($perPage)->withQueryString();
return view('admin.part.index', compact('parts'));
}
public function create()
{
$chapters = Chapter::all();
$sections = Section::all();
$books = Book::all();
$volums = Volum::all();
$laws = Law::all();
$divisions = Division::all();
return view('admin.part.create', compact('chapters', 'sections', 'books', 'volums', 'laws','divisions'));
}
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required',
'number' => 'required',
'chapter_id' => 'nullable',
'section_id' => 'nullable',
'book_id' => 'nullable',
'volum_id' => 'nullable',
'law_id' => 'nullable',
'division_id' => 'nullable'
]);
Part::query()->create($validated);
return redirect(route('part.index'));
}
public function edit(Part $part)
{
$chapters = Chapter::all();
$sections = Section::all();
$books = Book::all();
$volums = Volum::all();
$laws = Law::all();
$divisions = Division::all();
return view('admin.part.update', compact('part', 'chapters', 'sections', 'books', 'volums', 'laws','divisions'));
}
public function update(Request $request, Part $part)
{
$validated = $request->validate([
'title' => 'required',
'number' => 'required',
'chapter_id' => 'nullable',
'section_id' => 'nullable',
'book_id' => 'nullable',
'volum_id' => 'nullable',
'law_id' => 'nullable',
'division_id' => 'nullable'
]);
$part->update($validated);
return redirect(route('part.index'));
}
public function destroy(Part $part)
{
$part->delete();
return redirect(route('part.index'));
}
}

View File

@@ -0,0 +1,89 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Book;
use App\Models\Division;
use App\Models\Law;
use App\Models\Section;
use App\Models\Volum;
use Illuminate\Http\Request;
class SectionController extends Controller
{
public function index(Request $request)
{
$query = Section::query();
if ($request->filled('q')) {
$query->where('title', 'like', '%' . $request->q . '%');
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
$sections = $query->paginate($perPage)->withQueryString();
return view('admin.section.index', compact('sections'));
}
public function create()
{
$books = Book::all();
$volums = Volum::all();
$laws = Law::all();
$sections = Section::all();
$divisions = Division::all();
return view('admin.section.create', compact('books', 'volums', 'laws','sections','divisions'));
}
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required',
'number' => 'required',
'book_id' => 'nullable',
'volum_id' => 'nullable',
'law_id' => 'nullable',
'division_id' => 'nullable'
]);
section::query()->create($validated);
return redirect(route('section.index'));
}
public function edit(Section $section)
{
$books = Book::all();
$volums = Volum::all();
$laws = Law::all();
$sections = Section::all();
$divisions = Division::all();
return view('admin.section.update', compact('section', 'books', 'volums', 'laws','sections','divisions'));
}
public function update(Request $request, Section $section)
{
$validated = $request->validate([
'title' => 'required',
'number' => 'required',
'book_id' => 'nullable',
'volum_id' => 'nullable',
'law_id' => 'nullable',
'division_id' => 'nullable'
]);
$section->update($validated);
return redirect(route('section.index'));
}
public function destroy(Section $section)
{
$section->delete();
return redirect(route('section.index'));
}
}

View File

@@ -0,0 +1,64 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\admin\SubscribePlan\CreateRequest;
use App\Http\Requests\admin\SubscribePlan\UpdateRequest;
use App\Models\SubscribePlan;
use Illuminate\Http\Request;
class SubscribePlanController extends Controller
{
public function index(Request $request)
{
$query = SubscribePlan::query();
if ($request->filled('q')) {
$q = $request->q;
$query->where('name', 'like', "%{$q}%");
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
$subscribePlans = $query->paginate($perPage)->withQueryString();
return view('admin.subscribe-plans.index', compact('subscribePlans'));
}
public function create()
{
return view('admin.subscribe-plans.create');
}
public function store(CreateRequest $request)
{
$validated = $request->validated();
$validated['is_active'] = $request->has('is_active');
$validated['is_free'] = $request->has('is_free');
SubscribePlan::create($validated);
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();
$validated['is_active'] = $request->has('is_active');
$validated['is_free'] = $request->has('is_free');
$subscribePlan->update($validated);
return redirect()->route('subscribe-plans.index');
}
public function destroy(SubscribePlan $subscribePlan)
{
$subscribePlan->delete();
return redirect()->route('subscribe-plans.index');
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Suggestion;
use Illuminate\Http\Request;
class SuggestionController extends Controller
{
public function index(Request $request)
{
$query = Suggestion::query()->with('user');
if ($request->filled('q')) {
$q = $request->q;
$query->where(function ($qry) use ($q) {
$qry->where('text', 'like', "%{$q}%")
->orWhereHas('user', fn ($u) => $u->where('mobile', 'like', "%{$q}%"));
});
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
$suggestions = $query->paginate($perPage)->withQueryString();
return view('admin.suggestions.index', compact('suggestions'));
}
}

View File

@@ -0,0 +1,74 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\admin\user\CreateUserRequest;
use App\Http\Requests\admin\user\UpdateUserRequest;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
class UsersController extends Controller
{
public function index(Request $request)
{
$query = User::select('id', 'name', 'email', 'mobile', 'is_admin')
->with(['userSubscribers' => function ($q) {
$q->where('expired_at', '>=', now());
}]);
if ($request->filled('q')) {
$q = $request->q;
$query->where(function ($qry) use ($q) {
$qry->where('name', 'like', "%{$q}%")
->orWhere('email', 'like', "%{$q}%")
->orWhere('mobile', 'like', "%{$q}%");
});
}
if ($request->filled('type') && in_array($request->type, ['0', '1'])) {
$query->where('is_admin', (bool) $request->type);
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
$users = $query->paginate($perPage)->withQueryString();
return view('admin.users.index', compact('users'));
}
public function create()
{
return view('admin.users.create');
}
public function store(CreateUserRequest $request)
{
$validated = $request->validated();
$validated['password'] = Hash::make(fake()->password);
$validated['is_admin'] = $validated['is_admin'] == 'on' ? true : false;
User::query()->create($validated);
return redirect(route('users.index'));
}
public function edit(User $user)
{
return view('admin.users.update', compact('user'));
}
public function update(UpdateUserRequest $request, User $user)
{
$validated = $request->validated();
$validated['is_admin'] = $validated['is_admin'] == 'on' ? true : false;
$user->update($validated);
return redirect(route('users.index'));
}
public function destroy(User $user)
{
$user->delete();
return back();
}
}

View File

@@ -0,0 +1,67 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\admin\CreateVersionStore;
use App\Http\Requests\admin\UpdateVersionStore;
use App\Models\Version;
use Illuminate\Http\Request;
class VersionController extends Controller
{
public function index(Request $request)
{
$query = Version::query();
if ($request->filled('q')) {
$q = $request->q;
$query->where(function ($qry) use ($q) {
$qry->where('code', 'like', "%{$q}%")
->orWhere('number', 'like', "%{$q}%")
->orWhere('type', 'like', "%{$q}%");
});
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
$versions = $query->paginate($perPage)->withQueryString();
return view('admin.versions.index', compact('versions'));
}
public function create()
{
return view('admin.versions.create');
}
public function store(CreateVersionStore $request)
{
$validated = $request->validated();
if (isset($validated['force_update'])) {
$validated['force_update'] = $validated['force_update'] == 'on' ? 1 : 0;
}
Version::create($validated);
return redirect(route('versions.index'));
}
public function edit(Version $version)
{
return view('admin.versions.update', compact('version'));
}
public function update(UpdateVersionStore $request, Version $version)
{
$validated = $request->validated();
if (isset($validated['force_update'])) {
$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

@@ -0,0 +1,72 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Law;
use App\Models\Volum;
use Illuminate\Http\Request;
class VolumController extends Controller
{
public function index(Request $request)
{
$query = Volum::query();
if ($request->filled('q')) {
$query->where('title', 'like', '%' . $request->q . '%');
}
$perPage = min(max((int) $request->input('per_page', 15), 10), 100);
$volums = $query->paginate($perPage)->withQueryString();
return view('admin.volum.index', compact('volums'));
}
public function create()
{
$laws = Law::all();
return view('admin.volum.create', compact('laws'));
}
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required',
'number' => 'required',
'law_id' => 'required',
]);
volum::query()->create($validated);
return redirect(route('volum.index'));
}
public function edit(Volum $volum)
{
$laws = Law::all();
return view('admin.volum.update', compact('volum', 'laws'));
}
public function update(Request $request, Volum $volum)
{
$validated = $request->validate([
'title' => 'required',
'number' => 'required',
'law_id' => 'required',
]);
$volum->update($validated);
return redirect(route('volum.index'));
}
public function destroy(Volum $volum)
{
$volum->delete();
return redirect(route('volum.index'));
}
}