'required|min:3', 'image' => 'required|image|max:2048', 'duration' => 'required|numeric|min:7', 'state' => 'required|in:draft,active,inactive', 'type' => ['required', 'array:meat,veg,corb,alko', 'min:1'], 'details' => 'required|min:3', ]; return $rules; } public function render() { return view('livewire.diet.create'); } public function dayUpdated($dayIndex, $data) { $this->days[$dayIndex] = $data; } public function showPreview() { $this->state = "draft"; $this->publish(); } public function addToDrafts() { $this->state = "draft"; $this->publish(); } public function makeCopy($day) { $this->copyedDay = $day; } public function makePaste($copyToDay) { $data = $this->days[$this->copyedDay]; $this->dispatch('takePaste', day: $copyToDay, data: $data)->to('diet.day-edit'); } public function publish() { $this->validate(); $diet = new Diet(); $diet->name = $this->name; $diet->image = $this->image->store('diets', 'public'); $diet->duration = $this->duration; $diet->state = $this->state; $diet->type = json_encode($this->type); $diet->details = $this->details; $diet->daily_schedule = json_encode($this->days); $diet->save(); $user = Auth::user(); $user->author_of_diets()->attach($diet->id); return redirect()->route('diet.show', $diet->id); } }