      1: <?php
      2:
      3: namespace SMSApi\Api\Response;
      4:
      5: use SMSApi\Exception\InvalidParameterException;
      6:
      7: /**
      8:  * Class ContactResponse
      9:  * @package SMSApi\Api\Response
     10:  */
     11: class ContactResponse extends AbstractResponse {
     12:
     13:     const GENDER_FEMALE = "female";
     14:     const GENDER_MALE = "male";
     15:
     16:     /**
     17:      * @var int
     18:      */
     19:     private $number;
     20:
     21:     /**
     22:      * @var string
     23:      */
     24:     private $firstName;
     25:
     26:     /**
     27:      * @var string
     28:      */
     29:     private $lastName;
     30:
     31:     /**
     32:      * @var string
     33:      */
     34:     private $info;
     35:
     36:     /**
     37:      * @var string
     38:      */
     39:     private $email;
     40:
     41:     /**
     42:      * @var string
     43:      */
     44:     private $birthday;
     45:
     46:     /**
     47:      * @var string
     48:      */
     49:     private $city;
     50:
     51:     /**
     52:      * @var string
     53:      */
     54:     private $gender;
     55:
     56:     /**
     57:      * @var int
     58:      */
     59:     private $dateAdd;
     60:
     61:     /**
     62:      * @var int
     63:      */
     64:     private $dateMod;
     65:
     66:     /**
     67:      * @var array
     68:      */
     69:     private $groups = null;
     70:
     71:     public function __construct( $data ) {
     72:
     73:         if ( is_object( $data ) ) {
     74:             $this->obj = $data;
     75:         } else if ( is_string( $data ) ) {
     76:             parent::__construct( $data );
     77:         }
     78:
     79:         if ( isset( $this->obj->number ) ) {
     80:             $this->number = $this->obj->number;
     81:         }
     82:
     83:         if ( isset( $this->obj->first_name ) ) {
     84:             $this->firstName = $this->obj->first_name;
     85:         }
     86:
     87:         if ( isset( $this->obj->last_name ) ) {
     88:             $this->lastName = $this->obj->last_name;
     89:         }
     90:
     91:         if ( isset( $this->obj->info ) ) {
     92:             $this->info = $this->obj->info;
     93:         }
     94:
     95:         if ( isset( $this->obj->birthday ) ) {
     96:             $this->birthday = $this->obj->birthday;
     97:         }
     98:
     99:         if ( isset( $this->obj->city ) ) {
    100:             $this->city = $this->obj->city;
    101:         }
    102:
    103:         if ( isset( $this->obj->gender ) ) {
    104:             $this->gender = $this->obj->gender;
    105:         }
    106:
    107:         if ( isset( $this->obj->date_add ) ) {
    108:             $this->dateAdd = $this->obj->date_add;
    109:         }
    110:
    111:         if ( isset( $this->obj->date_mod ) ) {
    112:             $this->dateMod = $this->obj->date_mod;
    113:         }
    114:
    115:         if (isset($this->obj->groups)) {
    116:             $this->groups = (array)$this->obj->groups;
    117:         }
    118:     }
    119:
    120:     /**
    121:      * Returns phone number
    122:      *
    123:      * @return int
    124:      */
    125:     public function getNumber() {
    126:         return $this->number;
    127:     }
    128:
    129:     /**
    130:      * Returns contact first name
    131:      *
    132:      * @return string
    133:      */
    134:     public function getFirstName() {
    135:         return $this->firstName;
    136:     }
    137:
    138:     /**
    139:      * Returns contact last name
    140:      *
    141:      * @return string
    142:      */
    143:     public function getLastName() {
    144:         return $this->lastName;
    145:     }
    146:
    147:     /**
    148:      * Returns contact information text
    149:      *
    150:      * @return string
    151:      */
    152:     public function getInfo() {
    153:         return $this->info;
    154:     }
    155:
    156:     /**
    157:      * Returns contact e-mail address
    158:      *
    159:      * @return string Example: example@smsapi.com
    160:      */
    161:     public function getEmail() {
    162:         return $this->email;
    163:     }
    164:
    165:     /**
    166:      * Returns contact birthday date
    167:      *
    168:      * @return string Example: 1974-1-14
    169:      */
    170:     public function getBirthday() {
    171:         return $this->birthday;
    172:     }
    173:
    174:     /**
    175:      * Returns contact city name
    176:      *
    177:      * @return string
    178:      */
    179:     public function getCity() {
    180:         return $this->city;
    181:     }
    182:
    183:     /**
    184:      * Returns contact gender
    185:      *
    186:      * @see \SMSApi\Api\Response\ContactResponse::GENDER_FEMALE
    187:      * @see \SMSApi\Api\Response\ContactResponse::GENDER_MALE
    188:      * @return string Example male or female
    189:      */
    190:     public function getGender() {
    191:         return $this->gender;
    192:     }
    193:
    194:     /**
    195:      * Returns create date in timestamp
    196:      *
    197:      * @return int date in timestamp
    198:      */
    199:     public function getDateAdd() {
    200:         return $this->dateAdd;
    201:     }
    202:
    203:     /**
    204:      * Returns modification date in timestamp
    205:      *
    206:      * @return int date in timestamp
    207:      */
    208:     public function getDateMod() {
    209:         return $this->dateMod;
    210:     }
    211:
    212:     /**
    213:      * Returns groups
    214:      *
    215:      * @throws InvalidParameterException
    216:      * @return array with group names
    217:      */
    218:     public function getGroups()
    219:     {
    220:
    221:         if ($this->groups === null) {
    222:             throw new InvalidParameterException('Use action \SMSApi\Api\Action\Phonebook\ContactGet::withGroups() method to load resources with groups');
    223:         }
    224:
    225:         return $this->groups;
    226:     }
    227:
    228:
    229:
    230: }
    231: