From b601f09cb23bb9e49e652cadcae41bec784d599e Mon Sep 17 00:00:00 2001 From: Htet Phone Aung Date: Sat, 9 Sep 2023 19:44:15 +0630 Subject: [PATCH] orderBy chapter number & chpater number unique while on the same manga --- app/Http/Controllers/ChapterController.php | 19 ++++++++++++------- app/Http/Requests/StoreChapterRequest.php | 7 ++++++- resources/views/chapter/create.blade.php | 9 ++++++++- .../views/chapter/manageChapter.blade.php | 2 +- .../views/components/inner-manga.blade.php | 2 +- 5 files changed, 28 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/ChapterController.php b/app/Http/Controllers/ChapterController.php index 9a76c71..6c29d34 100644 --- a/app/Http/Controllers/ChapterController.php +++ b/app/Http/Controllers/ChapterController.php @@ -37,19 +37,25 @@ class ChapterController extends Controller $formData = $request->validated(); $formData['user_id'] = Auth::id(); - if($request->hasFile('images')) { + if ($request->hasFile('images')) { foreach ($request->file('images') as $key => $image) { - $images[] = $image->store($request->manga_id.'ChapterImages', 'public'); + $images[] = $image->store($request->manga_id . 'ChapterImages', 'public'); } $formData['images'] = $images; } - //chapter number - $manga = Manga::where('id', $request->manga_id)->first(); - $formData['chapter_no'] = $manga->chapters->count() + 1; + + if ($request->chapter_no) { + $formData['chapter_no'] = $request->chapter_no; + } else { + //chapter number + $manga = Manga::where('id', $request->manga_id)->first(); + $latestChap = $manga->chapters()->latest()->first()->chapter_no; + $formData['chapter_no'] = $latestChap + 1; + } + Chapter::create($formData); return redirect()->route('home')->with(['message' => 'New Chapter has been added!!']); - } /** @@ -91,4 +97,3 @@ class ChapterController extends Controller return view('chapter.manageChapter', compact('manga')); } } - diff --git a/app/Http/Requests/StoreChapterRequest.php b/app/Http/Requests/StoreChapterRequest.php index 2448c84..aa8c978 100644 --- a/app/Http/Requests/StoreChapterRequest.php +++ b/app/Http/Requests/StoreChapterRequest.php @@ -2,6 +2,8 @@ namespace App\Http\Requests; +use Illuminate\Validation\Rule; +use Illuminate\Database\Query\Builder; use Illuminate\Foundation\Http\FormRequest; class StoreChapterRequest extends FormRequest @@ -21,11 +23,14 @@ class StoreChapterRequest extends FormRequest */ public function rules(): array { + // dd(request()->manga_id); + $id = request()->manga_id; return [ 'title' => 'required|min:3', + 'chapter_no' => ['nullable', 'numeric', Rule::unique('chapters', 'chapter_no')->where(fn (Builder $query) => $query->where('manga_id', $id)) ], 'manga_id' => 'required|exists:mangas,id', 'images' => 'required', - 'images.*' => 'file|mimes:png,jpg' + 'images.*' => 'file|mimes:png,jpg', ]; } diff --git a/resources/views/chapter/create.blade.php b/resources/views/chapter/create.blade.php index 5319812..a342612 100644 --- a/resources/views/chapter/create.blade.php +++ b/resources/views/chapter/create.blade.php @@ -24,9 +24,16 @@

{{ $message }}

@enderror +
+ + + @error('chapter_no') +

{{ $message }}

+ @enderror +
- + @error('title')

{{ $message }}

@enderror diff --git a/resources/views/chapter/manageChapter.blade.php b/resources/views/chapter/manageChapter.blade.php index 40beb13..d6eb49b 100644 --- a/resources/views/chapter/manageChapter.blade.php +++ b/resources/views/chapter/manageChapter.blade.php @@ -12,7 +12,7 @@
- @foreach ($manga->chapters()->latest('id')->paginate(20) as $chapter) + @foreach ($manga->chapters()->orderBy('chapter_no', 'desc')->paginate(20) as $chapter)

Chapter {{ $chapter->chapter_no }}

diff --git a/resources/views/components/inner-manga.blade.php b/resources/views/components/inner-manga.blade.php index 9e6546c..2a4b474 100644 --- a/resources/views/components/inner-manga.blade.php +++ b/resources/views/components/inner-manga.blade.php @@ -10,7 +10,7 @@ Latest Chapters - @forelse ($manga->chapters()->latest('id')->get() as $chapter) + @forelse ($manga->chapters()->orderBy('chapter_no', 'desc')->get() as $chapter)