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