/**
  * Method that prepares the Business Logic
  * checking if all checks passes
  *
  * Return if passed or not.
  *
  * @return bool
  */
 public function prepare()
 {
     if (($invalid = RaiseManager::getHandler('request')->checkInvalidParameters()) !== true) {
         $this->setMessage('UnexistentArgument', ['argument' => $invalid]);
     }
     return $invalid === true;
 }
 /**
  * Set RAISe Requested Resource
  * Resource Model by the HTTP Request Requested Uri
  *
  * @note A string manipulation is applied since php's
  * function strstr will return null if the desired match
  * isn't present.
  */
 public function setResource()
 {
     /* get resource string from requested url */
     $resourceString = strtolower(str_replace('/', '', $this->getRequest()->getRequestUri()));
     /* stores resource model applying the string manipulation */
     $this->requestedResource = RaiseManager::getFactory('resource')->get(strpos($resourceString, '?') !== false ? strstr($resourceString, '?', true) : $resourceString);
 }
 /**
  * Execute's MySQL Query with the Instruction Factory
  * Generated Statement
  */
 public function execute()
 {
     $this->statement = DatabaseManager::getInstance()->query(RaiseManager::getFactory('instruction')->getInstruction(), RaiseManager::getFactory('instruction')->getStatement());
     switch (RaiseManager::getHandler('request')->getRequest()->getMethod()) {
         case 'GET':
             $this->response = $this->statement->fetchAll(PDO::FETCH_OBJ);
             break;
         case 'POST':
             $this->lastInsertId = DatabaseManager::getInstance()->getLastInsertId();
             break;
     }
 }
 /**
  * Executes the Instruction if does'nt has been executed.
  * And Return it.
  *
  * @return Insert|Select|Update
  */
 private function execute()
 {
     if ($this->instruction === null) {
         $this->type = RaiseManager::getHandler('request')->getRequest()->getMethod();
         $this->query = RaiseManager::getHandler('request')->getRequest()->query;
         $this->resource = RaiseManager::getHandler('request')->getResource();
         $this->instruction = $this->setCriteria();
     }
     return $this->instruction;
 }
 /**
  * Get the HTTP Request Interface
  *
  * @return Request
  */
 public function getRequest()
 {
     return RaiseManager::getHandler('request')->getRequest();
 }
 /**
  * Used to set the HTTP Response Content
  * as an RAISe Message (object)
  *
  * @param string $message Message Name
  * @param array $templateEngine
  */
 public function setMessage($message, array $templateEngine = array())
 {
     if (!$this->messageDefined) {
         $this->getResponse()->setData(RaiseManager::getFactory('message')->get($message, $templateEngine)->__getResult());
         $this->messageDefined = true;
     }
 }