public static function requestFromUser()
 {
     $userRequest = new FrameworkRequest();
     $userRequest->setHttpRequest($_REQUEST);
     $userResponse = new FrameworkResponse();
     $userResponse->setStatus(FrameworkResponse::$STATUS__CHANGE_TEMPLATE);
     $userResponse->setData($userRequest->getHttpRequestParam(FrameworkRequest::$REQUEST_PARAM__templateId));
     $returnView = "";
     $limit = 20;
     $count = 0;
     while ($userResponse->getStatus() == FrameworkResponse::$STATUS__CHANGE_TEMPLATE) {
         $count++;
         $oldTemplateId = $userResponse->getData();
         $userResponse = self::getTemplateResponse($userResponse->getData(), $userRequest);
         //if( $userResponse->getStatus() == FrameworkResponse::$STATUS__CHANGE_TEMPLATE && $userResponse->getData() == $oldTemplateId ){
         if ($count > $limit) {
             throw new \Exception('My Framework Exeption: template id forever in cycle problem');
         }
     }
     return $userResponse->getHtml();
 }
 protected function chooseActionByModelStatus($userRequest, $model, $actionMap, $viewClass)
 {
     $templatesMap = array($userRequest->getTemplateId(), "*");
     foreach ($templatesMap as $templ) {
         foreach ($actionMap as $action) {
             //@ste hima stugvuma menak cherez model_state bayc piti stugvi naev cherez template_id
             if ($action["templateId"] == $templ && $action["moduleState"] == $model->getCurrentState()) {
                 if ($action["action"] == "changeTemplate") {
                     if (GlobalHelper::isRequestAjax()) {
                         //JS change template
                         $res = new FrameworkResponse();
                         $res->setStatus(FrameworkResponse::$STATUS__READY);
                         $res->changeTemplate($action["actionParam"] . "&" . $userRequest->getHttpRequestParamsStr(array(FrameworkRequest::$REQUEST_PARAM__templateId, FrameworkRequest::$REQUEST_PARAM__ajaxCall)));
                     } else {
                         //PHP change template
                         $res = new FrameworkResponse();
                         $res->setStatus(FrameworkResponse::$STATUS__CHANGE_TEMPLATE);
                         $res->setData($action["actionParam"]);
                     }
                     return $res;
                 }
             }
         }
     }
     return $viewClass::getView($model);
     //call_user_func
 }