/**
  * 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);
 }