/// <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(); } } } } }
/// <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(); } } } } }
/// <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); }
/// <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); }
/// <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()); }
/// <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); }
/// <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); } } }
/// <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); } } }
/// <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); }
/// <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); } } }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }