_getRange(); // start and end are always "now", and get edited later. $start = new Carbon; $end = new Carbon; // update start only: $start = $this->_updateStartDate($range, $start); // update end only: $end = $this->_updateEndDate($range, $start, $end); // save in session: \Session::put('start', $start); \Session::put('end', $end); \Session::put('range', $range); return null; } /** * @return mixed */ protected function _getRange() { if (!is_null(\Session::get('range'))) { $range = \Session::get('range'); } else { /** @noinspection PhpUndefinedClassInspection */ $preferences = \App::make('Firefly\Helper\Preferences\PreferencesHelperInterface'); $viewRange = $preferences->get('viewRange', '1M'); // default range: $range = $viewRange->data; } return $range; } /** * @param $range * @param Carbon $start * * @return Carbon */ protected function _updateStartDate($range, Carbon $start) { $today = new Carbon; switch ($range) { case '1D': $start->startOfDay(); break; case '1W': $start->startOfWeek(); break; case '1M': $start->startOfMonth(); break; case '3M': $start->firstOfQuarter(); break; case '6M': if (intval($today->format('m')) >= 7) { $start->startOfYear()->addMonths(6); } else { $start->startOfYear(); } break; } return $start; } /** * @param $range * @param Carbon $start * @param Carbon $end * * @return Carbon */ protected function _updateEndDate($range, Carbon $start, Carbon $end) { $today = new Carbon; switch ($range) { case '1D': $end = clone $start; $end->endOfDay(); break; case '1W': $end = clone $start; $end->endOfWeek(); break; case '1M': $end = clone $start; $end->endOfMonth(); break; case '3M': $end = clone $start; $end->lastOfQuarter(); break; case '6M': $end = clone $start; if (intval($today->format('m')) >= 7) { $end->endOfYear(); } else { $end->startOfYear()->addMonths(6); } break; } return $end; } /** * Takes any collection and tries to make a sensible select list compatible array of it. * * @param Collection $set * @param null $titleField * * @return mixed */ public function makeSelectList(Collection $set, $titleField = null) { $selectList = []; /** @var Model $entry */ foreach ($set as $entry) { $id = intval($entry->id); $title = null; if (is_null($titleField)) { // try 'title' field. if (isset($entry->title)) { $title = $entry->title; } // try 'name' field if (is_null($title)) { $title = $entry->name; } // try 'description' field if (is_null($title)) { $title = $entry->description; } } else { $title = $entry->$titleField; } $selectList[$id] = $title; } return $selectList; } }