public function save()
{
if (!$this->isValid()) {
return false;
}
return DB::transaction(function () {
$this->topic->update(['poll_title' => $this->params['title'], 'poll_start' => Carbon::now(), 'poll_length' => ($this->params['length_days'] ?? 0) * 3600, 'poll_max_options' => $this->params['max_options'], 'poll_vote_change' => $this->params['vote_change'] ?? false]);
$this->topic->pollVotes()->delete();
$this->topic->pollOptions()->delete();
for ($i = 0; $i < count($this->params['options']); $i++) {
PollOption::create(['topic_id' => $this->topic->topic_id, 'poll_option_id' => $i, 'poll_option_text' => $this->params['options'][$i]]);
}
return true;
});
}