id;
    }
    public function getName(): ?string
    {
        return $this->name;
    }
    public function setName(string $name): static
    {
        $this->name = $name;
        return $this;
    }
    public function getAddress(): ?string
    {
        return $this->address;
    }
    public function setAddress(string $address): static
    {
        $this->address = $address;
        return $this;
    }
    public function getAddress2(): ?string
    {
        return $this->address2;
    }
    public function setAddress2(?string $address2): static
    {
        $this->address2 = $address2;
        return $this;
    }
    public function getCity(): ?string
    {
        return $this->city;
    }
    public function setCity(string $city): static
    {
        $this->city = $city;
        return $this;
    }
    public function getState(): ?State
    {
        return $this->state;
    }
    public function setState(State $state): static
    {
        $this->state = $state;
        return $this;
    }
    public function getZip(): ?int
    {
        return $this->zip;
    }
    public function setZip(int $zip): static
    {
        $this->zip = $zip;
        return $this;
    }
    public function getCounty(): ?County
    {
        return $this->county;
    }
    public function setCounty(County $county): static
    {
        $this->county = $county;
        return $this;
    }
    public function getFormattedAddress(): ?string
    {
        return $this->address .
            ($this->address2 ? ' ' . $this->address2 : '') . '
' .
            $this->city . ', ' . $this->state->value . ' ' . $this->zip;
    }
    public function getPhone(): ?string
    {
        return $this->phone;
    }
    public function setPhone(?string $phone): static
    {
        $this->phone = $phone;
        return $this;
    }
    public function getEmail(): ?string
    {
        return $this->email;
    }
    public function setEmail(?string $email): static
    {
        $this->email = $email;
        return $this;
    }
    public function getUrl(): ?string
    {
        return $this->url;
    }
    public function setUrl(?string $url): static
    {
        $this->url = $url;
        return $this;
    }
    public function urlString(): ?string
    {
        if (preg_match("/facebook/i", $this->url)) {
            return "";
        } else {
            return "";
        }
        return null;
    }
    public function getContactCard(): ?string
    {
        $formattedPhone = ($this->phone ? Libs::formatPhone($this->phone) : '');
        return ($this->email ? "$this->email
" : '') .
            ($this->phone ? "$formattedPhone" : '');
    }
    public function generateVCard(): string
    {
        return 'BEGIN:VCARD' .
            "\nVERSION:3.0" .
            "\nN:$this->name" .
            "\nFN:$this->name" .
            "\nORG:$this->name" .
            "\nADR;TYPE=WORK:;;$this->address;$this->city;{$this->state->value};$this->zip" .
            ($this->phone ? "\nTEL;TYPE=WORK,VOICE:$this->phone" : null) .
            ($this->email ? "\nEMAIL;TYPE=WORK,INTERNET:$this->email" : null) .
            ($this->url ? "\nURL:$this->url" : null) .
            "\nNOTE:$this->notes" .
            "\nREV:" . date('c') .
            "\nEND:VCARD";
    }
    public function getMonOpen(): ?\DateTimeInterface
    {
        return $this->monOpen;
    }
    public function setMonOpen(?\DateTimeInterface $monOpen): static
    {
        $this->monOpen = $monOpen;
        return $this;
    }
    public function getMonClose(): ?\DateTimeInterface
    {
        return $this->monClose;
    }
    public function setMonClose(?\DateTimeInterface $monClose): static
    {
        $this->monClose = $monClose;
        return $this;
    }
    public function mon(): ?string
    {
        if (!$this->monOpen || !$this->monClose) {
            return 'C';
        }
        $closeAt = new DateTime($this->today->format('Y-m-d') . ' ' . $this->monClose->format('H:i:s'), new DateTimeZone($_ENV['COMPANY_TIMEZONE']));
        if ($closeAt <= new DateTime('now', new DateTimeZone($_ENV['COMPANY_TIMEZONE']))) {
            return 'C';
        }
        return $this->monOpen->format('g:i A') . '-' . $this->monClose->format('g:i A');
    }
    public function getTueOpen(): ?\DateTimeInterface
    {
        return $this->tueOpen;
    }
    public function setTueOpen(?\DateTimeInterface $tueOpen): static
    {
        $this->tueOpen = $tueOpen;
        return $this;
    }
    public function getTueClose(): ?\DateTimeInterface
    {
        return $this->tueClose;
    }
    public function setTueClose(?\DateTimeInterface $tueClose): static
    {
        $this->tueClose = $tueClose;
        return $this;
    }
    public function tue(): ?string
    {
        if (!$this->tueOpen || !$this->tueClose) {
            return 'C';
        }
        $closeAt = new DateTime($this->today->format('Y-m-d') . ' ' . $this->tueClose->format('H:i:s'), new DateTimeZone($_ENV['COMPANY_TIMEZONE']));
        if ($closeAt <= new DateTime('now', new DateTimeZone($_ENV['COMPANY_TIMEZONE']))) {
            return 'C';
        }
        return $this->tueOpen->format('g:i A') . '-' . $this->tueClose->format('g:i A');
    }
    public function getWedOpen(): ?\DateTimeInterface
    {
        return $this->wedOpen;
    }
    public function setWedOpen(?\DateTimeInterface $wedOpen): static
    {
        $this->wedOpen = $wedOpen;
        return $this;
    }
    public function getWedClose(): ?\DateTimeInterface
    {
        return $this->wedClose;
    }
    public function setWedClose(?\DateTimeInterface $wedClose): static
    {
        $this->wedClose = $wedClose;
        return $this;
    }
    public function wed(): ?string
    {
        if (!$this->wedOpen || !$this->wedClose) {
            return 'C';
        }
        $closeAt = new DateTime($this->today->format('Y-m-d') . ' ' . $this->wedClose->format('H:i:s'), new DateTimeZone($_ENV['COMPANY_TIMEZONE']));
        if ($closeAt <= new DateTime('now', new DateTimeZone($_ENV['COMPANY_TIMEZONE']))) {
            return 'C';
        }
        return $this->wedOpen->format('g:i A') . '-' . $this->wedClose->format('g:i A');
    }
    public function getThuOpen(): ?\DateTimeInterface
    {
        return $this->thuOpen;
    }
    public function setThuOpen(?\DateTimeInterface $thuOpen): static
    {
        $this->thuOpen = $thuOpen;
        return $this;
    }
    public function getThuClose(): ?\DateTimeInterface
    {
        return $this->thuClose;
    }
    public function setThuClose(?\DateTimeInterface $thuClose): static
    {
        $this->thuClose = $thuClose;
        return $this;
    }
    public function thu(): ?string
    {
        if (!$this->thuOpen || !$this->thuClose) {
            return 'C';
        }
        $closeAt = new DateTime($this->today->format('Y-m-d') . ' ' . $this->thuClose->format('H:i:s'), new DateTimeZone($_ENV['COMPANY_TIMEZONE']));
        if ($closeAt <= new DateTime('now', new DateTimeZone($_ENV['COMPANY_TIMEZONE']))) {
            return 'C';
        }
        return $this->thuOpen->format('g:i A') . '-' . $this->thuClose->format('g:i A');
    }
    public function getFriOpen(): ?\DateTimeInterface
    {
        return $this->friOpen;
    }
    public function setFriOpen(?\DateTimeInterface $friOpen): static
    {
        $this->friOpen = $friOpen;
        return $this;
    }
    public function getFriClose(): ?\DateTimeInterface
    {
        return $this->friClose;
    }
    public function setFriClose(?\DateTimeInterface $friClose): static
    {
        $this->friClose = $friClose;
        return $this;
    }
    public function fri(): ?string
    {
        if (!$this->friOpen || !$this->friClose) {
            return 'C';
        }
        $closeAt = new DateTime($this->today->format('Y-m-d') . ' ' . $this->friClose->format('H:i:s'), new DateTimeZone($_ENV['COMPANY_TIMEZONE']));
        if ($closeAt <= new DateTime('now', new DateTimeZone($_ENV['COMPANY_TIMEZONE']))) {
            return 'C';
        }
        return $this->friOpen->format('g:i A') . '-' . $this->friClose->format('g:i A');
    }
    public function getSatOpen(): ?\DateTimeInterface
    {
        return $this->satOpen;
    }
    public function setSatOpen(?\DateTimeInterface $satOpen): static
    {
        $this->satOpen = $satOpen;
        return $this;
    }
    public function getSatClose(): ?\DateTimeInterface
    {
        return $this->satClose;
    }
    public function setSatClose(?\DateTimeInterface $satClose): static
    {
        $this->satClose = $satClose;
        return $this;
    }
    public function sat(): ?string
    {
        if (!$this->satOpen || !$this->satClose) {
            return 'C';
        }
        $closeAt = new DateTime($this->today->format('Y-m-d') . ' ' . $this->satClose->format('H:i:s'), new DateTimeZone($_ENV['COMPANY_TIMEZONE']));
        if ($closeAt <= new DateTime('now', new DateTimeZone($_ENV['COMPANY_TIMEZONE']))) {
            return 'C';
        }
        return $this->satOpen->format('g:i A') . '-' . $this->satClose->format('g:i A');
    }
    public function getSunOpen(): ?\DateTimeInterface
    {
        return $this->sunOpen;
    }
    public function setSunOpen(?\DateTimeInterface $sunOpen): static
    {
        $this->sunOpen = $sunOpen;
        return $this;
    }
    public function getSunClose(): ?\DateTimeInterface
    {
        return $this->sunClose;
    }
    public function setSunClose(?\DateTimeInterface $sunClose): static
    {
        $this->sunClose = $sunClose;
        return $this;
    }
    public function sun(): ?string
    {
        if (!$this->sunOpen || !$this->sunClose) {
            return 'C';
        }
        $closeAt = new DateTime($this->today->format('Y-m-d') . ' ' . $this->sunClose->format('H:i:s'), new DateTimeZone($_ENV['COMPANY_TIMEZONE']));
        if ($closeAt <= new DateTime('now', new DateTimeZone($_ENV['COMPANY_TIMEZONE']))) {
            return 'C';
        }
        return $this->sunOpen->format('g:i A') . '-' . $this->sunClose->format('g:i A');
    }
    public function getHours(): ?string
    {
        $this->today = new DateTime('now', new DateTimeZone($_ENV['COMPANY_TIMEZONE']));
        switch ($this->today->format('w')) {
            case 0:
                return $this->sun();
            case 1:
                return $this->mon();
            case 2:
                return $this->tue();
            case 3:
                return $this->wed();
            case 4:
                return $this->thu();
            case 5:
                return $this->fri();
            case 6:
                return $this->sat();
        }
    }
    public function getFormattedHours(): ?string
    {
        $mon = 'CLOSED';
        $tue = 'CLOSED';
        $wed = 'CLOSED';
        $thu = 'CLOSED';
        $fri = 'CLOSED';
        $sat = 'CLOSED';
        $sun = 'CLOSED';
        if ($this->monOpen && $this->monClose) {
            $mon = $this->monOpen->format('g:i A') . '-' . $this->monClose->format('g:i A');
        }
        if ($this->tueOpen && $this->tueClose) {
            $tue = $this->tueOpen->format('g:i A') . '-' . $this->tueClose->format('g:i A');
        }
        if ($this->wedOpen && $this->wedClose) {
            $wed = $this->wedOpen->format('g:i A') . '-' . $this->wedClose->format('g:i A');
        }
        if ($this->thuOpen && $this->thuClose) {
            $thu = $this->thuOpen->format('g:i A') . '-' . $this->thuClose->format('g:i A');
        }
        if ($this->friOpen && $this->friClose) {
            $fri = $this->friOpen->format('g:i A') . '-' . $this->friClose->format('g:i A');
        }
        if ($this->satOpen && $this->satClose) {
            $sat = $this->satOpen->format('g:i A') . '-' . $this->satClose->format('g:i A');
        }
        if ($this->sunOpen && $this->sunClose) {
            $sun = $this->sunOpen->format('g:i A') . '-' . $this->sunClose->format('g:i A');
        }
        return <<Sun: {$sun}
Mon: {$mon}
Tue: {$tue}
Wed: {$wed}
Thu: {$thu}
Fri: {$fri}
Sat: {$sat}
HTML; } public function getNotes(): ?string { return $this->notes; } public function setNotes(?string $notes): static { $this->notes = $notes; return $this; } public function getServicesAvailable(): ?string { return $this->servicesAvailable; } public function setServicesAvailable(?string $servicesAvailable): static { $this->servicesAvailable = $servicesAvailable; return $this; } /** * @return ResourceType[] */ public function getType(): array { return $this->type; } public function setType(array $type): static { $this->type = $type; return $this; } public function getLat(): ?float { return $this->lat; } public function setLat(?float $lat): static { $this->lat = $lat; return $this; } public function getLon(): ?float { return $this->lon; } public function setLon(?float $lon): static { $this->lon = $lon; return $this; } public function _toInfoWindow(): string { return <<