Edit File: AnimeCreate.php
<?php namespace App\Livewire\Admin\Anime; use App\Models\Type; use App\Models\Anime; use App\Models\Genre; use App\Models\Season; use App\Models\History; use App\Models\Nation; use App\Models\Tag; use Livewire\Component; use Illuminate\Support\Str; use Livewire\WithFileUploads; use Livewire\Attributes\Layout; use Livewire\Attributes\Validate; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Session; class AnimeCreate extends Component { use WithFileUploads; #[Validate("string|required|max:255|unique:animes,title")] public string $title; #[Validate("string|required|max:100")] public string $name; #[Validate("string|required|max:65525")] public string $short_description; #[Validate("image|required|mimes:png,jpg,jpeg,webp")] public $photo; #[Validate("image|required|mimes:png,jpg,jpeg,webp")] public $home_image; #[Validate(rule: "bool|required")] public bool $is_film = false; #[Validate(rule: "bool|required")] public bool $is_series = false; #[Validate(rule: "bool|required")] public bool $is_hot = true; #[Validate("bool|required")] public bool $is_priority = false; #[Validate("string|nullable")] public string $total_episode = "-"; #[Validate("string|nullable")] public string $release_date = "-"; #[Validate("string|nullable")] public string $score = "- / -" ; #[Validate("required")] public int $nation_id = 1; #[Validate("required")] public int $season_id; #[Validate("required")] public int $genre_id; #[Validate("required")] public int $type_id; #[Validate("string|nullable")] public string $duration = "-"; public $seasons; public $genres; public $types; public $nations; public array $tag_multi_ids; public $tags; public function mount() { $this->seasons = Season::orderByDesc("order")->get(); $this->genres = Genre::orderBy("name")->get(); $this->types = Type::orderBy("name")->get(); if(count($this->seasons) == 0) { Session::flash('status', 'danger'); Session::flash('message', 'Silahkan Buat Season Terlebih Dahulu'); return redirect()->route("admin.season.index"); } if(count($this->genres) == 0) { Session::flash('status', 'danger'); Session::flash('message', 'Silahkan Buat Genre Terlebih Dahulu'); return redirect()->route("admin.genre.index"); } if(count($this->types) == 0) { Session::flash('status', 'danger'); Session::flash('message', 'Silahkan Buat Type Terlebih Dahulu'); return redirect()->route("admin.type.index"); } $this->season_id = $this->seasons->first()->id; $this->genre_id = $this->genres->first()->id; $this->type_id = $this->types->first()->id; $this->tags = Tag::orderBy("name")->get(); if(count($this->tags) == 0) { Session::flash('status', 'danger'); Session::flash('message', 'Silahkan Buat Tag Terlebih Dahulu'); return redirect()->route("admin.tag.index"); } $this->nations = Nation::orderBy("name")->get(); if(count($this->nations) == 0) { Session::flash('status', 'danger'); Session::flash('message', 'Silahkan Tambahkan Negara Terlebih Dahulu'); return redirect()->route("admin.nation.index"); } } public function store() { $this->validate(); $anime = new Anime(); $sanitized_anime_name = $this->name; $sanitized_anime_name = str_replace("?", "", $sanitized_anime_name); $sanitized_anime_name = str_replace(":", "-", $sanitized_anime_name); // Gambar Thumbnail $extension = $this->photo->getClientOriginalExtension(); $newname = $sanitized_anime_name . ".$extension"; $this->photo->storeAs("anime/$sanitized_anime_name", $newname); $storage_path = "/storage/anime/$sanitized_anime_name/$newname"; $anime->thumbnail = $storage_path; // Gambar Home Slider $extension2 = $this->home_image->getClientOriginalExtension(); $newname = $sanitized_anime_name . "-home". ".$extension2"; $this->home_image->storeAs("anime/$sanitized_anime_name", $newname); $storage_path = "/storage/anime/$sanitized_anime_name/$newname"; $anime->home_image = $storage_path; $anime->name = $this->name; $anime->title = $this->title; $anime->short_description = $this->short_description; $anime->release_date = $this->release_date; $anime->score = $this->score; $anime->duration = $this->duration; $anime->current_episode = 0; $anime->total_episode = $this->total_episode; $anime->nation_id = $this->nation_id; $anime->season_id = $this->season_id; $anime->genre_id = $this->genre_id; $anime->type_id = $this->type_id; $anime->is_hot = $this->is_hot; $anime->is_film = $this->is_film; $anime->is_series = $this->is_series; $anime->is_priority = $this->is_priority; $anime->slug = Str::slug($this->title); $anime->save(); $anime->tags()->sync($this->tag_multi_ids); History::create([ 'name' => Auth::user()->name, 'page' => 'Anime', 'title' => Auth::user()->name . ' Menambahkan Anime ' . $this->name, 'status' => 'success', ]); Session::flash('status', 'success'); Session::flash('message', 'Berhasil Menambahkan Anime Baru'); return redirect()->route("admin.anime.index"); } #[Layout("layouts.admin")] public function render() { return view('livewire.admin.anime.anime-create'); } }
Back