private bool ExtractTriplaDisponibilità(CameraTriplaDisponibilitaDB triplaDisponibilità,
                                            SqlConnection session, SqlTransaction transaction, DateTime day, DateTime[] range, ref int triplaAvalaible,
                                            ref double prezzoTotaleTripla)
    {
        Camere camera = triplaDisponibilità.SelectCamera(session, transaction, day);

        if (camera != null && camera.Quantita > 0)
        {
            if (range.Length >= camera.SoggiornoMinimo)
            {
                triplaAvalaible    = triplaAvalaible + 1;
                prezzoTotaleTripla = prezzoTotaleTripla + camera.Prezzo;
            }
            else
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("Nelle date selezionate il soggiorno minimo è di:" +
                              camera.SoggiornoMinimo + " notti.");
                lblTripla.Text             = sb.ToString();
                pnlTripla.Visible          = true;
                ButtonT.Visible            = false;
                lblRassicurazioneT.Visible = false;
                return(true);
            }
        }
        return(false);
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        using (var session = DataBaseUtilities.OpenSession())
        {
            using (var transaction = session.BeginTransaction())

            {
                var number = DataBaseUtilities.GetNumeroPrenotazioni();
                lblNumeroUtenti.ForeColor = Color.WhiteSmoke;
                lblNumeroUtenti.Text      =
                    "Prenota con noi. Il nostro sistema di prenotazione è già stato utilizzato da: ";


                lblNumero.Text = number.ToString() + " ";

                PhotoUtils.GetImages("/luna/", divCameraMatrimoniale);
                PhotoUtils.GetImages("/terrazza/", ulApp1);
                PhotoUtils.GetImages("/arcobaleno/", ulApp2);
                PhotoUtils.GetImages("/sole/", ulTripla);
                PhotoUtils.GetImages("/edera/", ulQuadrupla);
                //PhotoUtils.GetImages("/caminetto/", ulApp2);
                var    checkIn    = Convert.ToDateTime(Request.QueryString["i"]);
                var    checkOut   = Convert.ToDateTime(Request.QueryString["o"]);
                int    numeroAdu  = 0;
                int    numeroBam  = 0;
                string etaBambini = "";
                if (!string.IsNullOrEmpty(Request.QueryString["na"]))
                {
                    numeroAdu = Convert.ToInt32(Request.QueryString["na"]);
                }
                if (!string.IsNullOrEmpty(Request.QueryString["nb"]))
                {
                    numeroBam = Convert.ToInt32(Request.QueryString["nb"]);
                }

                if (!string.IsNullOrEmpty(Request.QueryString["eb"]))
                {
                    etaBambini = (Request.QueryString["eb"]).ToString();
                }
                if (checkIn != DateTime.MinValue && checkOut != DateTime.MinValue)
                {
                    ctrlPrenotazioni.CheckInDate   = checkIn;
                    ctrlPrenotazioni.CheckOutDate  = checkOut;
                    ctrlPrenotazioni.NumeroAdulti  = numeroAdu;
                    ctrlPrenotazioni.NumeroBambini = numeroBam;
                    ctrlPrenotazioni.EtaBambini    = etaBambini;

                    ctrlCameraMatrimoniale.DataArrivo = checkIn;
                    ctrlapp1.DataArrivo  = checkIn;
                    ctrlapp2.DataArrivo  = checkIn;
                    Tripla.DataArrivo    = checkIn;
                    Quadrupla.DataArrivo = checkIn;

                    ctrlCameraMatrimoniale.DataPartenza = checkOut;
                    ctrlapp1.DataPartenza  = checkOut;
                    ctrlapp2.DataPartenza  = checkOut;
                    Tripla.DataPartenza    = checkOut;
                    Quadrupla.DataPartenza = checkOut;

                    ctrlCameraMatrimoniale.numeroBambini = numeroBam;
                    ctrlCameraMatrimoniale.numeroAdulti  = numeroAdu;
                    ctrlCameraMatrimoniale.etaBambini    = etaBambini;

                    ctrlapp1.NumeroBambini = numeroBam;
                    ctrlapp1.NumeroAdulti  = numeroAdu;
                    ctrlapp1.EtaBambini    = etaBambini;

                    ctrlapp2.NumeroAdulti  = numeroAdu;
                    ctrlapp2.NumeroBambini = numeroBam;
                    ctrlapp2.EtaBambini    = etaBambini;

                    Tripla.numeroAdulti  = numeroAdu;
                    Tripla.numeroBambini = numeroBam;
                    Tripla.etaBambini    = etaBambini;

                    Quadrupla.numeroAdulti  = numeroAdu;
                    Quadrupla.numeroBambini = numeroBam;
                    Quadrupla.etaBambini    = etaBambini;

                    CameraMatrimonialeDisponibilitaDB    cameraMatrimonialeDisponibilita = new CameraMatrimonialeDisponibilitaDB();
                    AppartamentoUnaCameraDisponibilitaDB app1Disponibilita      = new AppartamentoUnaCameraDisponibilitaDB();
                    AppartamentoDueCamereDisponibilitaDB app2Disponibilita      = new AppartamentoDueCamereDisponibilitaDB();
                    CameraTriplaDisponibilitaDB          triplaDisponibilita    = new CameraTriplaDisponibilitaDB();
                    CameraQuadruplaDisponibilitaDB       quadruplaDisponibilita = new CameraQuadruplaDisponibilitaDB();
                    var numeroAdulti  = numeroAdu;
                    var numeroBambini = numeroBam;
                    var checkInDate   = checkIn;
                    var checkOutDate  = checkOut;
                    var numeroOspiti  = numeroAdulti + numeroBambini;
                    var range         = Enumerable.Range(0,
                                                         Convert.ToDateTime(checkOutDate).Subtract(Convert.ToDateTime(checkInDate)).Days)
                                        .Select(offset => Convert.ToDateTime(checkInDate).AddDays(offset))
                                        .ToArray();
                    int    cameraAvailable       = 0;
                    int    cameraQuantita        = 0;
                    int    app1Available         = 0;
                    int    app2Available         = 0;
                    int    triplaAvailable       = 0;
                    int    quadruplaAvailable    = 0;
                    double prezzoTotale          = 0;
                    double prezzoTotaleApp1      = 0;
                    double prezzoTotaleApp2      = 0;
                    double prezzoTotaleTripla    = 0;
                    double prezzoTotaleQuadrupla = 0;
                    int    i = 0;

                    ctrlCameraMatrimoniale.DataArrivo   = Convert.ToDateTime(checkInDate);
                    ctrlCameraMatrimoniale.DataPartenza = Convert.ToDateTime(checkOutDate);



                    //    //Cliente cliente;
                    foreach (var day in range)
                    {
                        if (ExtractCameraDisponibilità(cameraMatrimonialeDisponibilita, session, transaction, day, range, ref cameraAvailable, ref prezzoTotale, ref cameraQuantita))
                        {
                        }
                        else
                        {
                            ResultForCamera(numeroOspiti, cameraAvailable, range, prezzoTotale, cameraQuantita);
                        }
                        if (ExtractApp1Disponibilità(app1Disponibilita, session, transaction, day, range, ref app1Available, ref prezzoTotaleApp1))
                        {
                        }
                        else
                        {
                            ResultForAppartamento1(numeroOspiti, app1Available, range, prezzoTotaleApp1);
                        }
                        if (ExtractApp2Disponibilità(app2Disponibilita, session, transaction, day, range, ref app2Available, ref prezzoTotaleApp2))
                        {
                        }
                        else
                        {
                            ResultForAppartamento2(numeroOspiti, app2Available, range, prezzoTotaleApp2);
                        }
                        if (ExtractTriplaDisponibilità(triplaDisponibilita, session, transaction, day, range, ref triplaAvailable, ref prezzoTotaleTripla))
                        {
                        }
                        else
                        {
                            ResultForTripla(numeroOspiti, triplaAvailable, range, prezzoTotaleTripla);
                        }

                        if (ExtractQuadruplaDisponibilità(quadruplaDisponibilita, session, transaction, day, range, ref quadruplaAvailable, ref prezzoTotaleQuadrupla))
                        {
                        }
                        else
                        {
                            ResultForQuadrupla(numeroOspiti, quadruplaAvailable, range, prezzoTotaleQuadrupla);
                        }
                    }
                }
                else
                {
                    pnlCameraMatrimoniale.Visible = false;
                    pnlAppartamento1.Visible      = false;
                    pnlAppartamento2.Visible      = false;
                    pnlTripla.Visible             = false;
                    pnlQuadrupla.Visible          = false;
                }
            }
        }
    }