Creare un gestionale per strutture ricettive in C# – 17 – Database Prenotazioni: Dopo aver inserito gli elementi di base del form Prenotazioni, andiamo a creare il database ad esso associato.
Il database per le prenotazioni degli utenti è molto semplice, ed è composto per la maggior parte da campi di tipo NVARCHAR.
Abbiamo già visto come creare la tabella per le camere e per sconti e costi extra, quello che dovremo fare non è molto diverso.
L’unico problema potrebbe essere rappresentato dal documento d’identità.
Per il documento, che dovrebbe contenere un file (ad esempio jpg o pdf) abbiamo 2 scelte:
- Creare un tipo di BLOB ed inserire il file all’interno del database
- Creare una colonna NVARCHAR ed inserire solo il link al file che invece sarà copiato in una cartella
Non c’è un metodo giusto ed uno sbagliato, sono 2 scelte diverse.
Il primo metodo ha a suo vantaggio che il file sarà più protetto, essendo inserito direttamente nel database ed associato all’id della prenotazione.
Tenendolo invece in una cartella è possibile che l’utente possa sbagliare e cancellarlo o sovrascriverlo.
Di contro invece, spesso capita (soprattutto quando il database è online), che ci sia un limite alle dimensioni dello stesso.
Quindi inserire tanti file al suo interno potrebbe portare facilmente a raggiungere la quota limite.
Per questo progetto (anche se il database è locale e quindi non ci sarebbero limiti alle sue dimensioni), ho scelto comunque di creare un campo NVARCHAR e di inserire il file del documento all’esterno del database (cosa che aiuta a tenerlo di piccole dimensioni).
Creare un gestionale per strutture ricettive in C# – 17 – Database Prenotazioni
Andiamo quindi nel database del nostro programma e creiamo una nuova tabella, il codice da usare è:
CREATE TABLE [dbo].[Prenotazioni] (
[Id] NVARCHAR (200) NOT NULL,
[Nome] NVARCHAR (200) NULL,
[Cognome] NVARCHAR (200) NULL,
[Indirizzo] NVARCHAR (300) NULL,
[Citta] NVARCHAR (300) NULL,
[CAP] NVARCHAR (10) NULL,
[Nazione] NVARCHAR (200) NULL,
[DataNascita] DATE NULL,
[Nazionalita] NVARCHAR (200) NULL,
[Telefono] NVARCHAR (80) NULL,
[Email] NVARCHAR (300) NULL,
[TipoDocumento] NVARCHAR (100) NULL,
[CodiceDocumento] NVARCHAR (50) NULL,
[Documento] NVARCHAR (600) NULL,
[DataArrivo] DATE NULL,
[DataPartenza] DATE NULL,
[NumeroNotti] INT NULL,
[NumeroOspiti] INT NULL,
[Camera] NVARCHAR (200) NULL,
[Note] NVARCHAR (2000) NULL,
[CostiExtra] NVARCHAR (2000) NULL,
[Sconti] NVARCHAR (2000) NULL,
[TasseSoggiorno] INT NULL,
[MotivoEsenzione] NVARCHAR (1000) NULL,
[MetodoPagamento] NVARCHAR (300) NULL,
[Totale] FLOAT (53) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
Dopo aver creato la nuova tabella per le prenotazioni, possiamo tornare al nostro form, e preparare il pannello per l’aggiunta di una nuova prenotazione.
In questo caso quello che faremo è controllare che i campi inseriti non siano vuoti e i valori al loro interno siano corretti.
// CONTROLLO PRESENZA NOME E COGNOME
if (txtNome.Text.Length < 2 || txtCognome.Text.Length < 2)
{
MessageBox.Show("I campi Nome e Cognome non possono contenere meno di 2 caratteri!");
return;
}
// CONTROLLO DATA ARRIVO E DATA PARTENZA
if (DateTime.Compare(dateArrivo.Value, DateTime.Now) < 0)
{
MessageBox.Show("La data di arrivo non può essere antecedente al giorno stesso.");
return;
}
if (DateTime.Compare(datePartenza.Value, dateArrivo.Value) < 0)
{
MessageBox.Show("La data di partenza non può essere antecedente alla data di arrivo.");
return;
}
// CONTROLLO NUMERO NOTTI E NUMERO OSPITI
if (numNotti.Value < 1 || numOspiti.Value < 1)
{
MessageBox.Show("I campi Notti ed Ospiti non possono essere inferiori ad 1!");
return;
}
// CONTROLLO CAMERA SCELTA
if (cmbCamera.Text.Length < 1)
{
MessageBox.Show("Non è stata selezionata la camera dell'ospite.");
return;
}
// CONTROLLO TOTALE
if (txtTotale.Text.Length < 1)
{
MessageBox.Show("Non è stato inserito il costo totale della prenotazione.");
return;
}
// CREA ID
// DATA ARRIVO + NOME + COGNOME (20210423MarioRossi)
// CONTROLLARE NOME E COGNOME PER EVENTUALE PRESENZA CARATTERI NON CONSENTITI
string IDCliente = dateArrivo.Value.Year + dateArrivo.Value.Month + dateArrivo.Value.Day + txtNome.Text + txtCognome.Text;
MessageBox.Show(IDCliente);
Come prima cosa controlliamo che i campi Nome e Cognome abbiano almeno 2 caratteri.
Passando alla data confrontiamo la data di arrivo con il giorno di inserimento, per evitare che possano essere inserite prenotazioni antecedenti.
Poi confrontiamo data di arrivo e data di partenza per assicurarci che la data di partenza sia lo stesso giorno o successiva alla data di arrivo.
Continuiamo verificando che il numero degli ospiti e delle notti sia almeno 1, poi controlliamo che sia stata inserita una camera e che sia presente il prezzo.
Alla fine andiamo a creare l’ID prendendo la data di arrivo ed aggiungendo nome e cognome, in modo da ottenere un ID Del tipo:
- Data Arrivo: 23/04/2021
- Nome: Mario
- Cognome: Rossi
- ID: 20210424MarioRossi