/**
  * Funcion: getFunction   
  * Descripcion: Dirige la peticion a la funcion correspondiente
  * @param api $api
  * @return $salida
  * @throws Exception
  * @author Rodrigo Contreras B. <*****@*****.**>
  * @version 2015-12-07 - Version Inicial
  * @version 2015-12-29 - Simplificacion metodo de llamados
  * @since 2015-12-07
  */
 function getFunction(api $api)
 {
     // Variables Generales
     $request = $this->setRequest();
     $withRequest = 0;
     // Librerias
     $controller = $api->getController();
     $controllerBusiness = $api->getController() . 'Business';
     // Crea objeto si existe la clase
     if (!class_exists($controllerBusiness)) {
         $api->setTipo("Error");
         $api->setMensaje("No existe el Controlador Asociado");
         $salida = $api;
     } else {
         // Creacion del Objeto Business correspondiente
         $objBusiness = new $controllerBusiness();
         // Creacion del objeto controlador
         if (file_exists('../model/' . $controller . '.php')) {
             $obj = new $controller();
         }
         // Verificacion de existencia business
         if (file_exists('../business/' . $controller . 'Business.php')) {
             // Identificacion de funcion requestToObjeto
             $req = 'requestTo' . $controller;
             // Verificacion de existencia de metodo dentro de clase
             if (method_exists($objBusiness, $req)) {
                 $obj = $objBusiness->{$req}($request);
                 $withRequest = 1;
             }
         }
         // Identificacion Metodo
         $metodo = $api->getAccion();
         if (!method_exists($objBusiness, $metodo)) {
             $api->setTipo("Error");
             $api->setMensaje("No existe el Metodo Asociado");
             $salida = $api;
         } else {
             // Llamado a metodo para salida de datos
             if ($withRequest == 1) {
                 $salida = $objBusiness->{$metodo}($obj);
             } else {
                 $salida = $objBusiness->{$metodo}();
             }
         }
     }
     // Retorno
     return $salida;
 }