예제 #1
0
        /// <summary>
        /// Metodo per l'aggiornamento delle caselle email associate al corrispondente
        /// </summary>
        /// <param name="elemento">Elemento di cui aggiornare le caselle</param>
        /// <param name="multicasella">Flag utilizzato per indicare se bisogna gestire il corrispondente in modalità multicasella</param>
        /// <exception cref="RubricaException">Sollevata in caso di problemi durante la rimozione o il salvataggio delle email</exception>
        private static void UpdateEmails(ElementoRubrica elemento, bool multicasella)
        {
            // Email da salvare
            EMailList emails = null;

            // Aggiornamento delle emails all'utente
            // Nel caso di multicasella, vengono cancellate le email presenti
            // e quindi vengono salvate le nuove mails
            if (multicasella)
            {
                emails = elemento.Emails;

                // Se non ci sono caselle di posta preferite, viene impostata come preferita la prima
                // mail disponibile
                emails.SetFirstMailAsPreferred();
            }
            else
            {
                // Recupero delle caselle associate al corrispondente
                emails = InternalGetEmails(elemento.Id);

                // Nel caso monocasella, se l'attributo mail è valorizzato, vengono caricate le email
                // associate al corrispondente e quindi viene aggiunta la nuova mail impostandola come
                // preferita altrimenti viene cancellata la mail preferita e, se ne sono disponibili altre,
                // viene impostata come preferita la prima disponibile, quindi si procede al salvataggio delle
                // emails
                if (String.IsNullOrEmpty(elemento.Email))
                {
                    emails.RemovePreferred();
                }
                else
                {
                    emails.Add(new EmailInfo(elemento.Email, true));
                }
            }

            // Rimozione delle vecchie mail memorizzate e memorizzazione delle nuove
            InternalRemoveEmails(elemento.Id);

            emails.ForEach(e => InternalInsertEmail(e, elemento.Id));
        }
예제 #2
0
        /// <summary>
        /// Reperimento delle emails relative ad un corrispondente
        /// </summary>
        /// <param name="idElementoRubrica">Id dell'elemento rubrica cui si riferiscono le mails</param>
        private static EMailList InternalGetEmails(int idElementoRubrica)
        {
            EMailList emails = new EMailList();

            Dpa.DataAccess.Database db = RubricaDatabase.CreateDatabase();

            using (Dpa.DataAccess.DBCommandWrapper cw = db.GetStoredProcCommandWrapper(RubricaDatabase.GetSpNameForPackage(SP_GET_EMAILS)))
            {
                cw.AddInParameter("pId", DbType.Int32, idElementoRubrica);

                Utils.Log.Write(cw.Command);

                using (IDataReader reader = db.ExecuteReader(cw))
                {
                    while (reader.Read())
                    {
                        emails.Add(CreateEmailInfo(reader));
                    }
                }
            }

            return(emails);
        }