Exemple #1
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Libro::find()->joinWith('userCreatedBy');
     $pageSize = isset($_GET['per-page']) ? $_GET['per-page'] : \Yii::$app->params['libro.defaultPageSize'];
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => $pageSize], 'sort' => ['defaultOrder' => ['created_at' => SORT_DESC], 'enableMultiSort' => true]]);
     // Agregado a mano, para que incluya el ordenamiento por descCliente
     $dataProvider->sort->attributes['descUsuario'] = ['asc' => ['user.username' => SORT_ASC], 'desc' => ['user.username' => SORT_DESC]];
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['libro.id' => $this->id, 'idporton' => $this->idporton]);
     $query->andFilterWhere(['like', 'texto', $this->texto])->andFilterWhere(['like', 'user.username', $this->descUsuario]);
     if (isset($params['resetFechas'])) {
         \Yii::$app->session->remove('libroFecDesde');
         \Yii::$app->session->remove('libroFecHasta');
         $this->fecdesde = null;
         $this->fechasta = null;
         unset($params['resetFechas']);
     }
     if (!empty($this->fecdesde) && !empty($this->fechasta)) {
         // cada vez que se envia el form con el rango de fechas se guardan las fechas en sesion
         \Yii::$app->session->set('libroFecDesde', $this->fecdesde);
         \Yii::$app->session->set('libroFecHasta', $this->fechasta);
         // para el between entre datetimes se debe agregar un dia mas a la fecha hasta
         $f = new \DateTime($this->fechasta);
         $f->add(new \DateInterval('P1D'));
         $query->andFilterWhere(['between', 'libro.created_at', $this->fecdesde, $f->format('Y-m-d')]);
         //unset($this->fecdesde);
     } else {
         $sfd = \Yii::$app->session->get('libroFecDesde') ? \Yii::$app->session->get('libroFecDesde') : '';
         $sfh = \Yii::$app->session->get('libroFecHasta') ? \Yii::$app->session->get('libroFecHasta') : '';
         // si todavia están en sesion las variables del rango de fechas se hace el between y se elimina created_at
         if ($sfd && $sfh) {
             // para el between entre datetimes se debe agregar un dia mas a la fecha hasta
             $f = new \DateTime(\Yii::$app->session->get('libroFecHasta'));
             $f->add(new \DateInterval('P1D'));
             $query->andFilterWhere(['between', 'libro.created_at', \Yii::$app->session->get('libroFecDesde'), $f->format('Y-m-d')]);
             $this->created_at = '';
         } else {
             $query->andFilterWhere(['like', 'libro.created_at', $this->fecSP2EN($this->created_at)]);
         }
     }
     return $dataProvider;
 }
 /**
  * Finds the Libro model based on its primary key value.
  * If the model is not found, a 404 HTTP exception will be thrown.
  * @param integer $id
  * @return Libro the loaded model
  * @throws NotFoundHttpException if the model cannot be found
  */
 protected function findModel($id)
 {
     if (($model = Libro::findOne($id)) !== null) {
         return $model;
     } else {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
 }