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 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; } }