/** * VISTA CATEGORIA * @param $categoria * @param null $pp * @param null $p * @return mixed */ public function run($categoria, $pp = null, $p = null) { $parametros = Yii::$app->request->post(); $modelCategoria = new Categorias(); $modelArticulo = new Articulos(); $modelProvincia = new Provincias(); if (!empty(Yii::$app->request->get('ca'))) { Yii::$app->request->get('ca'); $categoria = $modelCategoria->obtenerSlug(Yii::$app->request->get('ca')); $provincia = strtolower($modelProvincia->obtenerProvincia(Yii::$app->request->get('ps'))); $estado = strtolower($modelArticulo->obtenerEstado(Yii::$app->request->get('estado'))); $estado = MetodosHelper::terminacionEsPlural($categoria) == true ? $estado . 's' : $estado; $this->controller->redirect(Yii::$app->urlManager->createUrl(['articulo/categoria-provincia', 'provincia' => $provincia, 'categoria' => $categoria, 'estado' => $estado])); } $model = Articulos::obtenerArticulosPorCategoria($categoria); $datos = new ArticulosBuscador(); $datos->cs = $categoria; $dataProvider = $datos->buscador($parametros, $pp, $p, 'categoria'); if (!empty($model)) { $this->controller->view->params['breadcrumbs'][] = $model[0]->categorias->nombre; return $this->controller->render('categoria', ['model' => $model, 'dataProvider' => $dataProvider]); echo '<pre>'; print_r(array('categoria', $categoria, $model[0]->categorias->slug, $model)); } echo '<pre>'; print_r(array('categoria', $categoria, 'articulo no existe')); }
/** * Crea un articulo */ public function actionCrearArticulo($categoria = null) { $categoria = !empty($categoria) ? intval($categoria) : 10; $model = new Articulos(); $model->usuario = 1; $model->nombre = ucfirst('Articulo demo creado desde consola'); $model->estado = 'N'; $model->descripcion = ucfirst('Lorem ipsum dolor sit amet, consectetur adipiscing elit'); $model->categoria = $categoria; $model->precio = '99.99'; $model->transacciones = 'NE'; if ($model->save()) { echo "Articulo creado: " . $model->idarticulo; } }
/** * VISTA PROVINCIA * @param $provincia */ public function run($provincia) { $model = Articulos::obtenerArticulosPorProvincia($provincia); if (!empty($model)) { echo '<pre>'; print_r(array('provincia', $provincia, $model[0]->usuarios->municipios->provincias->slug, count($model), $model)); } echo '<pre>'; print_r(array('provincia', $provincia, 'articulo no existe')); }
public function prepareDataProvider() { $params = \Yii::$app->request->queryParams; //print_r($params);die(); $model = new $this->modelClass(); // I'm using yii\base\Model::getAttributes() here // In a real app I'd rather properly assign // $model->scenario then use $model->safeAttributes() instead $modelAttr = $model->attributes; // this will hold filtering attrs pairs ( 'name' => 'value' ) $search = []; if (!empty($params)) { foreach ($params as $key => $value) { // In case if you don't want to allow wired requests // holding 'objects', 'arrays' or 'resources' if (!is_scalar($key) or !is_scalar($value)) { throw new BadRequestHttpException('Bad Request'); } // if the attr name is not a reserved Keyword like 'q' or 'sort' and // is matching one of models attributes then we need it to filter results if (!in_array(strtolower($key), $this->reservedParams) && ArrayHelper::keyExists($key, $modelAttr, false)) { $search[$key] = $value; } } } //print_r($search);die(); // you may implement and return your 'ActiveDataProvider' instance here. // in my case I prefer using the built in Search Class generated by Gii which is already // performing validation and using 'like' whenever the attr is expecting a 'string' value. $searchByAttr['ProductSearch'] = $search; $lat = isset($params['lat']) ? $params['lat'] : 18.509111; $lon = isset($params['lon']) ? $params['lon'] : -69.8468487; $model = new Articulos(); $searchModel = $model->listadoPorUbicacion($lat, $lon); //$searchModel = Articulos::findOne($search);//new \common\models\ArticulosBuscador(); //return $searchModel->search($searchByAttr); return $searchModel; }
/** * VISTA DENUNCIA * @param $articulo * @return mixed */ public function run($articulo) { $articulo = Articulos::findOne($articulo); $model = new Denuncias(); //enviar denuncia if ($model->load(Yii::$app->request->post())) { $id_usuario = ''; if (!Yii::$app->user->isGuest) { $id_usuario = Yii::$app->user->identity->getId(); } $model->cargarValores($articulo->idarticulo, $articulo->usuario, $id_usuario); if ($model->crearDenuncia()) { return $this->controller->goHome(); } } if (!empty($articulo)) { return $this->controller->render('denunciar', ['model' => $model, 'articulo' => $articulo]); } return $this->controller->goHome(); }
/** * VISTA CATEGORIA PROVINCIA * @param $provincia * @param $categoria * @param $estado * @param null $pp * @param null $p * @return string */ public function run($provincia, $categoria, $estado, $pp = null, $p = null) { $parametros = Yii::$app->request->post(); $model = Articulos::obtenerArticulosPorCategoriaProvincia($categoria, $provincia, $estado); $datos = new ArticulosBuscador(); $datos->cs = $categoria; $datos->ps = $provincia; $datos->ea = $estado; $dataProvider = $datos->buscadorCategoriaProvincia($parametros, $pp, $p, 'categoria-provincia'); if (!empty($model)) { if ($provincia == Provincias::TODA_REP_DOM) { $this->controller->view->params['breadcrumbs'][] = ['label' => 'Toda República Dominicana', 'url' => Url::to(['articulo/provincia', 'provincia' => Provincias::TODA_REP_DOM])]; } else { $this->controller->view->params['breadcrumbs'][] = ['label' => $model[0]->usuarios->municipios->provincias->nombre, 'url' => Url::to(['articulo/provincia', 'provincia' => $model[0]->usuarios->municipios->provincias->slug])]; $this->controller->view->params['breadcrumbs'][] = ['label' => $model[0]->usuarios->municipios->nombre, 'url' => Url::to(['articulo/provincia', 'provincia' => $model[0]->usuarios->municipios->provincias->slug])]; } $this->controller->view->params['breadcrumbs'][] = $model[0]->categorias->nombre; return $this->controller->render('categoria-provincia', ['model' => $model, 'dataProvider' => $dataProvider]); echo '<pre>'; print_r(array('categoria provincia', $provincia, $model[0]->usuarios->municipios->provincias->slug, count($model), $model)); } echo '<pre>'; print_r(array('categoria provincia', $provincia, $categoria, $estado, 'articulo no existe')); }
/** * @return \yii\db\ActiveQuery */ public function getArticulos() { return $this->hasMany(Articulos::className(), ['usuario' => 'idusuario']); }
/** * Finds the Articulos model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param $municipio * @param $articulo * @return array|null|\yii\db\ActiveRecord * @throws NotFoundHttpException */ protected function findModel($municipio, $articulo) { if (($model = Articulos::obtenerDetalleArticuloMunicipio($municipio, $articulo)) !== null) { return $model; } else { throw new NotFoundHttpException('El articulo no existe.'); } }
/** * Obtiene el detalle de un articulo por slug y municipio * @param $municipio * @param $articulo * @return array|null|ActiveRecord */ public static function obtenerArticulosEnProvincia($articulo, $provincia) { $array = MetodosHelper::dividir_texto($articulo, '-', true); $like = ''; foreach ($array as $palabra) { $like .= "lower(articulos.nombre) like '%" . $palabra . "%'\n or articulos.slug like '%" . $palabra . "%' or "; } //busqueda general if ($articulo == self::ANUNCIOS && $provincia == Provincias::TODA_REP_DOM) { return Articulos::find()->all(); } else { if ($articulo == self::ANUNCIOS && $provincia != Provincias::TODA_REP_DOM) { return Articulos::find()->joinWith(['categorias', 'usuarios.municipios.provincias'])->leftJoin('referencias', 'articulos.referencia = referencias.idreferencia')->where('provincias.slug = :provincia', [':provincia' => $provincia])->all(); } } //busqueda especifica if ($provincia == Provincias::TODA_REP_DOM) { return Articulos::find()->leftJoin('referencias', 'articulos.referencia = referencias.idreferencia')->where($like . ' articulos.slug like :articulo or referencias.slug like :articulo', [':articulo' => '%' . $articulo . '%'])->all(); } return Articulos::find()->joinWith(['categorias', 'usuarios.municipios.provincias'])->leftJoin('referencias', 'articulos.referencia = referencias.idreferencia')->where($like . ' articulos.slug like :articulo or referencias.slug like :articulo', [':articulo' => '%' . $articulo . '%'])->andWhere('provincias.slug = :provincia', [':provincia' => $provincia])->all(); // $debug = $articulos->prepare(Yii::$app->db->queryBuilder)->createCommand()->rawSql; // echo '<pre>';print_r([$articulo, $provincia, $debug]);die(); // echo '<pre>';print_r([$articulo, $provincia, count($articulos), $articulos]);die(); }
/** * Listado de motivos por que eliminar el anuncio * @return array */ public function listadoMotivos() { $listado = new Articulos(); return $listado->listadoMotivosEliminacion(); }
/** * @return \yii\db\ActiveQuery */ public function getArticulosTotal() { return $this->hasMany(Articulos::className(), ['categoria' => 'idcategoria'])->count(); }
/** * Busca articulos en base a articulo y categoria * @param array $params * @return ActiveDataProvider */ public function buscadorArticuloProvincia($params, $page_size = 18, $pagina = 0) { $query = Articulos::find(); $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['page' => $pagina, 'pageSize' => $page_size, 'pageParam' => 'p', 'pageSizeParam' => 'pp', 'defaultPageSize' => '18', 'pageSizeLimit' => [1, 50]], 'sort' => ['defaultOrder' => ['fechacreado' => SORT_DESC]]]); $this->load($params); $query->leftJoin('categorias', 'categorias.idcategoria = articulos.categoria'); $query->leftJoin('usuarios', 'usuarios.idusuario = articulos.usuario'); $query->leftJoin('municipios', 'municipios.idmunicipio = usuarios.municipio'); $query->leftJoin('provincias', 'provincias.idprovincia = municipios.provincia'); $query->leftJoin('referencias', 'articulos.referencia = referencias.idreferencia'); 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; } //busqueda especifica if (strcmp($this->na, self::ANUNCIOS) !== 0) { $array = MetodosHelper::dividir_texto($this->na, '-', true); foreach ($array as $palabra) { $query->orWhere(['like', 'articulos.nombre', $palabra]); $query->orWhere(['like', 'articulos.slug', $palabra]); $query->orWhere(['like', 'referencias.slug', $palabra]); $buscador = new Buscador(); $ids = $buscador->obtenerIdsResultadosIndexados($palabra); $query->orWhere(['in', 'articulos.referencia', $ids]); } } if (!empty($this->ps) && $this->ps != Provincias::TODA_REP_DOM) { $query->andwhere('provincias.slug = :provincia', [':provincia' => $this->ps]); } return $dataProvider; }
/** * @return \yii\db\ActiveQuery */ public function getArticulo0() { return $this->hasOne(Articulos::className(), ['idarticulo' => 'articulo']); }
/** * Finds the Articulos model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return Articulos the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModelArticulo($id) { if (($model = Articulos::findOne($id)) !== null) { return $model; } }
/** * Crear articulo nuevo * @return bool */ public function crear() { $model = new Articulos(); $idUsuario = Yii::$app->user->getId(); if ($this->validate()) { $model->usuario = $idUsuario; $model->nombre = ucfirst($this->nombre); $model->estado = $this->estado; $model->descripcion = ucfirst($this->descripcion); $model->categoria = $this->categoria; $model->precio = $this->precio; $model->transacciones = implode(',', $this->transacciones); //$archivo = new Archivos(); if ($model->save()) { if (!empty($this->imagenes)) { foreach ($this->imagenes as $key => $file) { $file = (object) $file; // the path to save file, you can set an uploadPath $nombre = ImagenHelper::obtenerNombreArchivo(['usuario' => $idUsuario, 'articulo' => $model->idarticulo, 'imagen' => $file->name]); $archivo = new Archivos(); $archivo->usuario = $idUsuario; $archivo->articulo = $model->idarticulo; $archivo->nombre = $nombre; $archivo->tipo = $file->type; $archivo->peso = $file->size; $archivo->fechacreado = MetodosHelper::fechaHoy(); //guardamos la imagen principal $archivo->principal = count($this->imagenes) == 1 || $key == $this->principal ? 1 : 0; if ($archivo->save()) { file_put_contents(ImagenHelper::rutaImagenesArticulos() . $nombre, base64_decode($file->base64)); ImagenHelper::guardarImagenSize($nombre, 'articulos'); } } } return true; } else { return false; } } return false; }
public function actionDemo($id) { return Articulos::findOne($id); }
/** * @return \yii\db\ActiveQuery */ public function getTotalArticulos() { return $this->hasMany(Articulos::className(), ['referencia' => 'idreferencia'])->count(); }
/** * Finds the Usuarios model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return Categorias the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = Articulos::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }