private void buttonConvalida_Click(object sender, EventArgs e) { #region controlliEventi bool controlPassed = true; errorProviderEvento.Clear(); if (String.IsNullOrEmpty(txtNomeEvento.Text) || String.IsNullOrWhiteSpace(txtNomeEvento.Text)) { errorProviderEvento.SetError(txtNomeEvento, "Inserire il nome evento"); controlPassed = false; } if (dateTimePickerFineEvento.Value.CompareTo(dateTimePickerInizioEvento.Value) <= 0) { errorProviderEvento.SetError(dateTimePickerFineEvento, "La Data di fine evento deve essere futura a quella di inizio evento"); controlPassed = false; } if (dateTimePickerInizioEvento.Value <= DateTime.Now) { errorProviderEvento.SetError(dateTimePickerInizioEvento, "La Data di inizio evento deve essere futura"); controlPassed = false; } int result; if (!Int32.TryParse(txtGradoDiRischio.Text, out result) || result < 1 || result > 10) { errorProviderEvento.SetError(txtGradoDiRischio, "Inserire un numero da 1 a 10"); controlPassed = false; } if (checkListSettoriAperti.CheckedIndices.Count == 0) { errorProviderEvento.SetError(checkListSettoriAperti, "Devi selezionare almeno un settore da includere"); controlPassed = false; } #endregion if (controlPassed) { partita = new Evento(txtNomeEvento.Text, dateTimePickerInizioEvento.Value, dateTimePickerFineEvento.Value, result, disposizionePersonale.Keys.ToList()); foreach (ISettore set in disposizionePersonale.Keys.ToList()) { partita.AddAssegnamentiSettore(set, DisposizionePersonale[set]); } try { partita.Accept(new RegolaCoordinatore()); partita.Accept(new RegolaSteward()); partita.Accept(new RegolaCapoUnita()); partita.Accept(new GeneraPOS()); MessageBox.Show("Convalida Effettuata, POS generato!", "", MessageBoxButtons.OK); _buttonSalva.Enabled = true; } catch (ViolatedRuleException ruleExc) { MessageBox.Show(ruleExc.Message); } catch (NullReferenceException nullExc) { MessageBox.Show("L'evento non è stato creato"); } } }