/// <summary> /// Ricorsione /// </summary> /// <param name="nodo"></param> /// <param name="xmldoc"></param> /// <param name="indentazionePadre"></param> private void addElement(myTreeNode2 nodo, XmlDocument xmldoc, int indentazionePadre) { string prefisso = string.Empty; if ((bool)nodo.Expanded && nodo.ChildNodes.Count > 0) { indentazionePadre += 1; TreeNodeCollection nodi = nodo.ChildNodes; foreach (myTreeNode2 n in nodi) { XmlElement record = xmldoc.CreateElement("RECORD"); record.SetAttribute("tipo", n.TipoNodo); switch (n.TipoNodo) { case "U": prefisso = "[UO] "; break; case "R": prefisso = "[R] "; break; case "P": prefisso = "[U] "; break; } record.SetAttribute("desc", this.addIndentation(indentazionePadre) + prefisso + n.Text); xmldoc.DocumentElement.AppendChild(record); this.addElement(n, xmldoc, indentazionePadre); } } }
/// <summary> /// Visualizza partendo dalla UO selezionata in Treeview /// </summary> private void VisualizzaUOSelezionata() { try { if (this.treeViewUO.SelectedNode != null) { myTreeNode2 TreeNodo; TreeNodo = (myTreeNode2)this.treeViewUO.SelectedNode; if (TreeNodo.TipoNodo.Equals("U")) // solo se è una UO { DocsPaWR.OrgUO currentUO = this.GetDatiUOCorrente(TreeNodo.ID); if (currentUO != null) { // diventa la ROOT della treeview myTreeNode2 treenode = new myTreeNode2(); treenode = this.SetRootTreeview(currentUO); this.SetRootTreeviewExpanded(); this.hd_lastReturnValueModal.Value = currentUO.IDCorrGlobale + "_" + currentUO.IDParent + "_U"; } } } } catch { ScriptManager.RegisterStartupScript(this, this.GetType(), "dialog", "ajaxDialogModal('ErrorOrganizationChartSystemError', 'error', '');", true); } }
/// <summary> /// Converte i dati visualizzati nella Treeview in un file XML /// </summary> /// <returns></returns> private XmlDocument exportToXML() { XmlDocument xmldoc = new XmlDocument(); if (this.treeViewUO.Nodes.Count > 0) { myTreeNode2 nodo = (myTreeNode2)treeViewUO.Nodes[0]; //gestione RF string titoloPDF = string.Empty; if (this.verificaStatoRicercaRF()) { titoloPDF = "Composizione RF: " + this.ddlRF.Items[this.ddlRF.SelectedIndex].Text; } else { titoloPDF = "Organigramma"; } XmlNode organigramma = xmldoc.AppendChild(xmldoc.CreateElement("ORGANIGRAMMA")); XmlAttribute attrRoot = xmldoc.CreateAttribute("title"); attrRoot.InnerText = titoloPDF; organigramma.Attributes.Append(attrRoot); XmlElement record = xmldoc.CreateElement("RECORD"); record.SetAttribute("tipo", nodo.TipoNodo); record.SetAttribute("desc", nodo.Text); xmldoc.DocumentElement.AppendChild(record); this.addElement(nodo, xmldoc, 1); } return(xmldoc); }
/// <summary> /// Ricorsione del metodo "pulisceNodiOrfaniRF" /// </summary> /// <param name="nodo"></param> private void ricorsioneCercaFigliOrfaniRF(myTreeNode2 nodo) { if (nodo.TipoNodo.Equals("U")) { if (nodo.ChildNodes.Count > 0) { try { foreach (myTreeNode2 currentNode in nodo.ChildNodes) { if (currentNode.ChildNodes.Count == 0 && currentNode.TipoNodo.Equals("U")) { this.treeViewUO.Nodes.Remove(currentNode); } else { this.ricorsioneCercaFigliOrfaniRF(currentNode); } } } catch { this.pulisceNodiOrfaniRF(); return; } } } }
/// <summary> /// Esegue l'espansione del nodo /// </summary> /// <param name="indice"></param> private void executeExpand(myTreeNode2 TreeNodo) { DocsPaWR.OrgUO currentUO; TreeNodo.Expanded = true; if (TreeNodo.ChildNodes.Count > 0) { TreeNodo.ChildNodes.Clear(); } switch (TreeNodo.TipoNodo) { case "U": currentUO = new DocsPaWR.OrgUO(); currentUO.IDCorrGlobale = TreeNodo.ID; currentUO.IDAmministrazione = this.idAmm; currentUO.Ruoli = TreeNodo.RuoliUO; currentUO.SottoUo = TreeNodo.SottoUO; currentUO.Livello = TreeNodo.Livello; if (this.ddlView.SelectedIndex >= 1 && Convert.ToInt32(currentUO.Ruoli) > 0) { this.RuoliUO(currentUO, TreeNodo); } if (Convert.ToInt32(currentUO.SottoUo) > 0) { this.SottoUO(currentUO, TreeNodo); } break; } }
/// <summary> /// Espande tutto l'organigramma dalla Root /// </summary> private void EspandeOrgDallaRoot() { if (this.treeViewUO.Nodes.Count > 0) { myTreeNode2 TreeNodo = (myTreeNode2)this.treeViewUO.Nodes[0]; this.ricorsioneCercaFigli(TreeNodo); } }
/// <summary> /// Elimina i nodi di tipo UO sulla TreeView che non presentano ruoli associati all'RF selezionato /// </summary> private void pulisceNodiOrfaniRF() { if (this.treeViewUO.Nodes.Count > 0) { myTreeNode2 TreeNodo = (myTreeNode2)treeViewUO.Nodes[0]; this.ricorsioneCercaFigliOrfaniRF(TreeNodo); } }
/// <summary> /// Ricorsione sui nodi figli della treeview /// </summary> /// <param name="nodo"></param> private void ricorsioneCercaFigli(myTreeNode2 nodo) { if (nodo.TipoNodo.Equals("U")) { this.executeExpand(nodo); foreach (myTreeNode2 currentNode in nodo.ChildNodes) { this.ricorsioneCercaFigli(currentNode); } } }
/// <summary> /// Visualizza nella Treeview il dato ricercato /// </summary> /// <param name="returnValue"></param> private void VisualizzaNodoRicercato(string returnValue) { try { myTreeNode2 treenode; this.hd_returnValueModal.Value = ""; this.hd_lastReturnValueModal.Value = returnValue; /* * possibili valori di ritorno: * * idCorrGlobUO_idParentUO_U = ricerca traUO * idCorrGlobRuolo_idCorrGlobUO_R = ricerca tra ruoli * idCorrGlobPersona_idCorrGlobRuolo_<PN>/<PC> = ricerca tra utenti */ string[] appo = returnValue.Split('_'); string idCorrGlobale = appo[0]; string idParent = appo[1]; string tipo = appo[2]; switch (tipo) { case "R": idCorrGlobale = idParent; break; case "PN": case "PC": idCorrGlobale = this.GetUOPadre(idParent, tipo); break; } DocsPaWR.OrgUO currentUO = this.GetDatiUOCorrente(idCorrGlobale); if (currentUO != null) { // diventa la ROOT della treeview treenode = new myTreeNode2(); treenode = this.SetRootTreeview(currentUO); this.SetRootTreeviewExpanded(); } } catch { ScriptManager.RegisterStartupScript(this, this.GetType(), "dialog", "ajaxDialogModal('ErrorOrganizationChartSystemError', 'error', '');", true); } }
/// <summary> /// Imposta la Root nella Treeview /// </summary> /// <param name="currentUO"></param> /// <returns></returns> private myTreeNode2 SetRootTreeview(DocsPaWR.OrgUO currentUO) { this.treeViewUO.Nodes.Clear(); myTreeNode2 treenode = new myTreeNode2(); treenode.ID = currentUO.IDCorrGlobale; treenode.Text = currentUO.Codice + " - " + currentUO.Descrizione; treenode.TipoNodo = "U"; treenode.RuoliUO = currentUO.Ruoli; treenode.SottoUO = currentUO.SottoUo; treenode.Livello = currentUO.Livello; treenode.ImageUrl = this.getElementType(treenode.TipoNodo); treeViewUO.Nodes.Add(treenode); return(treenode); }
/// <summary> /// Visualizza gli utenti di un ruolo /// </summary> /// <param name="nodoRuoli"></param> /// <param name="ruolo"></param> private void UtentiRuolo(myTreeNode2 nodoRuoli, DocsPaWR.OrgRuolo ruolo) { myTreeNode2 nodoUtenti; nodoRuoli.Expanded = true; foreach (DocsPaWR.OrgUtente utente in ruolo.Utenti) { nodoUtenti = new myTreeNode2(); nodoUtenti.ID = utente.IDCorrGlobale; nodoUtenti.TipoNodo = "P"; nodoUtenti.Text = utente.CodiceRubrica + " - " + utente.Cognome + " " + utente.Nome; nodoUtenti.ImageUrl = this.getElementType(nodoUtenti.TipoNodo); nodoUtenti.Expanded = true; nodoRuoli.ChildNodes.Add(nodoUtenti); } }
/// <summary> /// Visualizza le sotto UO /// </summary> /// <param name="currentUO"></param> /// <param name="indice"></param> /// <returns></returns> private bool SottoUO(DocsPaWR.OrgUO currentUO, myTreeNode2 TreeNodo) { bool retValue = true; myTreeNode2 TreeNodoFiglio; myTreeNode2 nodoUO; ArrayList lista = new ArrayList(); int livello = Convert.ToInt32(currentUO.Livello) + 1; OrganigrammaManager manager = new OrganigrammaManager(); manager.ListaUO(currentUO.IDCorrGlobale, Convert.ToString(livello), currentUO.IDAmministrazione); lista = manager.getListaUO(); if (lista != null && lista.Count > 0) { if (!this.isOrdinamentoAbilitato) { lista.Sort(new UOSort()); } if (UIManager.UserManager.IsAuthorizedFunctions("DO_VIS_LIV_ORG")) { foreach (DocsPaWR.OrgUO sottoUO in lista) { nodoUO = new myTreeNode2(); nodoUO.ID = sottoUO.IDCorrGlobale; nodoUO.TipoNodo = "U"; nodoUO.Text = sottoUO.CodiceRubrica + " - [" + sottoUO.Livello + "] - " + sottoUO.Descrizione; nodoUO.ImageUrl = this.getElementType(nodoUO.TipoNodo); nodoUO.Expanded = false; TreeNodo.ChildNodes.Add(nodoUO); nodoUO.RuoliUO = sottoUO.Ruoli; nodoUO.SottoUO = sottoUO.SottoUo; nodoUO.Livello = sottoUO.Livello; if ((int.Parse(this.ddlView.SelectedValue) > 1 && Convert.ToInt32(sottoUO.Ruoli) > 0) || Convert.ToInt32(sottoUO.SottoUo) > 0) { TreeNodoFiglio = new myTreeNode2(); TreeNodoFiglio.Text = "<font color='#ff0000'> loading...</font>"; nodoUO.ChildNodes.Add(TreeNodoFiglio); } } } else { foreach (DocsPaWR.OrgUO sottoUO in lista) { nodoUO = new myTreeNode2(); nodoUO.ID = sottoUO.IDCorrGlobale; nodoUO.TipoNodo = "U"; nodoUO.Text = sottoUO.CodiceRubrica + " - " + sottoUO.Descrizione; nodoUO.ImageUrl = this.getElementType(nodoUO.TipoNodo); nodoUO.Expanded = false; TreeNodo.ChildNodes.Add(nodoUO); nodoUO.RuoliUO = sottoUO.Ruoli; nodoUO.SottoUO = sottoUO.SottoUo; nodoUO.Livello = sottoUO.Livello; if ((int.Parse(this.ddlView.SelectedValue) > 1 && Convert.ToInt32(sottoUO.Ruoli) > 0) || Convert.ToInt32(sottoUO.SottoUo) > 0) { TreeNodoFiglio = new myTreeNode2(); TreeNodoFiglio.Text = "<font color='#ff0000'> loading...</font>"; nodoUO.ChildNodes.Add(TreeNodoFiglio); } } } } else { retValue = false; } return(retValue); }
/// <summary> /// Visualizza i ruoli di una UO /// </summary> /// <param name="currentUO"></param> /// <param name="indice"></param> private void RuoliUO(DocsPaWR.OrgUO currentUO, myTreeNode2 TreeNodo) { myTreeNode2 nodoRuoli; OrganigrammaManager manager = new OrganigrammaManager(); manager.ListaRuoliUO(currentUO.IDCorrGlobale); if (manager.getListaRuoliUO() != null && manager.getListaRuoliUO().Count > 0) { TreeNodo.Expanded = true; if (UIManager.UserManager.IsAuthorizedFunctions("DO_VIS_LIV_ORG")) { OrgTipoRuolo[] lista = manager.getListaTipiRuolo(); foreach (DocsPaWR.OrgRuolo ruolo in manager.getListaRuoliUO()) { // filtro per nuova gestione RF if (this.visualizzaRuolo_filtroRF(ruolo.IDCorrGlobale)) { //Modifica per visualizzare il codice del tipo ruolo manager.ListaTipiRuolo(ruolo.IDAmministrazione); OrgTipoRuolo[] elencoTipiRuolo = (OrgTipoRuolo[])manager.getListaTipiRuolo(); OrgTipoRuolo tipoRuolo = elencoTipiRuolo.Where(oggetto => oggetto.IDTipoRuolo.ToUpper().Equals(ruolo.IDTipoRuolo.ToUpper())).FirstOrDefault(); nodoRuoli = new myTreeNode2(); nodoRuoli.ID = ruolo.IDCorrGlobale; nodoRuoli.Text = ruolo.CodiceRubrica + " - [" + tipoRuolo.Livello + "] - " + ruolo.Descrizione; nodoRuoli.TipoNodo = "R"; nodoRuoli.ImageUrl = this.getElementType(nodoRuoli.TipoNodo); nodoRuoli.Expanded = true; TreeNodo.ChildNodes.Add(nodoRuoli); if (this.ddlView.SelectedValue == "3" && ruolo.Utenti.Length > 0) { this.UtentiRuolo(nodoRuoli, ruolo); } } } } else { foreach (DocsPaWR.OrgRuolo ruolo in manager.getListaRuoliUO()) { // filtro per nuova gestione RF if (this.visualizzaRuolo_filtroRF(ruolo.IDCorrGlobale)) { nodoRuoli = new myTreeNode2(); nodoRuoli.ID = ruolo.IDCorrGlobale; nodoRuoli.Text = ruolo.CodiceRubrica + " - " + ruolo.Descrizione; nodoRuoli.TipoNodo = "R"; nodoRuoli.ImageUrl = this.getElementType(nodoRuoli.TipoNodo); nodoRuoli.Expanded = true; TreeNodo.ChildNodes.Add(nodoRuoli); if (this.ddlView.SelectedValue == "3" && ruolo.Utenti.Length > 0) { this.UtentiRuolo(nodoRuoli, ruolo); } } } } } }
protected void treeViewUO_TreeNodeExpanded(object sender, TreeNodeEventArgs e) { DocsPaWR.OrgUO currentUO; DocsPaWR.OrgRuolo currentRole; myTreeNode2 TreeNodo = (myTreeNode2)e.Node; TreeNodo.Expanded = true; if (TreeNodo.ChildNodes.Count > 0) { TreeNodo.ChildNodes.Clear(); } switch (TreeNodo.TipoNodo) { case "U": currentUO = new DocsPaWR.OrgUO(); currentUO.IDCorrGlobale = TreeNodo.ID; currentUO.IDAmministrazione = this.idAmm; currentUO.Ruoli = TreeNodo.RuoliUO; currentUO.SottoUo = TreeNodo.SottoUO; currentUO.Livello = TreeNodo.Livello; if (this.ddlView.SelectedIndex >= 1 && Convert.ToInt32(currentUO.Ruoli) > 0) { this.RuoliUO(currentUO, TreeNodo); } if (Convert.ToInt32(currentUO.SottoUo) > 0) { this.SottoUO(currentUO, TreeNodo); } break; // Gabriele Melini // bug gestione ruoli organigramma case "R": currentRole = new DocsPaWR.OrgRuolo(); OrganigrammaManager manager = new OrganigrammaManager(); currentRole = manager.GetRole(TreeNodo.ID); manager.ListaUtenti(currentRole.IDGruppo); if (manager.getListaUtenti() != null && manager.getListaUtenti().Count > 0) { DocsPaWR.OrgUtente[] utenti = (DocsPaWR.OrgUtente[])manager.getListaUtenti().ToArray(typeof(DocsPaWR.OrgUtente)); currentRole.Utenti = utenti; if (this.ddlView.SelectedValue == "3" && currentRole.Utenti.Length > 0) { this.UtentiRuolo(TreeNodo, currentRole); } } break; } }