Creare un gestionale per strutture ricettive in C# – 24 – Modifica costi e sconti

Creare un gestionale per strutture ricettive in C# #24 - Modifica costi e sconti

Creare un gestionale per strutture ricettive in C# – 24 – Modifica costi e sconti: La registrazione degli ospiti è quasi completata, in questo tutorial andiamo a modificare il caricamento di costi extra e sconti.

Creare un gestionale per strutture ricettive in C# – 24 – Modifica costi e sconti

Il codice che avevamo creato nei precedenti tutorial ci ha permesso di reimportare i dati dalla DataGridView ai campi per la modifica.

Erano rimasti fuori da questa azione però Costi Extra e Sconti.

Questo perchè per questi 2 campi non è sufficiente copiare ed incollare il contenuto, ma vanno elaborati.

Infatti per inserire i dati avevamo unito tutte le voci degli sconti e dei costi in un unico campo separato da un punto e virgola.

In questo modo però quando reimportiamo tutto non è possibile separare automaticamente le voci.

Abbiamo quindi la necessità di creare una funzione che separi le varie voci e che vada poi ad assegnare nuovamente i relativi valori di prezzo e sconto.

Query di Aggiornamento Database

La prima modifica di questo tutorial è la creazione della query che va a modificare i valori presenti nel database, per farlo abbiamo scritto:

sqlQuery = "UPDATE [Prenotazioni] SET [Id] = '" + IdPrenotazione + "', [Nome] = '" + CorreggiApici(txtNome.Text) + "', [Cognome] = '"
                    + CorreggiApici(txtCognome.Text) + "', [Indirizzo] = '" + CorreggiApici(txtIndirizzo.Text) + "', [Citta] = '"
                    + CorreggiApici(txtCitta.Text) + "', [CAP] = '" + txtCap.Text + "', [Nazione] = '" + CorreggiApici(cmbNazione.Text)
                    + "', [DataNascita] = '" + ConvertiData(dateNascita.Value.Year, dateNascita.Value.Month, dateNascita.Value.Day)
                    + "', [Nazionalita] = '" + CorreggiApici(cmbNazionalita.Text) + "', [Telefono] = '" + txtTelefono.Text
                    + "', [Email] = '" + txtEmail.Text + "', [TipoDocumento] = '" + CorreggiApici(cmbTipoDocumento.Text)
                    + "', [CodiceDocumento] = '" + txtCodiceDocumento.Text + "', [Documento] = '" + txtCaricaDocumento.Text
                    + "', [DataArrivo] = '" + ConvertiData(dateArrivo.Value.Year, dateArrivo.Value.Month, dateArrivo.Value.Day)
                    + "', [DataPartenza] = '" + ConvertiData(datePartenza.Value.Year, datePartenza.Value.Month, datePartenza.Value.Day)
                    + "', [NumeroNotti] = '" + numNotti.Value + "', [NumeroOspiti] = '" + "', [Camera] = '" + CorreggiApici(cmbCamera.Text)
                    + "', [Note] = '" + txtNote.Text + "', [CostiExtra] = '" + CorreggiApici(StringaCostiExtra) + "', [Sconti]"
                    + CorreggiApici(StringaScontiExtra) + "', [TasseSoggiorno] = '" + SwitchTasseSoggiorno + "', [MotivoEsenzione] = '"
                    + CorreggiApici(txtMotivoEsenzione.Text) + "', [MetodoPagamento] = '" + cmbMetodoPagamento.Text
                    + "', [Totale] = '" + ConvertiPrezzoFinale(txtTotale) + "WHERE [Id] = '" + IdPrenotazione + "';";

Questa query va a prendere l’id dalla variabile creata e lo utilizza per modificare i campi nel database.

Modifica della visualizzazione di Sconti e Costi Extra

Per permettere il riconoscimento univoco di uno sconto o di un costo, abbiamo la necessità di accedere al suo Id.

Per questo motivo andremo ad aggiungere l’id al testo visualizzato.

Per farlo modifichiamo la stringa associata al tasto Aggiunti degli sconti e degli extra da:

while (DatiTabellaScontiExtra.Read())
                    {
                        cmbExtra.Items.Add(new ExtraScontiItem(DatiTabellaScontiExtra.GetString(1), DatiTabellaScontiExtra.GetDecimal(2), DatiTabellaScontiExtra.GetInt32(3)));
                    }

a:

while (DatiTabellaScontiExtra.Read())
                    {
                        cmbExtra.Items.Add(new ExtraScontiItem(DatiTabellaScontiExtra.GetInt32(0) + ":" + DatiTabellaScontiExtra.GetString(1), DatiTabellaScontiExtra.GetDecimal(2), DatiTabellaScontiExtra.GetInt32(3)));
                    }

Funzione di modifica della stringa costi e sconti

La seguente funzione analizza la stringa con l’elenco d icosti e sconti e la scompone per l’utilizzo.

Il primo passaggio è quello di scomporre la stringa in diversi elementi, e per farlo creiamo un array.

Per ogni elemento inserito nell’array andiamo a verificare se è presente il simbolo : se fosse presente controlliamo che prima ci siano dei numeri.

In questo modo possiamo sapere se quel campo fa parte del nuovo metodo di inserimento o del vecchio.

Andiamo poi a confrontare il testo dell’array con quello della combobox per trovare il valore corrispondente ed inserirlo quindi nella listview.

   void ModificaCostiSconti(string TipoExtra, string ElencoExtra)
        {
            string[] ArrayExtra = ElencoExtra.Split(';');

                for (int a = 0; a < ArrayExtra.Length; a++)
                {
                    if (ArrayExtra[a].Contains(":"))
                    {
                        string CaratteriIniziali = ArrayExtra[a].Remove(ArrayExtra[a].IndexOf(":"));
                        bool IndiceNumerico = int.TryParse(CaratteriIniziali, out _);
                        if (IndiceNumerico == true)
                        {
                            //NUOVO METODO
                            CaricaDatabaseCostiSconti();
                            for (int b = 0; b < cmbExtra.Items.Count; b++)
                            {
                                if (ArrayExtra[a] == cmbExtra.GetItemText(cmbExtra.SelectedIndex))
                                {
                                    var ExtraSelezionato = (ExtraScontiItem)cmbExtra.SelectedItem;
                                if (TipoExtra == "costo")
                                {
                                    lstCosti.Items.Add(new ExtraScontiItem(ExtraSelezionato.ToString(), ExtraSelezionato.PrezzoExtra(), ExtraSelezionato.TipologiaExtra()));
                                }
                                else
                                {
                                    lstSconti.Items.Add(new ExtraScontiItem(ExtraSelezionato.ToString(), ExtraSelezionato.PrezzoExtra(), ExtraSelezionato.TipologiaExtra()));
                                }
                                }
                            }
                        }
                        else
                        {
                            // VECCHIO METODO
                            CaricaDatabaseCostiSconti();
                            for (int b = 0; b < cmbExtra.Items.Count; b++)
                            {
                                string ElementoDaControllare = cmbExtra.GetItemText(cmbExtra.SelectedIndex);
                                if (ArrayExtra[a] == ElementoDaControllare.Substring(ElementoDaControllare.IndexOf(":")))
                                {
                                    var ExtraSelezionato = (ExtraScontiItem)cmbExtra.SelectedItem;
                                if (TipoExtra == "costo")
                                {
                                    lstCosti.Items.Add(new ExtraScontiItem(ExtraSelezionato.ToString(), ExtraSelezionato.PrezzoExtra(), ExtraSelezionato.TipologiaExtra()));
                                }
                                else
                                {
                                    lstSconti.Items.Add(new ExtraScontiItem(ExtraSelezionato.ToString(), ExtraSelezionato.PrezzoExtra(), ExtraSelezionato.TipologiaExtra()));
                                }
                            }
                            }
                        }
                    }

                }

        }

Video