/// <summary> /// Salvataggio delle operazioni effettuate in fase di modifica /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnSalva_Click(object sender, EventArgs e) { if (MessageBoxAction.MessageBoxWarningTriggered("Sei sicuro di voler salvare le modifiche ?") == DialogResult.OK) { if (SalvaDati()) { Home_Load(sender, e); } else { MessageBoxAction.MessageBoxErrorTriggered("Dati non salvati"); } } }
/// <summary> /// Apre una transazione e se vengono rispettate una serie di condizioni /// esegue la query con all'interno i parametri di animale /// inseriti all'interno della griglia di informazioni presente nella maschera. /// </summary> /// <returns></returns> private bool SalvaDati() { bool ret = false; connectToSql.Open(); SqlCommand command = connectToSql.CreateCommand(); SqlTransaction transaction; transaction = connectToSql.BeginTransaction(); command.Connection = connectToSql; //Assegna la transazione al comando command.Transaction = transaction; List <Animale> animale_list = new List <Animale>(); List <Proprietario> proprietario_list = new List <Proprietario>(); //Cicla sulle righe della griglia foreach (DataGridViewRow row in datagridPetAnagrafica.Rows) { //Se il valore di computed non è null, e quindi ha una riga non nuova //procede a verificare che il valore di nome sia non null, per verificare che la riga sia valorizzata if (FunzioniGenerali.CheckNullField(row, "ID_PROPRIETARIO")) { if (FunzioniGenerali.CheckNullField(row, "NOME_PROPRIETARIO") && FunzioniGenerali.CheckNullField(row, "NOME_ANIMALE")) { int n; string col_nome_animale = row.Cells["NOME_ANIMALE"].Value.ToString(); string col_nome_proprietario = row.Cells["NOME_PROPRIETARIO"].Value.ToString(); bool isNumeric = int.TryParse(col_nome_animale, out n); //Verifica che il nome non sia un campo numerico if (!isNumeric) { isNumeric = int.TryParse(col_nome_proprietario, out n); if (!isNumeric) { string col_soprannome_animale = row.Cells["SOPRANNOME"].Value.ToString(); string col_eta_animale = Convert.ToString(row.Cells["ETA_ANIMALE"].Value); string col_cognome_proprietario = row.Cells["COGNOME_PROPRIETARIO"].Value.ToString(); //Inizializza un nuovo animale e ne valorizza gli attributi Animale animale = new Animale(); animale.c_nome = col_nome_animale; animale.c_soprannome = col_soprannome_animale; //Ottengo l'id proprietario dell'animale animale.CheckPropAnimale(); //Inizializza un nuovo proprietario e ne valorizza gli attributi Proprietario proprietario = new Proprietario(); proprietario.c_nome = col_nome_proprietario; proprietario.c_cognome = col_cognome_proprietario; isNumeric = int.TryParse(col_eta_animale, out n); //Verifica che l'età sia un campo numerico if (isNumeric) { animale.n_eta = n; animale.CalcolaEtaAnimaleAnagraficaV1(); } animale_list.Add(animale); proprietario_list.Add(proprietario); } } } else { MessageBoxAction.MessageBoxWarningTriggered("Non è possibile procedere senza inserire il nome animale"); } break; } } try { string insert = string.Empty; //Aggiunge il proprietario dell'animale foreach (Proprietario proprietario_in_lista in proprietario_list) { insert = proprietario_in_lista.InsertProprietarioAnagrafica(); if (!String.IsNullOrEmpty(insert)) { command.CommandText = insert; command.ExecuteNonQuery(); } } //Cicla sugli oggetti nella lista Animale foreach (Animale animale_in_lista in animale_list) { //Ne ottiene il valore passandolo alla SqlInsertGenerator //Che genererà la query di insert con i parametri contenuti nell'oggetto animale_in_lista //La query verrà eseguita sotto transazione insert = animale_in_lista.InsertAnimaleAnagrafica(); if (!String.IsNullOrEmpty(insert)) { //Assegna il comando command.CommandText = insert; command.ExecuteNonQuery(); } } //esegue la commit transaction.Commit(); ret = true; } catch (Exception ex) { MessageBoxAction.MessageBoxErrorTriggered(ex.Message); try { transaction.Rollback(); } catch (Exception exc) { MessageBoxAction.MessageBoxErrorTriggered(exc.Message); } } connectToSql.Close(); return(ret); }