<?php
class ProductsController extends AppController {

	var $name = 'Products';
	var $components = array('RequestHandler');
	var $helpers = array('Html', 'Form', 'Ajax', 'Number');

	function index() {
	/*$this->Product->recursive = 0;
		$this->set('products', $this->paginate());
		 *
	 */
		$this->set('principles', $this->Product->Principle->find('all', array('order' => 'Principle.name ASC')));

	}

	function view_principle($id = null) {
		if(!$id) {
			$this->Session->setFlash(__('Invalid Principle ID', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->set('products', $this->Product->find('all', array('conditions'=>array('Product.principle_id'=>$id),'order'=>'Product.title ASC')));
		$this->set('principle', $this->Product->Principle->findById($id));
	}

	function view($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Invalid Product.', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->set('product', $this->Product->read(null, $id));

		//$this->set('product', $this->Product->find('first', array('conditions' => array('Product.id'=>$id), 'recursive' => 1)));

		$this->set('options', $this->Product->ProductOptionsCategory->find('all', array('conditions' => array('ProductOptionsCategory.product_id'=>$id), 'order'=>'ProductOptionsCategory.location ASC')));

		$this->set('files', $this->Product->ProductAttachment->findAllByProductId($id));
		$this->set('number_of_files', $this->Product->ProductAttachment->find('count', array('conditions' => array('ProductAttachment.product_id'=>$id))));
	}

	function add() {
		if (!empty($this->data)) {
			$this->Product->create();

			if ($this->Product->save($this->data)) {
				$this->Session->setFlash(__('The Product has been saved', true));
				$id = $this->Product->id;
				$this->redirect(array('action'=>'view/'.$id));
			} else {
				$this->Session->setFlash(__('The Product could not be saved. Please, try again.', true));
			}
		}
		$principles = $this->Product->Principle->find('list');

		$this->set(compact('principles', 'product_categories'));
	}

	function cloneProduct($id) {

		if(!$id) {
			$this->Session->setFlash('Invalid Product ID');
			$this->redirect(array('action'=>'index'));
		}
		else {
			$product = $this->Product->find('first',array('conditions'=>array('Product.id'=>$id)));
		}



		if (!empty($this->data)) {
			$this->Product->create();

			if ($this->Product->save($this->data)) {
				$this->Session->setFlash(__('The Product has been saved', true));
				$id = $this->Product->id;
				$this->redirect(array('action'=>'view/'.$id));
			} else {
				$this->Session->setFlash(__('The Product could not be saved. Please, try again.', true));
			}
		}

		$this->data['Product']['principle_id'] = $product['Product']['principle_id'];
		$this->data['Product']['title'] = $product['Product']['title'];
		$this->data['Product']['description'] = $product['Product']['description'];
		$this->data['Product']['item_code'] = $product['Product']['item_code'];
		$this->data['Product']['notes'] = $product['Product']['notes'];
		$this->data['Product']['item_description'] = $product['Product']['item_description'];


		$principles = $this->Product->Principle->find('list');
		$this->set(compact('principles', 'product_categories'));
	}

	function add_costing() {

	}

	function edit($id = null) {
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Invalid Product', true));
			$this->redirect(array('action'=>'index'));
		}
		if (!empty($this->data)) {
			if ($this->Product->save($this->data)) {
				$this->Session->setFlash(__('The Product has been saved', true));
				$id = $this->Product->id;
				$this->redirect(array('action'=>'view/'.$id));
			} else {
				$this->Session->setFlash(__('The Product could not be saved. Please, try again.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->Product->read(null, $id);
			$this->set('description', $this->data['Product']['description']);
		}
		$principles = $this->Product->Principle->find('list');
		$this->set(compact('principles'));
	}

	function delete($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Invalid id for Product', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->Product->del($id)) {
			$this->Session->setFlash(__('Product deleted', true));
			$this->redirect(array('action'=>'index'));
		}
	}


	/**
	 *
	 * Outputs a select box with the Products that belong to a particular principal. Perhaps will change to an autocomplete in the future.
	 */
	function getPrincipleProducts() {


		if(empty($this->data)) {
			return;
		}

		else {
			$this->set('products', $this->Product->find('list', array('conditions' =>
				array('Product.principle_id'=> $this->data['LineItem']['principle_id']))));

		}
	}


	function getProductOptions() {
		if(empty($this->data)) {
			return;
		}

		else {

			$this->set('options', $this->Product->ProductOptionsCategory->find('all', array('conditions' => array('ProductOptionsCategory.product_id'=>$this->data['LineItem']['product_id']), 'order'=>'ProductOptionsCategory.location ASC')));


		}



	}



	//Finish this maybe. This project has wasted years of my life.
	function autocomplete() {

		$query = strtolower($_GET["term"]);

		if($query == null) {
			return;
		}

		$products = $this->Product->find('list', array(
			'conditions' => array(
				'Product.title LIKE' => '%'.$query.'%'
			),
			'fields' => array('Product.title'),
				'order' => array('Product.title ASC')
		));

		$products_json = json_encode($products);

		$this->set('products_json', $products_json);

		$this->layout = 'ajax';

	}

}
?>
