<?php

Prado::using('Example.Person');

class crud2 extends TPage
{
	private function sqlmap()
	{
		return $this->Application->Modules['person-sample']->Client;
	}

	private function loadData()
	{
		$this->personList->DataSource =  $this->sqlmap()->queryForList('SelectAll');
		$this->personList->dataBind();
	}

	public function onLoad($param)
	{
		if(!$this->IsPostBack)
			$this->loadData();
	}

	protected function editPerson($sender,$param)
	{
		$this->personList->EditItemIndex=$param->Item->ItemIndex;
		$this->loadData();
	}

	protected function deletePerson($sender, $param)
	{
		$id = $this->getKey($sender, $param);

		$this->sqlmap()->update("Delete", $id);
		$this->loadData();
	}

	protected function updatePerson($sender, $param)
	{
		$person = new Person();
		$person->FirstName = $this->getText($param, 0);
		$person->LastName = $this->getText($param, 1);
		$person->HeightInMeters = $this->getText($param, 2);
		$person->WeightInKilograms = $this->getText($param, 3);
		$person->ID = $this->getKey($sender, $param);

		$this->sqlmap()->update("Update", $person);
		$this->refreshList($sender, $param);
	}

	protected function addNewPerson($sender, $param)
	{
		$person = new Person;
		$person->FirstName = "-- New Person --";
		$this->sqlmap()->insert("Insert", $person);

		$this->loadData();;
	}

	protected function refreshList($sender, $param)
	{
		$this->personList->EditItemIndex=-1;
		$this->loadData();
	}

	private function getText($param, $index)
	{
		$item = $param->Item;
		return $item->Cells[$index]->Controls[0]->Text;
	}

	private function getKey($sender, $param)
	{
		return $sender->DataKeys[$param->Item->DataSourceIndex];
	}
}