ソースを参照

Correciones a peticion por nivel

Isaac Noriega 9 ヶ月 前
コミット
de35cd8f17
共有1 個のファイルを変更した34 個の追加28 個の削除を含む
  1. 34 28
      modules/publico/controllers/CondicionantesController.php

+ 34 - 28
modules/publico/controllers/CondicionantesController.php

@@ -4,51 +4,57 @@ namespace app\modules\publico\controllers;
 
 use common\data\Respuesta;
 use common\rest\JsonController;
-
+use v1\models\Municipio;
+use v1\models\Producto;
 use yii\db\Query;
 
 class CondicionantesController extends JsonController {
 
 	public function actionIndex() {
-		$fin = intval($this->req->get("fin", 0));
-		$tipo = intval($this->req->get("tipo", 0));
-		$estado = intval($this->req->get("estado", 0));
+		$fin = intval($this->req->get("fin", "0"));
+		$tipo = intval($this->req->get("tipo", "0"));
+		$estadoOrigen = intval($this->req->get("origen", 0));
 		$ciudad = intval($this->req->get("ciudad", 0));
+		$producto = intval($this->req->get("producto", 0));
 
-		$condicionante = null;
-
-		if ($fin > 0 || $tipo > 0 || $estado > 0 || $ciudad > 0) {
-			$condicionante = (new Query())
-				->select("{{Condicionante}}.[[id]],{{Condicionante}}.[[titulo]],{{Condicionante}}.[[descripcion]]")
-				->from("Condicionante")
-				->andWhere(["{{Condicionante}}.[[eliminado]]" => null]);
-		}
+		$condicionante = (new Query())
+			->select("{{Condicionante}}.[[id]],{{Condicionante}}.[[titulo]],{{Condicionante}}.[[descripcion]]")
+			->from("Condicionante")
+			->andWhere(["{{Condicionante}}.[[eliminado]]" => null]);
 
-		if ($estado > 0 && $ciudad > 0) {
+		if ($producto > 0) {
+			$producto = Producto::find()
+				->andWhere(["idSagarhpa" => $producto])
+				->one();
 			$condicionante
-				->leftJoin("CondicionanteDestino", "{{CondicionanteDestino}}.[[idCondicionante]] = {{Condicionante}}.[[id]]")
-				->leftJoin("Estado", "{{Estado}}.[[id]] = {{CondicionanteDestino}}.[[idDestino]]")
-				->innerJoin("Municipio", "{{Municipio}}.[[idEstado]] = {{Estado}}.[[id]]")
-				->andWhere(["{{Estado}}.[[idSagarhpa]]" => $estado, "{{Municipio}}.[[clave]]" => $ciudad])
-				->andWhere(["{{Estado}}.[[eliminado]]" => null, "{{Municipio}}.[[eliminado]]" => null]);
+				->andWhere(["OR", ["{{Condicionante}}.[[idProducto]]" => $producto->id], ["{{Condicionante}}.[[idProducto]]" => $producto->idPadre]]);
 		}
+		$municipio = Municipio::find()
+			->andWhere(["clave" => $ciudad])
+			->one();
+
+		/* # En el front no se pueden elegir ciudades*/
+		if ($ciudad > 0) {
 
-		if ($estado > 0 && $ciudad === 0) {
-			$condicionante
-				->leftJoin("CondicionanteDestino", "{{CondicionanteDestino}}.[[idCondicionante]] = {{Condicionante}}.[[id]]")
-				->leftJoin("Estado", "{{Estado}}.[[id]] = {{CondicionanteDestino}}.[[idDestino]]")
-				->andWhere(["{{Estado}}.[[idSagarhpa]]" => $estado])
-				->andWhere(["{{Estado}}.[[eliminado]]" => null]);
-		}
 
-		if ($ciudad > 0 && $estado === 0) {
 			$condicionante
 				->leftJoin("CondicionanteDestino", "{{CondicionanteDestino}}.[[idCondicionante]] = {{Condicionante}}.[[id]]")
 				->leftJoin("Estado", "{{Estado}}.[[id]] = {{CondicionanteDestino}}.[[idDestino]]")
 				->innerJoin("Municipio", "{{Municipio}}.[[idEstado]] = {{Estado}}.[[id]]")
+				->innerJoin("NivelMunicipio", "{{NivelMunicipio}}.[[idMunicipio]] = {{Municipio}}.[[id]]")
+				->andWhere(["{{Municipio}}.[[clave]]" => $ciudad])
+				->andWhere(["{{NivelMunicipio}}.[[idNivel]]" => "{{Condicionante}}.[[idNivel]]"])
 				->andWhere(["{{Municipio}}.[[eliminado]]" => null]);
 		}
 
+		// if ($estadoOrigen > 0 && $ciudad === 0) {
+		// 	$condicionante
+		// 		->leftJoin("CondicionanteOrigen", "{{CondicionanteOrigen}}.[[idCondicionante]] = {{Condicionante}}.[[id]]")
+		// 		->leftJoin("Estado", "{{Estado}}.[[id]] = {{CondicionanteOrigen}}.[[idOrigen]]")
+		// 		->andWhere(["{{Estado}}.[[idSagarhpa]]" => $estadoOrigen])
+		// 		->andWhere(["{{Estado}}.[[eliminado]]" => null]);
+		// }
+
 		if ($fin > 0) {
 			$condicionante
 				->leftJoin("CondicionanteFin", "{{CondicionanteFin}}.[[idCondicionante]] = {{Condicionante}}.[[id]]")
@@ -63,8 +69,8 @@ class CondicionantesController extends JsonController {
 				->andWhere(["{{TipoMovilizacion}}.[[idSagarhpa]]" => $tipo, "{{TipoMovilizacion}}.[[eliminado]]" => null]);
 		}
 
-		if ($condicionante !== null) {
-			$condicionante->all();
+		if ($ciudad > 0) {
+			$condicionante->orderBy(["{{Municipio}}.[[nombre]]" => SORT_DESC]);
 		}
 
 		return (new Respuesta($condicionante));