<?php
/**
* Created by PhpStorm.
* User: adv
* Date: 22.05.17
* Time: 12:42
*/
namespace Slivki\Entity;
use Doctrine\Common\Collections\ArrayCollection;
class PhoneNumber extends Entity implements \JsonSerializable {
const COUNT_SYMBOL_DIGIT = 6;
protected $number;
protected $link;
protected $label;
protected $geoLocations;
protected $offer;
public function __construct() {
$this->geoLocations = new ArrayCollection();
}
public function getNumber() {
return $this->number;
}
public function setNumber($number) {
$this->number = $number;
}
public function getLink() {
return $this->link;
}
public function setLink($link) {
$this->link = $link;
}
public function getLabel() {
return $this->label;
}
public function setLabel($label) {
$this->label = $label;
}
public function getGeoLocations() {
return $this->geoLocations;
}
public function addGeoLocation(AbstractGeoLocationBase $geoLocation) {
if (!$this->geoLocations->contains($geoLocation)) {
$this->geoLocations->add($geoLocation);
return true;
}
return false;
}
public function hasGeoLocation(AbstractGeoLocationBase $geoLocation) {
return $this->geoLocations->contains($geoLocation);
}
public function removeGeoLocation(AbstractGeoLocationBase $geoLocation) {
$this->geoLocations->removeElement($geoLocation);
}
public function getOffer() {
return $this->offer;
}
public function setOffer(Offer $offer = null) {
$this->offer = $offer;
}
public function jsonSerialize(): array
{
return [
'ID' => $this->ID,
'number' => $this->number,
'link' => $this->link,
'label' => $this->label
];
}
public function getShortPhoneNumber(): string
{
$arrayNumber = str_split($this->number);
$count = 0;
$finalShortPhone = '';
foreach ($arrayNumber as $symbol) {
$finalShortPhone .= $symbol;
if (\is_numeric($symbol)) {
++$count;
}
if ($count === self::COUNT_SYMBOL_DIGIT) {
break;
}
}
return $finalShortPhone;
}
public static function fromJSON($data) {
$phoneNumber = new PhoneNumber();
$phoneNumber->setID($data->ID);
$phoneNumber->setNumber($data->number);
$phoneNumber->setLink($data->link);
$phoneNumber->setLabel($data->label);
return $phoneNumber;
}
}