Creare un gestionale per strutture ricettive in C# – #23 – Carica Prenotazioni

Creare un gestionale per strutture ricettive in C# – #23 – Carica Prenotazioni

Creare un gestionale per strutture ricettive in C# – #23 – Carica Prenotazioni: Parte numero 23 di questo tutoria che riprende dopo quasi un anno.

Creare un gestionale per strutture ricettive in C# – #23 – Carica Prenotazioni

Nel tutorial precedente avevamo corretto la query di inserimento dei dati relativi alle prenotazioni nel database.

Ora che finalmente il database ha i record relativi alle prenotazioni possiamo procere con il caricamento di queste informazioni nella DataGridView.

La maggior parte delle operazioni presenti in questo tutorial le abbiamo viste già nel tutorial delle camere.

Per questo motivo la maggior parte del lavoro è un copia e incolla con la modifica dei dati.

Per semplificare il lavoro di inserimento andrò ad inserire anche qui i codici presenti in questo video tutorial.

In questo modo chi segue utilizzando gli stessi nomi può fare un semplice copia e incolla.

Invia le prenotazioni alla DataGridView

Il primo step di questo tutorial riguarda proprio l’invio dei dati dal database alla DataGridView.

Per farlo aggiungiamo una funzione da richiamare all’apertura del form.

private async void CaricaDatabasePrenotazioni()
        {
            dataElencoPrenotazioni.Rows.Clear();
            //CONNESSIONE DATABASE
            string stringa_connessione = Properties.Settings.Default.CamereConnectionString;
            SqlConnection connessioneDB = new SqlConnection(stringa_connessione);
            string sqlQuery = "SELECT * FROM [Prenotazioni]";

            using (connessioneDB)
            {
                try
                {
                    await connessioneDB.OpenAsync();
                    var InviaQuery = new SqlCommand(sqlQuery, connessioneDB);
                    SqlDataReader DatiTabellaPrenotazioni = await InviaQuery.ExecuteReaderAsync();
                    while (DatiTabellaPrenotazioni.Read())
                    {
                        string valoreId = DatiTabellaPrenotazioni.GetString(0);
                        string valoreNome = DatiTabellaPrenotazioni.GetString(1);
                        string valoreCognome = DatiTabellaPrenotazioni.GetString(2);
                        DateTime valoreDataArrivo = DatiTabellaPrenotazioni.GetDateTime(14);
                        int valoreNumeroNotti = DatiTabellaPrenotazioni.GetInt32(16);
                        int valoreNumeroOspiti = DatiTabellaPrenotazioni.GetInt32(17);
                        string valoreCamera = DatiTabellaPrenotazioni.GetString(18);
                        decimal valoreCostoTotale = DatiTabellaPrenotazioni.GetDecimal(25);
                        DateTime valoreDataPartenza = DatiTabellaPrenotazioni.GetDateTime(15);
                        string valoreCostiExtra = DatiTabellaPrenotazioni.GetString(20);
                        string valoreScontiExtra = DatiTabellaPrenotazioni.GetString(21);
                        int valoreTasseSoggiorno = DatiTabellaPrenotazioni.GetInt32(22);
                        string valoreMotivoEsenzione = DatiTabellaPrenotazioni.GetString(23);
                        string valoreMetodoPagamento = DatiTabellaPrenotazioni.GetString(24);
                        string valoreIndirizzo = DatiTabellaPrenotazioni.GetString(3);
                        string valoreCitta = DatiTabellaPrenotazioni.GetString(4);
                        string valoreCap = DatiTabellaPrenotazioni.GetString(5);
                        string valoreNazione = DatiTabellaPrenotazioni.GetString(6);
                        DateTime valoreDataNascita = DatiTabellaPrenotazioni.GetDateTime(7);
                        string valoreNazionalita = DatiTabellaPrenotazioni.GetString(8);
                        string valoreTelefono = DatiTabellaPrenotazioni.GetString(9);
                        string valoreEmail = DatiTabellaPrenotazioni.GetString(10);
                        string valoreTipoDocumento = DatiTabellaPrenotazioni.GetString(11);
                        string valoreCodiceDocumento = DatiTabellaPrenotazioni.GetString(12);
                        string valoreDocumento = DatiTabellaPrenotazioni.GetString(13);
                        string valoreNote = DatiTabellaPrenotazioni.GetString(19);
                        bool ValoreFinaleTasseSoggiorno;
                        if (valoreTasseSoggiorno == 0) { ValoreFinaleTasseSoggiorno = false; } else { ValoreFinaleTasseSoggiorno = true; }
                        string[] NuovaCamera = { valoreId, valoreNome, valoreCognome, valoreDataArrivo.ToString(), valoreNumeroNotti.ToString(),
                            valoreNumeroOspiti.ToString(), valoreCamera, valoreCostoTotale.ToString(), valoreDataPartenza.ToString(),
                            valoreCostiExtra, valoreScontiExtra, ValoreFinaleTasseSoggiorno.ToString(), valoreMotivoEsenzione,
                            valoreMetodoPagamento, valoreIndirizzo, valoreCitta, valoreCap, valoreNazione, valoreDataNascita.ToString(),
                            valoreNazionalita, valoreTelefono,valoreEmail,valoreTipoDocumento, valoreCodiceDocumento, valoreDocumento ,valoreNote};
                        dataElencoPrenotazioni.Rows.Add(NuovaCamera);
                    }
                }
                catch (SqlException ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    if (connessioneDB.State == ConnectionState.Open)
                    {
                        connessioneDB.Close();
                    }
                    lblNumeroPrenotazioni.Text = dataElencoPrenotazioni.Rows.Count.ToString();
                }
            }
        }

Aggiunta Id alla DataGridView

Per poter procedere con il tutorial e permettere la modifica e l’eliminazione delle registrazioni dal database è necessario aggiungere l’id alla datagridview.

Rimozione Record dal database

Utilizzando l’id della registrazione possiamo inviare il comando di eliminazione al database.

private void btnRimuoviPrenotazione_Click(object sender, EventArgs e)
        {
            //CONNESSIONE DATABASE
            string stringa_connessione = Properties.Settings.Default.CamereConnectionString;
            SqlConnection connessioneDB = new SqlConnection(stringa_connessione);
            if (connessioneDB.State != ConnectionState.Open)
            {
                connessioneDB.Open();
            }
            //QUERY DATABASE
            // DELETE FROM [tblCamere] WHERE ID = 'valore';
            string IdRimozione = dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[0].Value.ToString();
            string sqlQuery = "DELETE FROM [Prenotazioni] WHERE [Id] = '" + IdRimozione + "';";
            SqlCommand QueryRimozionePrenotazione = new SqlCommand(sqlQuery, connessioneDB);
            try
            {
                if (MessageBox.Show("Sei sicuro di voler rimuovere la prenotazione con ID " + IdRimozione, "Rimuovere la prenotazione?", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    QueryRimozionePrenotazione.ExecuteNonQuery();
                }
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.Number.ToString());
            }
            connessioneDB.Close();
            // RICARICA DATABASE
            CaricaDatabasePrenotazioni();
        }

Modifica Record nel database

La modifica dei record del database, prevede la possibilità di inviare nuovamente i dati agli input per poterli modificare.

La maggior parte dei dati può essere inviata facilmente o tramite una conversione nel formato corretto.

Sconti e Costi Extra invece prevedono un attenzione maggiore, per questo motivo li vedremo nel prossimo tutorial.

private void btnModificaPrenotazione_Click(object sender, EventArgs e)
        {
            if (pnlAggiungiPrenotazioni.Visible == false)
            {
                pnlAggiungiPrenotazioni.Visible = true;
                pnlAggiungiPrenotazioni.Dock = DockStyle.Left;
                btnAggiungi.Tag = "modifica";
                CaricaDatiPrenotazioneSelezionata();
            }
            else
            {
                pnlAggiungiPrenotazioni.Visible = false;
            }
        }

        private void CaricaDatiPrenotazioneSelezionata()
        {
            //AGGIUNTI DATI PRENOTAZIONE

            //ID
            txtNome.Text = dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[1].Value.ToString();
            txtCognome.Text = dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[2].Value.ToString();
            dateArrivo.Value = Convert.ToDateTime(dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[3].Value.ToString());
            numNotti.Value = Convert.ToInt32(dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[4].Value.ToString());
            numOspiti.Value = Convert.ToInt32(dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[5].Value);
            cmbCamera.Text = dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[6].Value.ToString();
            txtTotale.Text = dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[7].Value.ToString();
            datePartenza.Value = Convert.ToDateTime(dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[8].Value.ToString());
            //CostiExtra
            //ScontiExtra
            if (dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[11].Value.ToString() == "True")
            { chkTasse.Checked = true; }
            else
            { chkTasse.Checked = false; }
            txtMotivoEsenzione.Text = dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[12].Value.ToString();
            cmbMetodoPagamento.Text = dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[13].Value.ToString();
            txtIndirizzo.Text = dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[14].Value.ToString();
            txtCitta.Text = dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[15].Value.ToString();
            txtCap.Text = dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[16].Value.ToString();
            cmbNazione.Text = dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[17].Value.ToString();
            dateNascita.Value = Convert.ToDateTime(dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[18].Value.ToString());
            cmbNazionalita.Text = dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[19].Value.ToString();
            txtTelefono.Text = dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[20].Value.ToString();
            txtEmail.Text = dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[21].Value.ToString();
            cmbTipoDocumento.Text = dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[22].Value.ToString();
            txtCodiceDocumento.Text = dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[23].Value.ToString();
            txtCaricaDocumento.Text = dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[24].Value.ToString();
            txtNote.Text = dataElencoPrenotazioni.Rows[dataElencoPrenotazioni.SelectedRows[0].Index].Cells[25].Value.ToString();
        }

Codice Sorgente

Il codice sorgente aggiornato a questo tutorial è scaricabile da questo link:

Video

Claudio Masci

Sono innanzitutto un appassionato di informatica e tecnologia in generale. Lavoro in ambito informatico da circa 16 anni, spaziando in diversi campi, andando dalla programmazione web, allo sviluppo di software, dalla grafica alla modellazione 3d ed al video editing, ho sempre voluto approfondire ogni aspetto e questo mi ha permesso di lavorare in diversi ambiti informatici.

Rispondi