'slash', self::MIDNIGHT_NOTIFICATION => 'moon', self::MORNING_NOTIFICATION => 'sunrise', self::NOON_NOTIFICATION => 'sun', self::EVENING_NOTIFICATION => 'sunset', ]; /** * @param User $user * @return array */ public function getHoursBracket(User $user) { switch ((int)$user->notification_hour) { case self::MIDNIGHT_NOTIFICATION: return ['2100-2359', '0000-0600']; break; case self::MORNING_NOTIFICATION: return ['0601-1100']; break; case self::NOON_NOTIFICATION: return ['1101-1530']; break; case self::EVENING_NOTIFICATION: return ['1531-2059']; break; case self::NO_NOTIFICATION: default: return []; } } /** * @param null|int|string $current_hour the hour and minute we want to find the id to. Formatted like `date('Hi')` * @return int * @throws WrongHourException */ public function getCurrentNotificationId($current_hour = null) { if (null === $current_hour) { $current_hour = date('Hi'); } $current_hour = (int) $current_hour; if ( ($current_hour >= 2100 && $current_hour < 2359) || ($current_hour >= 0 && $current_hour < 600) ) { return self::MIDNIGHT_NOTIFICATION; } if ($current_hour >= 600 && $current_hour < 1100) { return self::MORNING_NOTIFICATION; } if ($current_hour >= 1100 && $current_hour < 1530) { return self::NOON_NOTIFICATION; } if ($current_hour >= 1530 && $current_hour < 2100) { return self::EVENING_NOTIFICATION; } throw new WrongHourException(sprintf('Given Time « %s » is not compatible', $current_hour)); } }