<?php

/**

 * 2007-2014 [PagSeguro Internet Ltda.]

 *

 * NOTICE OF LICENSE

 *

 *Licensed under the Apache License, Version 2.0 (the "License");

 *you may not use this file except in compliance with the License.

 *You may obtain a copy of the License at

 *

 *http://www.apache.org/licenses/LICENSE-2.0

 *

 *Unless required by applicable law or agreed to in writing, software

 *distributed under the License is distributed on an "AS IS" BASIS,

 *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 *See the License for the specific language governing permissions and

 *limitations under the License.

 *

 *  @author    PagSeguro Internet Ltda.

 *  @copyright 2007-2014 PagSeguro Internet Ltda.

 *  @license   http://www.apache.org/licenses/LICENSE-2.0

 */



/***

 * Represents a phone number

 */

class PagSeguroPhone

{



    /***

     * Area code

     */

    private $areaCode;



    /***

     * Phone number

     */

    private $number;



    /***

     * Initializes a new instance of the PagSeguroPhone class

     *

     * @param String $areaCode

     * @param String $number

     * @return PagSeguroPhone

     */

    public function __construct($areaCode = null, $number = null)

    {

        $this->areaCode = ($areaCode == null ? null : $areaCode);

        $this->number = ($number == null ? null : $number);

        return $this;

    }



    /***

     * @return int the area code

     */

    public function getAreaCode()

    {

        return $this->areaCode;

    }



    /***

     * @return int the number

     */

    public function getNumber()

    {

        return $this->number;

    }



    /***

     * Sets the area code

     * @param String $areaCode

     * @return PagSeguroPhone

     */

    public function setAreaCode($areaCode)

    {

        $this->areaCode = $areaCode;

        return $this;

    }



    /***

     * Sets the number

     * @param String $number

     * @return PagSeguroPhone

     */

    public function setNumber($number)

    {

        $this->number = $number;

        return $this;

    }



    /***

     * Sets the number from a formatted string

     *

     * @param $number String formatted string like <code>(099) [9]9999-9999</code>

     * @return $this

     */

    public function setFullPhone($number)

    {

        /** We clean the string that is coming. Can be formatted or not */



        $number = preg_replace("/[^0-9]/", '', $number);

        $number = $number[0] == 0 ? substr($number, 1) : $number;



        $number = str_split($number, 1);

        $areaCode = array_shift($number) . array_shift($number);

        $phone = implode('', $number);



        $this->setAreaCode($areaCode);

        $this->setNumber($phone);



        return $this->areaCode . $this->number;

    }

}

