'required|min:3', 'image' => 'required|image|max:2048', 'duration' => 'required|numeric|min:7', 'state' => 'required|in:draft,active,inactive', 'type' => ['required', 'array:slim,fit,wellness,behavior', 'min:1'], 'details' => 'required|min:3', 'packets_count' => 'required|in:1,3', 'packet1_options.short' => 'required|string|min:3', 'packet1_options.price' => 'required|numeric|min:1', 'packet1_options.description' => 'required|string|min:3', 'packet1_options.items' => 'required|array|min:1', ]; if($this->packets_count === 3) { $rules['packet2_options.short'] = 'required|string|min:3'; $rules['packet2_options.price'] = 'required|numeric|min:1'; $rules['packet2_options.description'] = 'required|string|min:3'; $rules['packet2_options.items'] = 'required|array|min:1'; $rules['packet3_options.short'] = 'required|string|min:3'; $rules['packet3_options.price'] = 'required|numeric|min:1'; $rules['packet3_options.description'] = 'required|string|min:3'; $rules['packet3_options.items'] = 'required|array|min:1'; } return $rules; } public function render() { return view('livewire.plan.create'); } public function addPacketOption($options_type, $options_type_input) { $this->$options_type['short'] = $this->$options_type_input['short']; $this->$options_type['price'] = $this->$options_type_input['price']; $this->$options_type['description'] = $this->$options_type_input['description']; $this->$options_type['items'][] = $this->input_items; $this->reset('input_items'); } public function publish() { /* dd($this->type); */ $this->validate(); $plan = new Plan(); $plan->name = $this->name; $plan->image = $this->image->store('plans', 'public'); $plan->duration = $this->duration; $plan->state = $this->state; $plan->type = json_encode($this->type); $plan->details = $this->details; $plan->packets_count = $this->packets_count; $plan->packet1_options = json_encode($this->packet1_options); $plan->packet2_options = json_encode($this->packet2_options); $plan->packet3_options = json_encode($this->packet3_options); $plan->save(); $user = Auth::user(); $user->author_of_plans()->attach($plan->id); return redirect()->route('plan.show', $plan->id); } public function addToDrafts() { $this->type = "draft"; $this->publish(); } public function showPreview() { $this->type = "inactive"; $this->publish(); } }