/** * Setea las propiedades del modelo y lo devuelve. * @param Models\Movie $movie instancia de la clase Models\Movie * @param array $movieData array con las propiedades a setear. * @return Models\Movie con las propiedades seteadas. */ private function setMovieData($movie, $movieData) { $movie->setTitle($movieData["title"]); $movie->setDescription($movieData["description"]); $movie->setDirector($movieData["director"]); $movie->setDuration($movieData["duration"]); $movie->setReleaseDate($movieData["releaseDate"]); $movie->setActors($movieData["actors"]); $movie->setStars($movieData["stars"]); $movie->setWritter($movieData["writter"]); return $movie; }
/** * Devuelve un array con la colección de películas y la cantidad de películas. * Permite realizar filtros: * Si la propiedad es de tipo string por like '%<valor>%'. Case insensitive. * Si la propiedad es de tipo int por = <valor> * @param string $value valor por el cual filtrar * @param string $field campo por el cual filtrar. * @param int $offset nro de registro a partir del cual se devuelve * @param int $limit cantidad de registros a devolver. * @return array con la colección de películas y la cantidad de películas. */ public function findMovieCollection($value = '%', $field = 'title', $offset = 0, $limit = 10) { if (empty($value) || empty($field)) { $value = '%'; $field = 'title'; } if ($offset < 0) { $offset = 0; } if ($limit < 0) { $limit = 0; } $qb = $this->entityManager->createQueryBuilder(); $qb->select('m')->from($this->type, 'm')->orderBy('m.' . $field, 'ASC')->setFirstResult($offset)->setMaxResults($limit); if (in_array($field, Movie::queryableStringProperties())) { $qb->add('where', $qb->expr()->like($qb->expr()->upper('m.' . $field), '?1'))->setParameter(1, '%' . strtoupper($value) . '%'); } else { $qb->add('where', $qb->expr()->eq('m.' . $field, '?1'))->setParameter(1, $value); } $query = $qb->getQuery(); $paginator = new Paginator($query); $response["totalCount"] = count($paginator); $response["movies"] = $this->collectionToArray($query->getResult()); return $response; }
/** * @param text $statusName */ public function getList($statusName) { if (!$this->application->request->isGet()) { throw new Exception('Method not allowed', 405); } $statuses = Status::find(); $statusesArr = $statuses->toArray('name'); if (!in_array($statusName, $statusesArr)) { throw new Exception('Invalid parameter', 405); } $status = Status::findFirst(array('conditions' => 'name = :name:', 'bind' => array('name' => $statusName))); $movies = Movie::find(array('conditions' => 'status_id = :id:', 'bind' => array('id' => $status->getId()), 'order' => 'name')); if (!$movies) { throw new Exception('Query not executed', 500); } if ($movies->count() == 0) { return array('code' => 204, 'content' => 'No matching Movie instance found'); } return array('code' => 200, 'content' => $movies->toArray()); }