/** * Creates a new RutaDiaria model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate($idRuta) { $model = new RutaDiaria(); $ruta = Ruta::find()->where(['id' => $idRuta])->one(); $ordenComercios = OrdenComercio::find()->where(['id_ruta' => $idRuta])->all(); $model->id_usuario = $ruta->id_usuario; $model->fecha = date("Y-m-d"); if (!$this->existeRutaDiariaPorUsuarioYFecha($model->id_usuario, $model->fecha)) { $idRutaDiaria = $model->save(); if ($idRutaDiaria !== false) { $orden = 1; foreach ($ordenComercios as $ordenComercio) { $rutaDiariaComercio = new RutaDiariaComercio(); $rutaDiariaComercio->id_comercio = $ordenComercio->id_comercio; $rutaDiariaComercio->link("idRutaDiaria", $model); $rutaDiariaComercio->orden = $orden; $rutaDiariaComercio->save(); $orden++; } } Yii::$app->getSession()->setFlash('success', Yii::t('core', 'Daily Route has been created')); } else { Yii::$app->getSession()->setFlash('danger', Yii::t('core', 'There is already an instance of this route for today')); } return $this->redirect(['ruta/view', 'id' => $idRuta]); }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = OrdenComercio::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); $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, 'orden' => $this->orden, 'id_ruta' => $this->id_ruta, 'id_comercio' => $this->id_comercio]); return $dataProvider; }
public function comerciosPorDiaSinRutasActivas($dia) { //ruta: las rutas creadas //orden_comercio //comercio //Devuelve todas las rutas activas //$query = new Query(); $query = Ruta::find()->select('id')->where(['esActivo' => "1"]); //Devuelve los comercios en rutas activas //$query2 = new Query(); $query2 = OrdenComercio::find()->select('id_comercio')->where(['in', 'id_ruta', $query]); //Devuelve los comercios sin rutas activas //$comercios = []; $comercios = Comercio::find()->where(['not in', 'id', $query2])->andWhere(['dia' => $dia])->andWhere(['esActivo' => '1'])->all(); return $comercios; }