<?php

/**
  * Keeps track of the people in our Contact list.
  *
  * Starts with a standard Contact list and can add
  * new people to our list or change existing Contacts.
  * This class is for example purposes only, just to
  * show how to create a webservice
  */
class ContactManager{

	/**
	 * Gets the current Contact list.
	 * @return Contact[]
	 * @soapmethod
	 */
	public function	getContacts() {
		$Contact = new Contact();
		$Contact->address = new Address();
		$Contact->address->city ="sesamcity";
		$Contact->address->street ="sesamstreet";
		$Contact->email = "me@you.com";
		$Contact->id = 1;
		$Contact->name ="me";

		$ret[] = $Contact;
		//debugObject("Contacten: ",$ret);
		return $ret;
	}

	/**
	  * Gets the Contact with the given id.
	  * @param int $id The id
	  * @return Contact
	  * @soapmethod
	  */
	public function	getContact($id) {
		//get Contact from db
		//might wanna throw an exception when it does not exists
		throw new Exception("Contact '$id' not found");
	}
	/**
	  * Generates an new, empty Contact template
	  * @return Contact
	  * @soapmethod
	  */
	public function newContact() {
		return new Contact();
	}

	/**
	  * Saves a given Contact
	  * @param Contact $Contact
	  * @return boolean
	  * @soapmethod
	  */
	public function saveContact(Contact $Contact) {
		//error_log(var_export($Contact,true));
		//$Contact->save();
		return true;
	}

	/**
	 * @return mixed
	 * @soapmethod
	 */
	public function getList()
	{
		return array(array(1,2), array("12", 1.2));
	}

	/**
	 * @return array
	 * @soapmethod
	 */
	public function getEmptyArray()
	{
		return array();
	}

}


/**
  * The Contact details for a person
  *
  * Stores the person's name, address and e-mail
  * This class is for example purposes only, just to
  * show how to create a webservice
  *
  */
class Contact{

	/**
	 * @var int $id
	 * @soapproperty
	 */
	public $id;

	/**
	* @var string $name
	 * @soapproperty
	*/
	public $name;

	/** @var Address $address
	 * @soapproperty
	*/
	public $address;

	/** @var string $email
	 * @soapproperty
	*/
	public $email;

	/**
	  * saves a Contact
	  *
	  * @return void
	  */
	public function save() {
		//save Contact 2 db
	}
}

/**
  * Stores an address
  *
  * An address consists of a street, number, zipcode and city.
  * This class is for example purposes only, just to
  * show how to create a webservice
  *
  */
class Address{
	/** @var string $street
	 * @soapproperty
	*/
	public $street;

	/** @var string $nr
	 * @soapproperty
	*/
	public $nr;

	/** @var string $zipcode
	 * @soapproperty
	*/
	public $zipcode;

	/** @var string $city
	 * @soapproperty
	*/
	public $city;
}