public MainForm() { InitializeComponent(); _gestorePrenotazioni = Gestione.GestorePrenotazioni.GetInstance(); UpdateDaFareOggi(); UpdatePrenotazioniListView(); }
private void _deleteButton_Click(object sender, EventArgs e) { DateTime date = DateTime.Parse(_deleteTimePicker.Text); var confirmResult = MessageBox.Show("Sei sicuro di voler cancellare le prenotazioni fino al " + date.ToShortDateString() + "?", "Conferma", MessageBoxButtons.YesNo); if (confirmResult == DialogResult.Yes) { List <Prenotazione> toDelete = new List <Prenotazione>(); foreach (Prenotazione pren in GestorePrenotazioni.GetInstance().Prenotazioni) { if (pren.Uscita <= date) { toDelete.Add(pren); } } foreach (Prenotazione p in toDelete) { GestorePrenotazioni.GetInstance().RemovePrenotazione(p.ID); } _mainForm.UpdateDaFareOggi(); _mainForm.UpdatePrenotazioniListView(); } else { } }
private void modificaToolStripMenuItem_Click(object sender, EventArgs e) { Prenotazione toModify = GestorePrenotazioni.GetInstance().GetById(int.Parse( _prenotazioniListView.SelectedItems[0].SubItems[0].Text)); InserisciPrenotazioneForm ifa = new InserisciPrenotazioneForm(this, toModify); ifa.Show(); }
private void cancellaToolStripMenuItem_Click(object sender, EventArgs e) { int toDelete = _prenotazioniListView.SelectedIndices[0]; Prenotazione prenToDelete = GestorePrenotazioni.GetInstance().Prenotazioni[toDelete]; Gestione.GestorePrenotazioni.GetInstance().RemovePrenotazione(prenToDelete.ID); UpdateDaFareOggi(); UpdatePrenotazioniListView(); }
public InserisciPrenotazioneForm(MainForm mainForm) { InitializeComponent(); _caneRadioButton.Checked = true; _mainForm = mainForm; _oraEntrataTimePicker.Value = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0); _oraUscitaTimePicker.Value = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0); _answer.Text = ""; _prevDateEntrata = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0); _prevDateUscita = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0); _gestorePrenotazioni = GestorePrenotazioni.GetInstance(); }
private void textBox1_TextChanged(object sender, EventArgs e) { string searchText = _searchTextBox.Text; string[] toSearch = searchText.Split(' '); _prenotazioniListView.Items.Clear(); foreach (Prenotazione p in GestorePrenotazioni.GetInstance().Prenotazioni) { bool write = true; foreach (string s in toSearch) { if (!(p.Nome.ToUpper().Contains(s.ToUpper()) || p.Cognome.ToUpper().Contains(s.ToUpper()) || p.Telefono.Contains(s.ToUpper()))) { write = false; } } if (write) { String boxString = ""; foreach (List <Periodo> listaPeriodi in p.ListaBox) { foreach (Periodo periodo in listaPeriodi) { boxString += periodo.Box; if (listaPeriodi.IndexOf(periodo) != listaPeriodi.Count - 1) { boxString += ", "; } } int indexOfListaPeriodi = p.ListaBox.IndexOf(listaPeriodi); if (indexOfListaPeriodi != p.ListaBox.Count - 1) { boxString += " | "; } } String[] row = { p.ID.ToString(), p.Tipo == Prenotazione.CANE ? "CANI" : "GATTI", p.Nome, p.Cognome, p.Telefono, p.Entrata.ToString("dd/MM/yyyy - HH:mm"), p.Uscita.ToString("dd/MM/yyyy - HH:mm"), p.NumBox.ToString(), boxString }; _prenotazioniListView.Items.Add(new ListViewItem(row)); } } }
private void _ok_Click(object sender, EventArgs e) { Prenotazione original = null; if (_toModify != null) { original = GestorePrenotazioni.GetInstance().GetById(_toModify.ID); GestorePrenotazioni.GetInstance().RemovePrenotazione(_toModify.ID); } int numBox = 0; try { numBox = int.Parse(_boxNumTextBox.Text); if (numBox <= 0) { throw new FormatException(); } } catch (Exception ex) { if (ex is ArgumentNullException || ex is FormatException) { MessageBox.Show("Errore", "Inserisci un numero di box maggiore di 0", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } DateTime entrata = DateTime.Parse(_entrataTimePicker.Text); entrata = entrata.AddHours(DateTime.Parse(_oraEntrataTimePicker.Text).Hour); entrata = entrata.AddMinutes(DateTime.Parse(_oraEntrataTimePicker.Text).Minute); DateTime uscita = DateTime.Parse(_uscitaTimePicker.Text); uscita = uscita.AddHours(DateTime.Parse(_oraUscitaTimePicker.Text).Hour); uscita = uscita.AddMinutes(DateTime.Parse(_oraUscitaTimePicker.Text).Minute); string nome = _nomeTextBox.Text; string cognome = _cognomeTextBox.Text; string telefono = _telefonoTextBox.Text; if (uscita <= entrata) { _answer.Text = "Controlla le date!"; _answer.ForeColor = Color.Red; return; } List <int> preferiti = new List <int>(); foreach (string s in _preferenzeTextBox.Text.Split(',')) { try { preferiti.Add(int.Parse(s.Trim())); } catch (FormatException) { } } int tipo = _caneRadioButton.Checked ? Prenotazione.CANE : Prenotazione.GATTO; List <List <Periodo> > free = GestorePrenotazioni.GetInstance().FindAStay(entrata, uscita, tipo, numBox, preferiti); String text = ""; foreach (List <Periodo> listaPeriodi in free) { foreach (Periodo periodo in listaPeriodi) { text += periodo.ToString(); } if (free.IndexOf(listaPeriodi) != free.Count - 1) { text += System.Environment.NewLine; } } bool libero = true; foreach (List <Periodo> listaPeriodi in free) { foreach (Periodo p in listaPeriodi) { if (p.Box == -1) { libero = false; break; } } } _answer.Text = text; if (libero && _toModify == null) { GestorePrenotazioni.GetInstance().AddPrenotazione(new Prenotazione(nome, cognome, telefono, entrata, uscita, tipo, free)); _mainForm.UpdateDaFareOggi(); _mainForm.UpdatePrenotazioniListView(); Close(); } else if (libero && _toModify != null) { Prenotazione p = new Prenotazione(original); p.Cognome = cognome; p.Nome = nome; p.ListaBox = free; p.Tipo = tipo; p.Uscita = uscita; p.Entrata = entrata; p.Telefono = telefono; GestorePrenotazioni.GetInstance().AddPrenotazione(p); _mainForm.UpdateDaFareOggi(); _mainForm.UpdatePrenotazioniListView(); Close(); } else { _answer.ForeColor = Color.Red; _answer.Text = "In almeno un giorno c'è un box non disponibile!"; if (original != null) { GestorePrenotazioni.GetInstance().AddPrenotazione(original); } } }
private void _checkButton_Click(object sender, EventArgs e) { Prenotazione original = null; if (_toModify != null) { original = GestorePrenotazioni.GetInstance().GetById(_toModify.ID); GestorePrenotazioni.GetInstance().RemovePrenotazione(_toModify.ID); } List <int> preferiti = new List <int>(); foreach (string s in _preferenzeTextBox.Text.Split(',')) { try { preferiti.Add(int.Parse(s.Trim())); } catch (FormatException) { } } int numBox = 0; try { numBox = int.Parse(_boxNumTextBox.Text); if (numBox <= 0) { throw new FormatException(); } } catch (Exception ex) { if (ex is ArgumentNullException || ex is FormatException) { MessageBox.Show("Errore", "Inserisci un numero di box maggiore di 0", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } DateTime entrata = DateTime.Parse(_entrataTimePicker.Text); entrata = entrata.AddHours(DateTime.Parse(_oraEntrataTimePicker.Text).Hour); entrata = entrata.AddMinutes(DateTime.Parse(_oraEntrataTimePicker.Text).Minute); DateTime uscita = DateTime.Parse(_uscitaTimePicker.Text); uscita = uscita.AddHours(DateTime.Parse(_oraUscitaTimePicker.Text).Hour); uscita = uscita.AddMinutes(DateTime.Parse(_oraUscitaTimePicker.Text).Minute); if (uscita <= entrata) { _answer.Text = "Controlla le date!"; _answer.ForeColor = Color.Red; return; } int tipo = _caneRadioButton.Checked ? Prenotazione.CANE : Prenotazione.GATTO; List <List <Periodo> > free = _gestorePrenotazioni.FindAStay(entrata, uscita, tipo, numBox, preferiti); String text = ""; bool tuttiPreferiti = true; foreach (List <Periodo> listaPeriodi in free) { foreach (Periodo periodo in listaPeriodi) { text += periodo.ToString(); if (preferiti.Count() > 0 && !preferiti.Contains(periodo.Box)) { tuttiPreferiti = false; } } if (free.IndexOf(listaPeriodi) != free.Count - 1) { text += System.Environment.NewLine; } } bool libero = true; foreach (List <Periodo> listaPeriodi in free) { foreach (Periodo p in listaPeriodi) { if (p.Box == -1) { libero = false; break; } } } _answer.Text = text; if (libero) { if (!tuttiPreferiti) { _answer.ForeColor = Color.DarkOrange; _answer.Text = "ATTENZIONE: " + System.Environment.NewLine + "Non tutte le soluzioni comprendono i box selezionati:" + System.Environment.NewLine + System.Environment.NewLine + _answer.Text; } else { _answer.ForeColor = Color.Green; } } else { _answer.ForeColor = Color.Red; } if (_toModify != null && original != null) { GestorePrenotazioni.GetInstance().AddPrenotazione(original); } }
private void _cercaButton_Click(object sender, EventArgs e) { _resLabel.Text = "Box disponibili: " + System.Environment.NewLine; DateTime start = DateTime.Parse(_dataInizio.Text); DateTime startTime = DateTime.Parse(_oraInizio.Text); start = start.AddHours(startTime.Hour); start = start.AddMinutes(startTime.Minute); DateTime end = DateTime.Parse(_dataFine.Text); DateTime endTime = DateTime.Parse(_oraFine.Text); end = end.AddHours(endTime.Hour); end = end.AddMinutes(endTime.Minute); if (start >= end) { _resLabel.Text = "Controlla le date!"; _resLabel.ForeColor = Color.Red; return; } int tipo = _caniRadioButton.Checked ? Prenotazione.CANE : Prenotazione.GATTO; List <int> freeBoxes = GestorePrenotazioni.GetInstance().FreeBoxesInPeriod(start, end, tipo); List <List <Periodo> > solution = GestorePrenotazioni.GetInstance().FindAStay(start, end, tipo, 1); bool isThereASolution = true; foreach (List <Periodo> listaPeriodi in solution) { foreach (Periodo periodo in listaPeriodi) { if (periodo.Box == -1) { isThereASolution = false; } } } if (freeBoxes.Count > 0) { _resLabel.Text += System.Environment.NewLine; foreach (int box in freeBoxes) { _resLabel.Text = _resLabel.Text + box; if (freeBoxes.IndexOf(box) != freeBoxes.Count - 1) { _resLabel.Text = _resLabel.Text + ", "; } } _resLabel.ForeColor = Color.Green; } else if (isThereASolution) { _resLabel.ForeColor = Color.Green; _resLabel.Text = "Non ci sono box sempre disponibili ma c'è almeno una soluzione logistica:" + System.Environment.NewLine; foreach (List <Periodo> listaPeriodi in solution) { foreach (Periodo periodo in listaPeriodi) { _resLabel.Text = _resLabel.Text + periodo.ToString(); } } } else { _resLabel.Text = "Non ci sono soluzioni disponibili."; _resLabel.ForeColor = Color.Red; } }