/** * PinServce constructor. * @param int $showtimeId * @param $reminderMinutes * @param $userToken * * @param GeocodeCached $geocode */ public function __construct($showtimeId, $reminderMinutes, $userToken, GeocodeCached $geocode) { $this->showtime = Showtime::findOne($showtimeId); if (!$this->showtime) { throw new \InvalidArgumentException("Specified showtime ID [{$showtimeId}] is not valid."); } $this->reminderMinutes = $reminderMinutes; $this->userToken = $userToken; $timezone = TimeZoneService::instance()->getTimeZone($geocode) ?: 'Europe/London'; //default to UTC if all failes $this->dateTimeZone = new \DateTimeZone($timezone); }