コード例 #1
0
 public MainForm()
 {
     InitializeComponent();
     _gestorePrenotazioni = Gestione.GestorePrenotazioni.GetInstance();
     UpdateDaFareOggi();
     UpdatePrenotazioniListView();
 }
コード例 #2
0
        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
            {
            }
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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();
        }
コード例 #5
0
 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();
 }
コード例 #6
0
        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));
                }
            }
        }
コード例 #7
0
        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);
                }
            }
        }
コード例 #8
0
        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);
            }
        }
コード例 #9
0
        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;
            }
        }