private void _buttonOK_Click(object sender, EventArgs e)
 {
     if (CheckParameters())
     {
         DateTime dataFine = _dateTimePickerFinePeriodo.Value;
         PrenotazionePeriodica prenotazionePeriodica = new PrenotazionePeriodica(_prenotazioniSingole, dataFine);
         _controllerPrenotazione.AggiungiPrenotazionePeriodica(prenotazionePeriodica);
     }
 }
Esempio n. 2
0
        private void _buttonOK_Click(object sender, EventArgs e)
        {
            if (CheckParameters())
            {
                DateTime dataFine = _dateTimePickerFinePeriodo.Value;
                PrenotazionePeriodica prenotazionePeriodica = new PrenotazionePeriodica(_idPrenotazione, _selectedClienteRegistrato, _selectedSala, _dateTimePickerInizioPeriodo.Value, _dateTimePickerFinePeriodo.Value, new List <PrenotazioneSingola>());
                _controllerPrenotazione.AggiungiPrenotazionePeriodica(prenotazionePeriodica, _prenotazioniSingole);
            }

            this.Close();
        }
Esempio n. 3
0
        public bool UpdatePrenotazionePeriodica(PrenotazionePeriodica newPrenotazionePeriodica)
        {
            foreach (Prenotazione p in CentroSaleProve.GetIstance().Agenda.Prenotazioni)
            {
                if (p.IdPrenotazione == newPrenotazionePeriodica.IdPrenotazione && p.GetType() == typeof(PrenotazionePeriodica))
                {
                    _prenotazionePersister.GetRemover("XML").RemovePrenotazione(p);
                    _prenotazionePersister.GetSaver("XML").SavePrenotazionePeriodica(newPrenotazionePeriodica);
                    break;
                }
            }

            return(true);
        }
Esempio n. 4
0
            public void SavePrenotazionePeriodica(PrenotazionePeriodica prenotazione)
            {
                PrenotazionePeriodica prenotazionePeriodicaToSave = prenotazione;

                XmlElement prenotazionePeriodicaNode = _xmlDocument.CreateElement("PrenotazionePeriodica");

                XmlElement IdPrenotazionePeriodicaNode = _xmlDocument.CreateElement("IdPrenotazione");

                IdPrenotazionePeriodicaNode.InnerText = prenotazione.IdPrenotazione;

                XmlElement clienteNode = _xmlDocument.CreateElement("Cliente");
                XmlElement salaNode    = _xmlDocument.CreateElement("Sala");

                //Sfrutto il metodo CreaNodoCliente fatto in precedenza per creare un nodo di cliente, passando come prenotazione singola una qualsiasi
                //prenotazione singola interna a prenotazione periodica, sapendo a priori che il cliente sarà sicuramente un cliente registrato
                CreaNodoCliente(clienteNode, prenotazione.Prenotazioni.First());

                //stesse considerazioni per la sala, a differenza che non ce alcuna distinzione
                CreaNodoSala(salaNode, prenotazione.Prenotazioni.First());

                XmlElement dataFineElement   = _xmlDocument.CreateElement("DataFine");
                XmlElement dataInizioElement = _xmlDocument.CreateElement("DataInizio");

                dataFineElement.InnerText   = prenotazione.DataFine.ToShortDateString();
                dataInizioElement.InnerText = prenotazione.DataInizio.ToShortDateString();

                //Appendo inizialmente i nodi creati
                prenotazionePeriodicaNode.AppendChild(IdPrenotazionePeriodicaNode);
                prenotazionePeriodicaNode.AppendChild(clienteNode);
                prenotazionePeriodicaNode.AppendChild(salaNode);
                prenotazionePeriodicaNode.AppendChild(dataInizioElement);
                prenotazionePeriodicaNode.AppendChild(dataFineElement);


                foreach (PrenotazioneSingola ps in prenotazionePeriodicaToSave.Prenotazioni)
                {
                    XmlElement prenotazioneSingolaNode = _xmlDocument.CreateElement("PrenotazioneSingola");
                    CreaNodoPrenotazioneSingolaForPrenotazionePeriodica(ps, prenotazioneSingolaNode, prenotazionePeriodicaNode);
                }

                _xmlDocument.DocumentElement.InsertAfter(prenotazionePeriodicaNode, _xmlDocument.DocumentElement.LastChild);
                _xmlDocument.Save(_fileName);
            }
Esempio n. 5
0
        internal void UpdatePrenotazionePeriodica(PrenotazioneSingola newPrenotazioneSingola, PrenotazioneSingola oldPrenotazioneSingola)
        {
            DialogResult result = DialogResult.No;

            if (CheckPrenotazione(newPrenotazioneSingola))
            {
                result = MessageBox.Show("Confermare la modifica?", "Modifica Prenotazione", MessageBoxButtons.YesNo);
                if (result == DialogResult.Yes)
                {
                    //Modifico l'istanza della prenotazione nell'agenda
                    PrenotazionePeriodica prenotazionePeriodicaToUpdate = CentroSaleProve.GetIstance().Agenda.ModificaPrenotazionePeriodica(newPrenotazioneSingola, oldPrenotazioneSingola);

                    //Rendo persistente la modifica
                    this.DataManager.UpdatePrenotazionePeriodica(prenotazionePeriodicaToUpdate);

                    MessageBox.Show("Prenotazione modificata con successo ");
                }
            }
        }
Esempio n. 6
0
        internal void AggiungiPrenotazionePeriodica(PrenotazionePeriodica prenotazionePeriodica, List <PrenotazioneSingola> prenotazioniSingoleToCreate)
        {
            CreaPrenotazionePeriodica(prenotazioniSingoleToCreate, prenotazionePeriodica);
            if (CheckPrenotazione(prenotazionePeriodica))
            {
                DialogResult result = DialogResult.No;
                PrezzoProvider.CalcolaScontoPrenotazionePeriodica(prenotazionePeriodica);
                string resoconto = String.Format(" IdPrenotazione: {0} \r\n Cliente: {1} {2} \r\n Sala: {3} \r\n DataInizio:{4}  \r\n DatFine:{5} \r\n Totale: {6} €",
                                                 prenotazionePeriodica.IdPrenotazione, prenotazionePeriodica.Cliente.Nome, prenotazionePeriodica.Cliente.Cognome, prenotazionePeriodica.Sala.NomeSala, prenotazionePeriodica.DataInizio.ToShortDateString(),
                                                 prenotazionePeriodica.DataFine, prenotazionePeriodica.Totale);
                result = MessageBox.Show(resoconto, "Conferma Prenotazione", MessageBoxButtons.YesNo);
                if (result == DialogResult.Yes)
                {
                    CentroSaleProve.GetIstance().Agenda.AggiungiPrenotazione(prenotazionePeriodica);
                    this.DataManager.SavePrenotazionePeriodica(prenotazionePeriodica);

                    MessageBox.Show("Prenotazione aggiunta con successo ");
                }
            }
        }
            public void SaveUpdatePrenotazionePeriodica(PrenotazionePeriodica prenotazione)
            {
                PrenotazionePeriodica prenotazionePeriodicaToSave = prenotazione;

                XmlElement prenotazionePeriodicaNode = _xmlDocument.CreateElement("PrenotazionePeriodica");
                XmlElement dataFineElement           = _xmlDocument.CreateElement("DataFine");

                dataFineElement.InnerText = prenotazione.DataFine.ToShortDateString();
                prenotazionePeriodicaNode.AppendChild(dataFineElement);

                foreach (PrenotazioneSingola p in prenotazionePeriodicaToSave.Prenotazioni)
                {
                    XmlElement prenotazioneSingolaNode = _xmlDocument.CreateElement("PrenotazioneSingola");

                    CreaNodoPrenotazioneSingola(prenotazioneSingolaNode, p);

                    prenotazionePeriodicaNode.AppendChild(prenotazioneSingolaNode);
                }

                _xmlDocument.DocumentElement.InsertAfter(prenotazionePeriodicaNode, _xmlDocument.DocumentElement.LastChild);
                _xmlDocument.Save(_fileName);
            }
Esempio n. 8
0
        internal void AggiungiPrenotazionePeriodica(PrenotazionePeriodica prenotazionePeriodica)
        {
            DialogResult result = DialogResult.No;

            PrezzoProvider.CalcolaScontoClienteRegistrato(prenotazionePeriodica);
            PrezzoProvider.CalcolaScontoPrenotazionePeriodica(prenotazionePeriodica);
            string resoconto = String.Format(" IdPrenotazione: {0} \r\n Cliente: {1} {2} \r\n Sala: {3} \r\n DataInizio:{4}  \r\n DatFine:{5} \r\n Totale: {6} €",
                                             prenotazionePeriodica.IdPrenotazione, prenotazionePeriodica.Cliente.Nome, prenotazionePeriodica.Cliente.Cognome, prenotazionePeriodica.Sala.NomeSala, prenotazionePeriodica.Prenotazioni.First().Data.ToShortDateString(),
                                             prenotazionePeriodica.DataFine, prenotazionePeriodica.GetTotale());

            result = MessageBox.Show(resoconto, "Conferma Prenotazione", MessageBoxButtons.YesNo);
            if (result == DialogResult.Yes)
            {
                CentroSaleProve.GetIstance().Agenda.AggiungiPrenotazione(prenotazionePeriodica);
                this.DataManager.SavePrenotazioni();
                foreach (PrenotazioneSingola ps in prenotazionePeriodica.Prenotazioni)
                {
                    CentroSaleProve.GetIstance().Agenda.AggiungiPrenotazione(ps);
                }
                MessageBox.Show("Prenotazione aggiunta con successo ");
            }
        }
Esempio n. 9
0
        public bool SavePrenotazionePeriodica(PrenotazionePeriodica prenotazionePeriodica)
        {
            _prenotazionePersister.GetSaver("XML").SavePrenotazionePeriodica(prenotazionePeriodica);

            return(true);
        }
Esempio n. 10
0
        internal bool CheckPrenotazione(Prenotazione prenotazione)
        {
            bool trovato = true;

            //Verifico il tipo di prenotazione passata
            if (prenotazione.GetType() == typeof(PrenotazioneSingola))
            {
                //Controllo prima sovrapposizione con le prenotazioniSingole
                PrenotazioneSingola prenotazioneToCheck = prenotazione as PrenotazioneSingola;
                var querySingola = from prenotazioniSingole in CentroSaleProve.GetIstance().Agenda.Prenotazioni
                                   where prenotazioniSingole.GetType() == typeof(PrenotazioneSingola)
                                   select prenotazioniSingole;

                foreach (PrenotazioneSingola p in querySingola)
                {
                    if (p.DataInizio.DayOfYear == prenotazioneToCheck.DataInizio.DayOfYear)
                    {
                        if (p.Sala.IdSala == prenotazioneToCheck.Sala.IdSala)
                        {
                            if (p.OraInizio == prenotazioneToCheck.OraInizio ||
                                (p.OraInizio < prenotazioneToCheck.OraInizio && prenotazioneToCheck.OraInizio < p.OraFine))
                            {
                                trovato = false;
                                break;
                            }
                        }
                    }
                }


                //Poi controllo le prenotazioniSingole all'interno delle prenotazioniPeriodiche
                var queryPeriodica = from prenotazioniPeriodiche in CentroSaleProve.GetIstance().Agenda.Prenotazioni
                                     where prenotazioniPeriodiche.GetType() == typeof(PrenotazionePeriodica)
                                     select prenotazioniPeriodiche;

                foreach (PrenotazionePeriodica pp in queryPeriodica)
                {
                    foreach (PrenotazioneSingola ps in pp.Prenotazioni)
                    {
                        if (ps.DataInizio.DayOfYear == prenotazioneToCheck.DataInizio.DayOfYear)
                        {
                            if (ps.Sala.IdSala == prenotazioneToCheck.Sala.IdSala)
                            {
                                if (ps.OraInizio == prenotazioneToCheck.OraInizio ||
                                    (ps.OraInizio < prenotazioneToCheck.OraInizio && prenotazioneToCheck.OraInizio < ps.OraFine))
                                {
                                    trovato = false;
                                    break;
                                }
                            }
                        }
                    }
                }
            }

            else if (prenotazione.GetType() == typeof(PrenotazionePeriodica))
            {
                PrenotazionePeriodica prenotazioneToCheck = prenotazione as PrenotazionePeriodica;
                foreach (PrenotazioneSingola ps in prenotazioneToCheck.Prenotazioni)
                {
                    //Mando in ricorsione la funzione che verifichera per ogni prenotazioneSingola che stiamo andando ad aggiungere
                    //non ci sia una sovrapposizione
                    CheckPrenotazione(ps);
                }
            }



            return(trovato);
        }
Esempio n. 11
0
 private void CreaPrenotazionePeriodica(List <PrenotazioneSingola> prenotazioniSingole, PrenotazionePeriodica prenotazionePeriodica)
 {
     foreach (PrenotazioneSingola ps in prenotazioniSingole)
     {
         for (int i = 0; i < prenotazionePeriodica.DataFine.DayOfYear - ps.DataInizio.DayOfYear; i++)
         {
             DateTime dataTemp = ps.DataInizio.AddDays(7 * i);
             if (dataTemp.CompareTo(prenotazionePeriodica.DataFine) < 0)
             {
                 PrenotazioneSingola newPrenotazioneSingola = new PrenotazioneSingola(prenotazionePeriodica.IdPrenotazione, prenotazionePeriodica.Cliente, prenotazionePeriodica.Sala, dataTemp, ps.OraInizio, ps.OraFine);
                 prenotazionePeriodica.Prenotazioni.Add(newPrenotazioneSingola);
             }
             else
             {
                 break;
             }
         }
     }
 }