Esempio n. 1
0
        /// <summary>
        /// Aggiornamento visibilità di più ruoli su un titolario
        /// </summary>
        /// <param name="nodoTitolario"></param>
        /// <param name="ruoliTitolario"></param>
        /// <returns></returns>
        public DocsPaVO.amministrazione.EsitoOperazione[] SetAclNodoTitolario(OrgNodoTitolario nodoTitolario, OrgRuoloTitolario[] ruoliTitolario)
        {
            List <EsitoOperazione> retValue = new List <EsitoOperazione>();

            using (DocsPaDB.Query_DocsPAWS.Amministrazione amm = new DocsPaDB.Query_DocsPAWS.Amministrazione())
            {
                foreach (OrgRuoloTitolario ruolo in ruoliTitolario)
                {
                    bool containsAssociazione = (amm.ContainsAssociazioneRuoloTitolario(nodoTitolario.ID, ruolo.ID));

                    if (ruolo.Associato && containsAssociazione)
                    {
                        // L'associazione tra ruolo e nodo titolario già esiste
                        retValue.Add(
                            new EsitoOperazione
                        {
                            Codice      = Convert.ToInt32(ruolo.ID),
                            Descrizione = string.Format("Ruolo '{0}' in titolario '{1}':{2}Visibilità già presente", ruolo.Codice, nodoTitolario.Codice, Environment.NewLine)
                        });
                    }
                    else if (!ruolo.Associato && !containsAssociazione)
                    {
                        // L'associazione tra ruolo e nodo titolario è già stata rimossa
                        retValue.Add(
                            new EsitoOperazione
                        {
                            Codice      = Convert.ToInt32(ruolo.ID),
                            Descrizione = string.Format("Ruolo '{0}' in titolario '{1}':{2}Visibilità già rimossa", ruolo.Codice, nodoTitolario.Codice, Environment.NewLine)
                        });
                    }
                    // Aggiornamento della visibilità di ciascun ruolo nel nodo di titolario
                    else if (!amm.UpdateRuoloTitolario(nodoTitolario.ID, ruolo.ID, ruolo.Associato))
                    {
                        // Impostazione della visibilità per il ruolo non è andata a buon fine,
                        // nell'attributo Codice dell'oggetto "EsitoOperazione" viene impostato
                        // l'id del ruolo per cui si è verificato l'errore
                        retValue.Add(
                            new EsitoOperazione
                        {
                            Codice      = Convert.ToInt32(ruolo.ID),
                            Descrizione = string.Format("Ruolo '{0}' in titolario '{1}':{2}Aggiornamento visibilità non andato a buon fine", ruolo.Codice, nodoTitolario.Codice, Environment.NewLine)
                        });
                    }
                    else
                    {
                        // Impostazione della visibilità per il ruolo completata con successo
                        string operazione = string.Empty;
                        if (ruolo.Associato)
                        {
                            operazione = "impostata";
                        }
                        else
                        {
                            operazione = "rimossa";
                        }

                        retValue.Add(
                            new EsitoOperazione
                        {
                            Codice      = 0,
                            Descrizione = string.Format("Ruolo '{0}' in titolario '{1}':{2}Visibilità {3} correttamente", ruolo.Codice, nodoTitolario.Codice, Environment.NewLine, operazione)
                        });
                    }
                }
            }

            return(retValue.ToArray());
        }