Ejemplo n.º 1
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     // OJO uso AccesosSearch para que me tome los attributelabels de las propiedades nuevas (antes tenia Accesos)
     $query = AccesosSearch::find()->andWhere(['egr_fecha' => null, 'estado' => 1]);
     $pageSize = isset($_GET['per-page']) ? $_GET['per-page'] : \Yii::$app->params['accesosEgr.defaultPageSize'];
     $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => $pageSize], 'sort' => ['defaultOrder' => ['ing_hora' => SORT_DESC], 'enableMultiSort' => true]]);
     $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(['id' => $this->id, 'id_persona' => $this->id_persona, 'ing_id_vehiculo' => $this->ing_id_vehiculo, 'ing_fecha' => $this->fecSP2EN($this->ing_fecha), 'ing_hora' => $this->ing_hora, 'ing_id_porton' => $this->ing_id_porton, 'ing_id_user' => $this->ing_id_user, 'egr_id_vehiculo' => $this->egr_id_vehiculo, 'egr_fecha' => $this->fecSP2EN($this->egr_fecha), 'egr_hora' => $this->egr_hora, 'egr_id_porton' => $this->egr_id_porton, 'egr_id_user' => $this->egr_id_user, 'ing_id_llave' => $this->ing_id_llave, 'egr_id_llave' => $this->egr_id_llave, 'id_concepto' => $this->id_concepto, 'cant_acomp' => $this->cant_acomp, 'created_by' => $this->created_by, 'created_at' => $this->created_at, 'updated_by' => $this->updated_by, 'updated_at' => $this->updated_at, 'estado' => $this->estado]);
     $query->andFilterWhere(['like', 'id', $this->id])->andFilterWhere(['like', 'motivo', $this->motivo])->andFilterWhere(['like', 'control', $this->control])->andFilterWhere(['like', 'motivo_baja', $this->motivo_baja])->andFilterWhere(['like', 'r_ing_usuario', $this->r_ing_usuario])->andFilterWhere(['like', 'r_egr_usuario', $this->r_egr_usuario])->andFilterWhere(['like', 'r_apellido', $this->r_apellido])->andFilterWhere(['like', 'r_nombre', $this->r_nombre])->andFilterWhere(['like', 'r_nombre2', $this->r_nombre2])->andFilterWhere(['like', 'r_nro_doc', $this->r_nro_doc])->andFilterWhere(['like', 'r_ing_patente', $this->r_ing_patente])->andFilterWhere(['like', 'r_ing_marca', $this->r_ing_marca])->andFilterWhere(['like', 'r_ing_modelo', $this->r_ing_modelo])->andFilterWhere(['like', 'r_ing_color', $this->r_ing_color])->andFilterWhere(['like', 'r_egr_patente', $this->r_egr_patente])->andFilterWhere(['like', 'r_egr_marca', $this->r_egr_marca])->andFilterWhere(['like', 'r_egr_modelo', $this->r_egr_modelo])->andFilterWhere(['like', 'r_egr_color', $this->r_egr_color])->andFilterWhere(['like', 'desc_concepto', $this->desc_concepto]);
     if (isset($params['resetFechas'])) {
         \Yii::$app->session->remove('accesosFecDesdeF');
         \Yii::$app->session->remove('accesosFecHastaF');
         $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('accesosFecDesdeF', $this->fecdesde);
         \Yii::$app->session->set('accesosFecHastaF', $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', 'ing_fecha', $this->fecdesde, $f->format('Y-m-d')]);
     } else {
         $sfd = \Yii::$app->session->get('accesosFecDesdeF') ? \Yii::$app->session->get('accesosFecDesdeF') : '';
         $sfh = \Yii::$app->session->get('accesosFecHastaF') ? \Yii::$app->session->get('accesosFecHastaF') : '';
         // 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('accesosFecHastaF'));
             //$f->add(new \DateInterval('P1D'));
             $query->andFilterWhere(['between', 'ing_fecha', \Yii::$app->session->get('accesosFecDesdeF'), $f->format('Y-m-d')]);
             $this->created_at = '';
         } else {
             $query->andFilterWhere(['like', 'ing_fecha', $this->created_at]);
         }
     }
     //$query->andFilterWhere(['egr_fecha'=>null,'estado'=>1]);
     return $dataProvider;
 }
Ejemplo n.º 2
0
 public function actionEgresoGrupal()
 {
     // chequea que se haya elegido un porton, sino es asi se redirecciona a la eleccion de porton
     if (!\Yii::$app->session->get('porton')) {
         // se setea returnUrl para que funcione el goBack en portones/elegir (parecido a lo que hace login())
         //Yii::$app->user->setReturnUrl(Yii::$app->urlManager->createUrl(['accesos/egreso']));
         return $this->redirect(['portones/elegir', 'backUrl' => 'accesos/egreso-grupal']);
     }
     $searchModel = new AccesosSearch();
     // para mejorar los tiempos se proponen las fechas desde y hasta, el usuario las puede cambiar
     if (!\Yii::$app->session->get('accesosFecDesdeF') || !\Yii::$app->session->get('accesosFecHastaF')) {
         $fecUltAcc = Accesos::find()->max('ing_fecha');
         if (!\Yii::$app->session->get('accesosFecDesdeF')) {
             $d = \Yii::$app->params['filtroConsAccesosDias'];
             $f = date('Y-m-d', strtotime('-' . $d . ' days', strtotime($fecUltAcc)));
             \Yii::$app->session->set('accesosFecDesdeF', $f);
         }
         if (!\Yii::$app->session->get('accesosFecHastaF')) {
             \Yii::$app->session->set('accesosFecHastaF', $fecUltAcc);
         }
     }
     if (isset($_POST['keylist'])) {
         $keys = $_POST['keylist'];
         \Yii::$app->response->format = 'json';
         if (!is_array($keys)) {
             return ['status' => 'error'];
         }
         if (count($keys) == 0) {
             return ['status' => 'error'];
         }
         // Para que coincidan las fechas y horas en todos los registros se utilizan variables auxiliares antes de grabar
         $fecAux = date("Y-m-d");
         $horAux = new Expression('CURRENT_TIMESTAMP');
         $transaction = Yii::$app->db->beginTransaction();
         try {
             foreach ($keys as $m) {
                 $model = Accesos::findOne($m);
                 $model->egr_id_vehiculo = $model->ing_id_vehiculo;
                 $model->egr_fecha = $fecAux;
                 $model->egr_hora = $horAux;
                 $model->egr_id_porton = \Yii::$app->session->get('porton');
                 $model->egr_id_user = \Yii::$app->user->identity->id;
                 $model->save();
             }
             $transaction->commit();
         } catch (\Exception $e) {
             $transaction->rollBack();
             throw $e;
         }
         // try..catch
         return ['status' => 'success'];
     }
     $dataProvider = $searchModel->search(Yii::$app->request->queryParams, false);
     return $this->render('consegrgrupal', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'consulta' => false]);
 }