public function __construct(array $nested_params, array $external_params)
 {
     parent::__construct($nested_params, $external_params);
     $this->document = new RESTApiVideoDocument($this, $this->external_params);
     $this->document->controllers->add(new RESTApiVideoLink($this->nested_params));
     $this->document->controllers->add(new RESTApiVideoNotEnded($this->nested_params));
     $this->fields_map = array_fill_keys(array('id', "name", "description", "director", "actors", "year", "censored", "added", "genres", "genres_ids", "cover", "hd"), true);
     $this->manager = new \Video();
     if (!empty($this->nested_params['users.id'])) {
         $user_id = $this->nested_params['users.id'];
         $user = \Stb::getById($user_id);
         if (empty($user)) {
             throw new RESTNotFound("User nor found");
         }
         $user_obj = \User::getInstance();
         $this->favorites = $user_obj->getVideoFavorites();
         $this->not_ended = $user_obj->getNotEndedVideo();
     }
     if (!empty($this->nested_params['video.category']) && empty($this->nested_params['video.genre'])) {
         $category_id = $this->nested_params['video.category'];
         $genre = new \VideoGenre();
         $genres = $genre->getByCategoryId($category_id, true);
         if (empty($genres)) {
             throw new RESTNotFound("Genres list is empty");
         }
         $this->genres_ids = array_map(function ($genre) {
             return (int) $genre['_id'];
         }, $genres);
     } else {
         if (!empty($this->nested_params['video.genre']) && empty($this->nested_params['video.category'])) {
             $genre = new \VideoGenre();
             $genres = $genre->getById($this->nested_params['video.genre'], true);
             if (empty($genres)) {
                 throw new RESTNotFound("Genres list is empty");
             }
             $genres = array_map(function ($genre) {
                 return (int) $genre['id'];
             }, $genres);
             $this->genres_ids = $genres;
         } else {
             if (!empty($this->nested_params['video.genre']) && !empty($this->nested_params['video.category'])) {
                 $genre = new \VideoGenre();
                 $genres = $genre->getByIdAndCategory($this->nested_params['video.genre'], $this->nested_params['video.category'], true);
                 if (empty($genres)) {
                     throw new RESTNotFound("Genres list is empty");
                 }
                 $this->genres_ids = array($genres['id']);
             }
         }
     }
 }