private void _buttonOK_Click(object sender, EventArgs e) { if (CheckParameters()) { DateTime dataFine = _dateTimePickerFinePeriodo.Value; PrenotazionePeriodica prenotazionePeriodica = new PrenotazionePeriodica(_prenotazioniSingole, dataFine); _controllerPrenotazione.AggiungiPrenotazionePeriodica(prenotazionePeriodica); } }
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(); }
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); }
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); }
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 "); } } }
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); }
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 "); } }
public bool SavePrenotazionePeriodica(PrenotazionePeriodica prenotazionePeriodica) { _prenotazionePersister.GetSaver("XML").SavePrenotazionePeriodica(prenotazionePeriodica); return(true); }
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); }
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; } } } }