Example #1
0
        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;
        }