has('options')) { $request['options'] = array_filter($request->input('options'), function($i) { return $i !== null; }); } $request['allow_multiple_answers'] = $request->has('allow_multiple_answers'); $request['hide_results_until_closed'] = $request->has('hide_results_until_closed'); $request['automatically_close_poll'] = $request->has('automatically_close_poll'); $request['set_admin_password'] = $request->has('set_admin_password'); $validatedInput = $request->validate([ 'question' => 'required|string', 'options' => 'required|min:2|distinct', 'allow_multiple_answers' => 'required|boolean', 'hide_results_until_closed' => 'required|boolean', 'automatically_close_poll' => 'required|boolean', 'automatically_close_poll_datetime' => 'required_if:automatically_close_poll,true|date|after:now', 'set_admin_password' => 'required|boolean', 'admin_password' => 'required_if:set_admin_password,true|nullable|string', 'duplicate_vote_checking' => 'required|in:none,cookies,codes', 'number_of_codes' => 'required_if:duplicate_vote_checking,codes|integer|min:2' ]); $poll = new Poll; $poll->question = $validatedInput['question']; $poll->duplicate_vote_checking = $validatedInput['duplicate_vote_checking']; $poll->allow_multiple_answers = $validatedInput['allow_multiple_answers']; $poll->hide_results_until_closed = $validatedInput['hide_results_until_closed']; $poll->created_at = Carbon::now(); if($validatedInput['automatically_close_poll']) { $poll->closes_at = Carbon::parse($validatedInput['automatically_close_poll_datetime']); } if($validatedInput['set_admin_password']) { $poll->admin_password = $validatedInput['admin_password']; } $poll->save(); $poll->options()->createMany(array_map(function($i) { return ['text' => $i]; }, $validatedInput['options'])); $poll->save(); if($poll->duplicate_vote_checking == 'codes') { $codes = $poll->createVotingCodes($validatedInput['number_of_codes']); } return redirect()->action('PollController@view', ['poll' => $poll])->with('new', true); } public function view(Request $request, Poll $poll) { $new = $request->session()->pull('new', false); if($request->format() == 'json') { if($new) { } else { } //TODO: Implement JSON output return null; } else { return view('view_poll')->with('poll', $poll)->with('new', $new); } } public function vote(Request $request, Poll $poll) { } public function admin(Request $request, Poll $poll) { } public function edit(Request $request, Poll $poll) { } }