private void Reservar(DenormalizedReference<Local> local, DateTime data, IList<HoraReservaEnum> hora) { #region pré-condição var reservaComMesmoHorarioParaOLocal = Reservas.FirstOrDefault(r => r.Local.Equals(local) && r.Data.Equals(data) && r.Hora.Intersect(hora).Count() > 0); var naoExisteReservaSemelhante = Assertion.That(reservaComMesmoHorarioParaOLocal == null) .WhenNot(String.Format(@"O local '{0}' foi reservado mais de uma vez para um mesmo horário. Verifique se o horário '{1} ({2})' está coincidindo com outra reserva para este local neste evento.", local.Nome, data.ToString("dd/MM/yyyy"), hora.ToHoraReservaString())); #endregion naoExisteReservaSemelhante.Validate(); var reserva = new Reserva(local, data, hora); var reservasAux = Reservas.ToList(); reservasAux.Add(reserva); Reservas = reservasAux; }