예제 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="utente"></param>
        private static void InternalDelete(Utente utente)
        {
            Dpa.DataAccess.Database db = RubricaDatabase.CreateDatabase();

            using (IDbConnection connection = db.GetConnection())
            {
                connection.Open();

                using (IDbTransaction transaction = connection.BeginTransaction())
                {
                    using (Dpa.DataAccess.DBCommandWrapper cw = db.GetStoredProcCommandWrapper(RubricaDatabase.GetSpNameForPackage(SP_DELETE)))
                    {
                        cw.AddInParameter("pId", DbType.Int32, utente.Id);
                        cw.AddInParameter("pDataUltimaModifica", DbType.DateTime, utente.DataUltimaModifica);

                        db.ExecuteNonQuery(cw);

                        if (cw.RowsAffected == 0)
                        {
                            throw new RubricaException(Properties.Resources.ConcurrencyException);
                        }
                        else
                        {
                            transaction.Commit();
                        }
                    }
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Modifica password per l'utente
        /// </summary>
        /// <param name="credentials"></param>
        /// <returns></returns>
        private static void InternalChangePassword(ChangePwdSecurityCredentials credentials)
        {
            Dpa.DataAccess.Database db = RubricaDatabase.CreateDatabase();

            using (IDbConnection connection = db.GetConnection())
            {
                connection.Open();

                using (IDbTransaction transaction = connection.BeginTransaction())
                {
                    using (Dpa.DataAccess.DBCommandWrapper cw = db.GetStoredProcCommandWrapper(RubricaDatabase.GetSpNameForPackage(SP_CHANGE_PWD)))
                    {
                        cw.AddInParameter("pNomeUtente", DbType.String, credentials.UserName);
                        cw.AddInParameter("pPassword", DbType.String, SecurityCredentials.GetPasswordHash(credentials.UserName, credentials.Password));
                        cw.AddInParameter("pNewPassword", DbType.String, SecurityCredentials.GetPasswordHash(credentials.UserName, credentials.NewPassword));

                        db.ExecuteNonQuery(cw);

                        if (cw.RowsAffected == 0)
                        {
                            throw new ApplicationException(Properties.Resources.ConcurrencyException);
                        }
                        else
                        {
                            transaction.Commit();
                        }
                    }
                }
            }
        }
예제 #3
0
        /// <summary>
        /// Validazione credenziali utente
        /// </summary>
        /// <param name="credentials"></param>
        /// <returns></returns>
        public static SecurityCredentialsResult ValidateCredentials(SecurityCredentials credentials)
        {
            SecurityCredentialsResult result = null;

            const string SP_GET = "GetUserCredentials";

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

            using (Dpa.DataAccess.DBCommandWrapper cw = db.GetStoredProcCommandWrapper(RubricaDatabase.GetSpNameForPackage(SP_GET)))
            {
                cw.AddInParameter("pNomeUtente", DbType.String, credentials.UserName);
                cw.AddInParameter("pPassword", DbType.String, SecurityCredentials.GetPasswordHash(credentials.UserName, credentials.Password));

                using (IDataReader reader = db.ExecuteReader(cw))
                {
                    if (reader.Read())
                    {
                        result = new SecurityCredentialsResult
                        {
                            UserName       = credentials.UserName,
                            Amministratore = (Dpa.DataAccess.Helper.DataReaderHelper.GetValue <string>(reader, "Amministratore", false) == "1")
                        };
                    }
                }
            }

            return(result);
        }
예제 #4
0
        /// <summary>
        /// Repreimento oggetto DataObject
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        private static Utente InternalGet(int id)
        {
            Utente utente = null;

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

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

                using (IDataReader reader = db.ExecuteReader(cw))
                {
                    if (reader.Read())
                    {
                        utente = GetUtente(reader);
                    }
                }
            }

            if (utente == null)
            {
                throw new ApplicationException(Properties.Resources.DataNotFoundException);
            }

            return(utente);
        }
예제 #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="opzioniRicerca"></param>
        /// <returns></returns>
        private static ElementoRubrica[] InternalSearch(OpzioniRicerca opzioniRicerca)
        {
            List <ElementoRubrica> elementi = new List <ElementoRubrica>();

            string filtro = string.Empty, ordinamento = string.Empty;
            int    pagina = 0, oggettiPerPagina = 0;

            if (opzioniRicerca != null)
            {
                if (opzioniRicerca.CriteriRicerca != null)
                {
                    filtro = opzioniRicerca.CriteriRicerca.ToSql();
                }
                if (opzioniRicerca.CriteriOrdinamento != null)
                {
                    ordinamento = opzioniRicerca.CriteriOrdinamento.ToSql();
                }
                if (opzioniRicerca.CriteriPaginazione != null)
                {
                    pagina = opzioniRicerca.CriteriPaginazione.Pagina;
                }
                if (opzioniRicerca.CriteriPaginazione != null)
                {
                    oggettiPerPagina = opzioniRicerca.CriteriPaginazione.OggettiPerPagina;
                }
            }

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

            using (Dpa.DataAccess.DBCommandWrapper cw = db.GetStoredProcCommandWrapper(RubricaDatabase.GetSpNameForPackage(SP_SEARCH)))
            {
                cw.AddInParameter("pFiltro", DbType.String, filtro);
                cw.AddInParameter("pOrdinamento", DbType.String, ordinamento);
                cw.AddInParameter("pPagina", DbType.Int32, pagina);
                cw.AddInParameter("pOggettiPagina", DbType.Int32, oggettiPerPagina);
                cw.AddOutParameter("pTotaleOggetti", DbType.Int32, 0);

                Utils.Log.Write(cw.Command);

                using (IDataReader reader = db.ExecuteReader(cw))
                {
                    while (reader.Read())
                    {
                        elementi.Add(CreateElementoRubrica(reader, false));
                    }
                }

                if (opzioniRicerca != null && opzioniRicerca.CriteriPaginazione != null)
                {
                    opzioniRicerca.CriteriPaginazione.SetTotaleOggetti(Convert.ToInt32(cw.GetParameterValue("pTotaleOggetti")));
                }
            }

            return(elementi.ToArray());
        }
예제 #6
0
        /// <summary>
        /// Verifica se l'utente è già presente
        /// </summary>
        /// <param name="nomeUtente"></param>
        /// <returns></returns>
        private static bool Contains(string nomeUtente)
        {
            bool retValue = false;

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

            using (Dpa.DataAccess.DBCommandWrapper cw = db.GetStoredProcCommandWrapper(RubricaDatabase.GetSpNameForPackage(SP_CONTAINS)))
            {
                cw.AddInParameter("pNomeUtente", DbType.String, nomeUtente);
                cw.AddOutParameter("pRet", DbType.Int32, 0);

                db.ExecuteScalar(cw);

                retValue = (Convert.ToInt32(cw.GetParameterValue("pRet")) > 0);
            }

            return(retValue);
        }
예제 #7
0
        /// <summary>
        /// Rimozione delle emails relative ad un corrispondente
        /// </summary>
        /// <param name="idElementoRubrica">Id dell'elemento rubrica cui si riferiscono le mails</param>
        private static void InternalRemoveEmails(int idElementoRubrica)
        {
            Dpa.DataAccess.Database db = RubricaDatabase.CreateDatabase();

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

                Utils.Log.Write(cw.Command);

                db.ExecuteNonQuery(cw);

                if (cw.RowsAffected == 0)
                {
                    throw new RubricaException(Properties.Resources.ConcurrencyException);
                }
            }
        }
예제 #8
0
        /// <summary>
        /// Rimozione di un oggetto in tabella ElementiRubrica
        /// </summary>
        /// <param name="id"></param>
        private static void InternalDelete(ElementoRubrica elemento)
        {
            Dpa.DataAccess.Database db = RubricaDatabase.CreateDatabase();

            using (Dpa.DataAccess.DBCommandWrapper cw = db.GetStoredProcCommandWrapper(RubricaDatabase.GetSpNameForPackage(SP_DELETE)))
            {
                cw.AddInParameter("pId", DbType.Int32, elemento.Id);
                cw.AddInParameter("pDataUltimaModifica", DbType.DateTime, elemento.DataUltimaModifica);

                Utils.Log.Write(cw.Command);

                db.ExecuteNonQuery(cw);

                if (cw.RowsAffected == 0)
                {
                    throw new RubricaException(Properties.Resources.ConcurrencyException);
                }
            }
        }
예제 #9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="utente"></param>
        /// <returns></returns>
        private static Utente InternalInsert(Utente utente)
        {
            Dpa.DataAccess.Database db = RubricaDatabase.CreateDatabase();

            utente.DataCreazione      = DateTime.Now;
            utente.DataUltimaModifica = utente.DataCreazione;

            using (IDbConnection connection = db.GetConnection())
            {
                connection.Open();

                using (IDbTransaction transaction = connection.BeginTransaction())
                {
                    using (Dpa.DataAccess.DBCommandWrapper cw = db.GetStoredProcCommandWrapper(RubricaDatabase.GetSpNameForPackage(SP_INSERT)))
                    {
                        cw.AddInParameter("pNomeUtente", DbType.String, utente.Nome);
                        cw.AddInParameter("pPassword", DbType.String, SecurityCredentials.GetPasswordHash(utente.Nome, utente.Password));
                        cw.AddInParameter("pAmministratore", DbType.AnsiStringFixedLength, (utente.Amministratore ? "1" : "0"));
                        cw.AddInParameter("pDataCreazione", DbType.DateTime, utente.DataCreazione);
                        cw.AddInParameter("pDataUltimaModifica", DbType.DateTime, utente.DataUltimaModifica);
                        cw.AddOutParameter("pId", DbType.Int32, 0);

                        db.ExecuteNonQuery(cw, transaction);

                        if (cw.RowsAffected == 0)
                        {
                            throw new ApplicationException(Properties.Resources.ConcurrencyException);
                        }
                        else
                        {
                            // Reperimento identity
                            utente.Id = Convert.ToInt32(cw.GetParameterValue("pId"));

                            transaction.Commit();
                        }
                    }
                }
            }

            return(utente);
        }
예제 #10
0
        /// <summary>
        /// Inserimento di una email relativa ad un corrispondente
        /// </summary>
        /// <param name="emails">Email da inserire</param>
        /// <param name="idElementoRubrica">Id dell'elemento rubrica cui si riferisce la mail</param>
        private static void InternalInsertEmail(EmailInfo emails, int idElementoRubrica)
        {
            Dpa.DataAccess.Database db = RubricaDatabase.CreateDatabase();

            using (Dpa.DataAccess.DBCommandWrapper cw = db.GetStoredProcCommandWrapper(RubricaDatabase.GetSpNameForPackage(SP_INSERT_EMAIL)))
            {
                cw.AddInParameter("pId", DbType.Int32, idElementoRubrica);
                cw.AddInParameter("pEmail", DbType.AnsiString, emails.Email);
                cw.AddInParameter("pNote", DbType.AnsiString, emails.Note);
                cw.AddInParameter("pPreferita", DbType.AnsiString, emails.Preferita ? "1" : "0");

                Utils.Log.Write(cw.Command);

                db.ExecuteNonQuery(cw);

                if (cw.RowsAffected == 0)
                {
                    throw new RubricaException(Properties.Resources.ConcurrencyException);
                }
            }
        }
예제 #11
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);
        }
예제 #12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="utente"></param>
        /// <returns></returns>
        private static Utente InternalUpdate(Utente utente)
        {
            Dpa.DataAccess.Database db = RubricaDatabase.CreateDatabase();

            DateTime dataUltimaModifica = DateTime.Now;

            using (IDbConnection connection = db.GetConnection())
            {
                connection.Open();

                using (IDbTransaction transaction = connection.BeginTransaction())
                {
                    using (Dpa.DataAccess.DBCommandWrapper cw = db.GetStoredProcCommandWrapper(RubricaDatabase.GetSpNameForPackage(SP_UPDATE)))
                    {
                        cw.AddInParameter("pId", DbType.Int32, utente.Id);
                        cw.AddInParameter("pAmministratore", DbType.AnsiStringFixedLength, (utente.Amministratore ? "1" : "0"));
                        cw.AddInParameter("pDataUltimaModifica", DbType.DateTime, dataUltimaModifica);
                        cw.AddInParameter("pOldDataUltimaModifica", DbType.DateTime, utente.DataUltimaModifica);

                        db.ExecuteNonQuery(cw);

                        if (cw.RowsAffected == 0)
                        {
                            throw new RubricaException(Properties.Resources.ConcurrencyException);
                        }
                        else
                        {
                            utente.DataUltimaModifica = dataUltimaModifica;

                            transaction.Commit();
                        }
                    }
                }
            }

            return(utente);
        }
예제 #13
0
        /// <summary>
        /// Repreimento oggetto DataObject
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        private static ElementoRubrica InternalGet(int id)
        {
            ElementoRubrica elemento = null;

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

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

                    Utils.Log.Write(cw.Command);

                    using (IDataReader reader = db.ExecuteReader(cw))
                        if (reader.Read())
                        {
                            elemento = CreateElementoRubrica(reader, true);
                        }
                }

                if (elemento == null)
                {
                    throw new ApplicationException(Properties.Resources.DataNotFoundException);
                }
            }
            catch (Exception ex)
            {
                RubricaException exception = new RubricaException(string.Format(Properties.Resources.GetElementoRubricaException, id), ex);

                Utils.Log.Write(exception);

                throw exception;
            }

            return(elemento);
        }
예제 #14
0
        /// <summary>
        /// Aggiornamento oggetto in tabella ElementiRubrica
        /// </summary>
        /// <param name="elemento"></param>
        /// <param name="multicasella">
        ///     Flag utilizzato per indicare se bisogna gestire il corrispondente come corrispondente multicasella.
        ///     Se un corrispondente è multicasella, la gestione avviene esclusivamente prendendo in considerazione
        ///     la lista delle caselle email altrimenti viene considerata come casella quella passata attraverso
        ///     la valorizzazione della proprietà Email.
        ///     Nel caso monocasella, se l'attributo Mail dell'oggetto ElementoRubrica è valorizzato, viene aggiunta
        ///     (se non esiste) una nuova casella preferita al corrispondente, se viene passato nullo, viene cancellata
        ///     la casella preferita e, se presenti altre email associate al corrispondente, viene impostata
        ///     come preferita la prima casella disponibile.
        /// </param>
        /// <returns></returns>
        private static ElementoRubrica InternalUpdate(ElementoRubrica elemento, bool multicasella)
        {
            Dpa.DataAccess.Database db = RubricaDatabase.CreateDatabase();

            DateTime dataUltimaModifica = DateTime.Now;

            using (IDbConnection connection = db.GetConnection())
            {
                connection.Open();

                using (IDbTransaction transaction = connection.BeginTransaction())
                {
                    using (Dpa.DataAccess.DBCommandWrapper cw = db.GetStoredProcCommandWrapper(RubricaDatabase.GetSpNameForPackage(SP_UPDATE)))
                    {
                        cw.AddInParameter("pId", DbType.Int32, elemento.Id);
                        cw.AddInParameter("pDescrizione", DbType.String, elemento.Descrizione);
                        cw.AddInParameter("pIndirizzo", DbType.String, elemento.Indirizzo);
                        cw.AddInParameter("pCitta", DbType.String, elemento.Citta);
                        cw.AddInParameter("pCap", DbType.String, elemento.Cap);
                        cw.AddInParameter("pProvincia", DbType.String, elemento.Provincia);
                        cw.AddInParameter("pNazione", DbType.String, elemento.Nazione);
                        cw.AddInParameter("pTelefono", DbType.String, elemento.Telefono);
                        cw.AddInParameter("pFax", DbType.String, elemento.Fax);
                        //cw.AddInParameter("pEmail", DbType.String, elemento.Email);
                        cw.AddInParameter("pAOO", DbType.String, elemento.AOO);
                        cw.AddInParameter("pDataUltimaModifica", DbType.DateTime, dataUltimaModifica);
                        cw.AddInParameter("pOldDataUltimaModifica", DbType.DateTime, elemento.DataUltimaModifica);
                        cw.AddInParameter("pTipoCorrispondente", DbType.String, elemento.TipoCorrispondente.ToString());
                        cw.AddInParameter("pAmministrazione", DbType.String, elemento.Amministrazione);

                        if (elemento.Urls.Count > 0)
                        {
                            cw.AddInParameter("pUrl", DbType.String, elemento.Urls[0].Url);
                        }
                        else
                        {
                            cw.AddInParameter("pUrl", DbType.String, String.Empty);
                        }

                        if (string.IsNullOrEmpty(elemento.CHA_Pubblicato))
                        {
                            elemento.CHA_Pubblicato = "0";
                        }
                        cw.AddInParameter("pChaPubblica", DbType.String, elemento.CHA_Pubblicato);

                        //Emanuela: aggiunta campi partita iva e codice fiscale
                        cw.AddInParameter("pCodiceFiscale", DbType.String, elemento.CodiceFiscale);
                        cw.AddInParameter("pPartitaIva", DbType.String, elemento.PartitaIva);


                        Utils.Log.Write(cw.Command);

                        db.ExecuteNonQuery(cw);

                        if (cw.RowsAffected == 0)
                        {
                            throw new RubricaException(Properties.Resources.ConcurrencyException);
                        }
                        else
                        {
                            elemento.DataUltimaModifica = dataUltimaModifica;

                            // Aggiornamento delle emails
                            UpdateEmails(elemento, multicasella);

                            transaction.Commit();
                        }
                    }
                }
            }

            return(elemento);
        }
예제 #15
0
        /// <summary>
        /// Inserimento nuovo oggetto in tabella ElementiRubrica
        /// </summary>
        /// <param name="elemento"></param>
        /// <returns></returns>
        private static ElementoRubrica InternalInsert(ElementoRubrica elemento)
        {
            Dpa.DataAccess.Database db = RubricaDatabase.CreateDatabase();

            using (IDbConnection connection = db.GetConnection())
            {
                connection.Open();

                using (IDbTransaction transaction = connection.BeginTransaction())
                {
                    using (Dpa.DataAccess.DBCommandWrapper cw = db.GetStoredProcCommandWrapper(RubricaDatabase.GetSpNameForPackage(SP_INSERT)))
                    {
                        elemento.DataCreazione      = DateTime.Now;
                        elemento.DataUltimaModifica = DateTime.Now;

                        cw.AddInParameter("pCodice", DbType.String, elemento.Codice);
                        cw.AddInParameter("pDescrizione", DbType.String, elemento.Descrizione);
                        cw.AddInParameter("pIndirizzo", DbType.String, elemento.Indirizzo);
                        cw.AddInParameter("pCitta", DbType.String, elemento.Citta);
                        cw.AddInParameter("pCap", DbType.String, elemento.Cap);
                        cw.AddInParameter("pProvincia", DbType.String, elemento.Provincia);
                        cw.AddInParameter("pNazione", DbType.String, elemento.Nazione);
                        cw.AddInParameter("pTelefono", DbType.String, elemento.Telefono);
                        cw.AddInParameter("pFax", DbType.String, elemento.Fax);
                        //cw.AddInParameter("pEmail", DbType.String, elemento.Email);
                        cw.AddInParameter("pAOO", DbType.String, elemento.AOO);
                        cw.AddInParameter("pDataCreazione", DbType.DateTime, elemento.DataCreazione);
                        cw.AddInParameter("pDataUltimaModifica", DbType.DateTime, elemento.DataUltimaModifica);
                        cw.AddInParameter("pUtenteCreatore", DbType.String, Security.RubricaPrincipal.Current.Identity.Name);
                        cw.AddInParameter("pTipoCorrispondente", DbType.String, elemento.TipoCorrispondente.ToString());
                        cw.AddInParameter("pAmministrazione", DbType.String, elemento.Amministrazione);
                        if (elemento.Urls.Count > 0)
                        {
                            cw.AddInParameter("pUrl", DbType.String, elemento.Urls[0].Url);
                        }
                        else
                        {
                            cw.AddInParameter("pUrl", DbType.String, String.Empty);
                        }
                        if (string.IsNullOrEmpty(elemento.CHA_Pubblicato))
                        {
                            elemento.CHA_Pubblicato = "0";
                        }
                        cw.AddInParameter("pChaPubblica", DbType.String, elemento.CHA_Pubblicato);
                        cw.AddOutParameter("pId", DbType.Int32, 0);

                        //Emanuela: aggiunta campi partita iva e codice fiscale
                        cw.AddInParameter("pCodiceFiscale", DbType.String, elemento.CodiceFiscale);
                        cw.AddInParameter("pPartitaIva", DbType.String, elemento.PartitaIva);

                        Utils.Log.Write(cw.Command);

                        db.ExecuteNonQuery(cw);

                        if (cw.RowsAffected > 0)
                        {
                            elemento.Id = Convert.ToInt32(cw.GetParameterValue("pId"));

                            // Rimozione delle email e associazione delle nuove
                            if (!String.IsNullOrEmpty(elemento.Email) && elemento.Emails.Count(m => m.Email == elemento.Email) == 0)
                            {
                                elemento.Emails.Add(new EmailInfo(elemento.Email, true));
                            }

                            elemento.Emails.ForEach(d => InternalInsertEmail(d, elemento.Id));

                            // Commit transazione
                            transaction.Commit();
                        }
                    }
                }
            }

            return(elemento);
        }