<?php /* *GENERA EL PRIMER NIVEL DE UN ARBOL DE CARGOS POR SERVICIO (ZONASLEVEL1) */ //Obtiene el nodo Raíz $raiz = Zonaslevel1::model()->with('puntoventa')->findByPk(array('EventoId' => $model->EventoId, 'FuncionesId' => $model->FuncionesId, 'ZonasId' => $model->ZonasId, 'PuntosventaId' => Yii::app()->params['pvRaiz'])); //Obtiene ta taquilla del evento $pve = Zonaslevel1::model()->with('puntoventa')->findByPk(array('EventoId' => $model->EventoId, 'FuncionesId' => $model->FuncionesId, 'ZonasId' => $model->ZonasId, 'PuntosventaId' => $model->evento->PuntosventaId)); if (is_object($pve)) { // Si el nodo raiz esta asignado $this->renderPartial('_nodoCargo', array('model' => $pve)); } if (is_object($raiz)) { // Si el nodo raiz esta asignado $this->renderPartial('_nodoCargo', array('model' => $raiz)); } echo TbHtml::link(' Reparar árbol de cargo por servicio', array('generarArbolCargos'), array('class' => 'btn btn-small fa fa-sitemap btn-generar-arbol', 'id' => "btn-generarArbol-" . $model->ZonasId, 'data-zid' => $model->ZonasId));
static function removerAsignacion($EventoId, $FuncionesId) { //Elimina todas las zonas, subzonas, filas, lugares de la funcion que se le indique $identificador = compact('EventoId', 'FuncionesId'); $transaction = Yii::app()->db->beginTransaction(); Subzona::model()->deleteAllByAttributes($identificador); Filas::model()->deleteAllByAttributes($identificador); Lugares::model()->deleteAllByAttributes($identificador); Zonaslevel1::model()->deleteAllByAttributes($identificador); Zonastipo::model()->deleteAllByAttributes($identificador); Zonastipolevel1::model()->deleteAllByAttributes($identificador); $mapagrande = ConfigurlFuncionesMapaGrande::model()->findByAttributes(array('EventoId' => $EventoId, 'FuncionId' => $FuncionesId)); if (is_object($mapagrande)) { // Si tiene un mapa grande se eliminan primero sus coordenadas para que no de restriccion de llaves foraneas ConfigurlMapaGrandeCoordenadas::model()->deleteAllByAttributes(array('configurl_funcion_mapa_grande_id' => $mapagrande->id)); $mapagrande->delete(); } if (Zonas::model()->deleteAllByAttributes($identificador)) { $funcion = Funciones::model()->findByPk($identificador); $funcion->ForoId = 0; $funcion->ForoMapIntId = 0; $transaction->commit(); } else { $transaction->rollback(); } return Zonas::model()->countByAttributes($identificador) == 0; }
public function actionCambiarCargo($EventoId, $FuncionesId, $ZonasId, $PuntosventaId, $valor) { $zl1 = Zonaslevel1::model()->with(array('puntoventa' => array('with' => 'hijos')))->findByPk(compact('EventoId', 'FuncionesId', 'ZonasId', 'PuntosventaId')); if (!is_null($zl1)) { #"Si existe " $evento = Evento::model()->findByPk($EventoId); $zl1['ZonasFacCarSer'] = $valor; $zl1->update('ZonasFacCarSer'); if ($zl1->puntoventa->hijos) { $criteria = new CDbCriteria(); $criteria->compare('EventoId', $EventoId); $criteria->compare('FuncionesId', $FuncionesId); $criteria->compare('ZonasId', $ZonasId); $criteria->compare("zonaslevel1.PuntosventaId", "<>" . $evento->PuntosventaId); $criteria->join = " INNER JOIN puntosventa as t2 on zonaslevel1.PuntosventaId=t2.PuntosventaId \n\t\t\t\t\t\t\t\t\tand t2.PuntosventaSuperId=:actual"; $criteria->params['actual'] = $PuntosventaId; // $criteria->addInCondition("PuntosventaId",$padres); $actualizados = Zonaslevel1::model()->updateAll(array('ZonasFacCarSer' => $valor), $criteria); $hijosPadres = $zl1->puntoventa->getChildrens(' and tipoid=0'); foreach ($hijosPadres as $hijoPadre) { if ($hijoPadre->PuntosventaSuperId == $PuntosventaId) { $this->actionCambiarCargo($EventoId, $FuncionesId, $ZonasId, $hijoPadre->PuntosventaId, $valor); } } } } else { //echo "No existe la zonalevel1"; return 0; } }
public function beforeDelete() { $identificador = array('EventoId' => $this->EventoId, 'FuncionesId' => $this->FuncionesId, 'ZonasId' => $this->ZonasId); $ventas = Ventaslevel1::model()->countByAttributes(array('EventoId' => $this->EventoId)); if ($ventas == 0) { //Si no hay ventas Subzona::model()->deleteAllByAttributes($identificador); Filas::model()->deleteAllByAttributes($identificador); Lugares::model()->deleteAllByAttributes($identificador); Zonaslevel1::model()->deleteAllByAttributes($identificador); Zonastipo::model()->deleteAllByAttributes($identificador); Zonastipolevel1::model()->deleteAllByAttributes($identificador); //$mapagrande=ConfigurlFuncionesMapaGrande::model()->findByAttributes(array( //'EventoId'=>$this->EventoId,'FuncionId'=>$this->FuncionesId)); //if (is_object($mapagrande)) { //// Si tiene un mapa grande se eliminan primero sus coordenadas para que no de restriccion de llaves foraneas //ConfigurlMapaGrandeCoordenadas::model()->deleteAllByAttributes(array( //'configurl_funcion_mapa_grande_id'=>$mapagrande->id)); //$mapagrande->delete(); //} return parent::beforeDelete(); } else { // Si hay ventas, no elimina //error_log(sprintf("v:$ventas EID:%d\n",$this->EventoId),3,'/tmp/errores.php'); return false; } }