private void btn_sposta_Click(object sender, System.EventArgs e) { DocsPAWA.DocsPaWR.OrgUO uoDaSpostare = new DocsPAWA.DocsPaWR.OrgUO(); uoDaSpostare.IDCorrGlobale = this.hd_idCorrGlobUODaSpostare.Value; uoDaSpostare.Codice = this.txt_codice.Text; uoDaSpostare.CodiceRubrica = this.txt_codice.Text; uoDaSpostare.Descrizione = this.txt_descrizione.Text; uoDaSpostare.IDAmministrazione = this.hd_idAmm.Value; uoDaSpostare.Livello = this.hd_livelloUO_DaSpostare.Value; DocsPAWA.DocsPaWR.OrgUO uoPadre = new DocsPAWA.DocsPaWR.OrgUO(); uoPadre.IDCorrGlobale = this.hd_idCorrGlobDest.Value; uoPadre.Codice = this.txt_ricCod.Text; uoPadre.CodiceRubrica = this.txt_ricCod.Text; uoPadre.Descrizione = this.txt_ricDesc.Text; uoPadre.IDAmministrazione = this.hd_idAmm.Value; Manager.OrganigrammaManager manager = new Amministrazione.Manager.OrganigrammaManager(); DocsPAWA.DocsPaWR.EsitoOperazione esito = new DocsPAWA.DocsPaWR.EsitoOperazione(); //Se la Uo si sta spostando in una dei suio figli si deve bloccare l'operazione //e avvisare l'utente ArrayList uoFiglie = cercaInUoFiglie(uoDaSpostare); /*verifico se la systemId della UoPadre * (intesa come il nodo sotto il quale si vuole spostare la Uo 'uoDaSpostare') * è presente tra i figli della 'uoDaSpostare', in tal caso blocchiamo tale operazione * Attualmente non è gestito il caso di sposare un NODO ('uoPadre') sotto a un suo FIGLIO*/ if (uoPadre.IDCorrGlobale != uoDaSpostare.IDCorrGlobale) { if (!uoFiglie.Contains(uoPadre.IDCorrGlobale)) { manager.SpostaUO(uoDaSpostare, uoPadre); esito = manager.getEsitoOperazione(); if (esito.Codice.Equals(0)) { this.executeJS("<SCRIPT>alert('Operazione di spostamento UO eseguita correttamente.'); window.returnValue = 'Y'; self.close();</SCRIPT>"); } else { this.executeJS("<SCRIPT>alert('Attenzione, " + esito.Descrizione.Replace("'", "\\'") + "');</SCRIPT>"); } } else { //caso in cui si tenta si spostare UN PADRE SOTTO A UN FIGLIO this.executeJS("<SCRIPT>alert('Attenzione: non è possibile spostare un nodo padre sotto a un nodo figlio.'); window.returnValue = 'Y'; self.close();</SCRIPT>"); } } else { //caso in cui si tenta si spostare un nodo sotto se stesso (senza questo controllo l'applicazione va in loop) this.executeJS("<SCRIPT>alert('Attenzione: si sta cercando di spostare una Uo sotto se stessa.'); window.returnValue = 'Y'; self.close();</SCRIPT>"); } }