Mercurial > altnet-hispano
changeset 216:8a8c35302b81
Merge
author | nelopauselli |
---|---|
date | Mon, 05 Sep 2011 20:43:32 -0300 |
parents | 85ddae313408 (current diff) 7d838e7d83b3 (diff) |
children | c4c60e034103 |
files | Agendas/trunk/src/Agendas.Domain/Agenda.cs |
diffstat | 5 files changed, 44 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs Sun Sep 04 18:35:33 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs Mon Sep 05 20:43:32 2011 -0300 @@ -103,6 +103,13 @@ if (persona == null) return new EventoResultado(false, string.Format("No se encontró el ponente indicado ({0})", ponenteId), null); + var existeOtroEvento = _eventosRepository.GetNoPropuestoByTitulo(titulo); + if (existeOtroEvento != null) + return new EventoResultado(false, + string.Format( + "Ya existe un evento con el mismo tÃtulo ({0}) del {1}, por favor ingrese otro.", + titulo, existeOtroEvento.FechaInicio.Value.ToShortDateString()), null); + Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo); foreach (var e in _eventosRepository.GetActivos())
--- a/Agendas/trunk/src/Agendas.Domain/Repositories/IEventoRepository.cs Sun Sep 04 18:35:33 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Repositories/IEventoRepository.cs Mon Sep 05 20:43:32 2011 -0300 @@ -10,6 +10,7 @@ IList<Evento> GetByState(EventoState state); IList<Evento> GetActivos(); Evento GetPropuestaByTitulo(string titulo); + Evento GetNoPropuestoByTitulo(string titulo); void Save(Evento evento); void Update(Evento evento); bool ExistePonente(Persona ponente);
--- a/Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs Sun Sep 04 18:35:33 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs Mon Sep 05 20:43:32 2011 -0300 @@ -36,7 +36,12 @@ return Objects.Values.SingleOrDefault(e => e.Estado == EventoPropuestoState.GetInstance() && e.Titulo == titulo); } - public static void Clear() + public Evento GetNoPropuestoByTitulo(string titulo) + { + return Objects.Values.SingleOrDefault(e => e.Titulo == titulo && e.Estado != EventoPropuestoState.GetInstance()); + } + + public static void Clear() { Objects.Clear(); }
--- a/Agendas/trunk/src/Agendas.Repositories.NHibernate/EventoRepository.cs Sun Sep 04 18:35:33 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Repositories.NHibernate/EventoRepository.cs Mon Sep 05 20:43:32 2011 -0300 @@ -35,7 +35,14 @@ return Session.QueryOver<Evento>().Where(e => e.Estado == EventoPropuestoState.GetInstance() && e.Titulo==titulo).SingleOrDefault(); } - public void Update(Evento evento) + public Evento GetNoPropuestoByTitulo(string titulo) + { + return + Session.QueryOver<Evento>().Where(e => e.Estado != EventoPropuestoState.GetInstance() && e.Titulo == titulo) + .SingleOrDefault(); + } + + public void Update(Evento evento) { //No es necesario implementarlo }
--- a/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Sun Sep 04 18:35:33 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Mon Sep 05 20:43:32 2011 -0300 @@ -541,5 +541,27 @@ Assert.IsNull(eventoPropuesto.FechaInicio); Assert.IsNull(eventoPropuesto.FechaTermino); } + + [Test] + public void Verificar_que_no_sea_posible_crear_dos_van_diferentes_con_igual_titulo() + { + var publicador1 = new Mock<IPublicador>(); + var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); + var fechaInicio = new DateTime(2011, 8, 20, 18, 00, 00); + var fechaTermino = fechaInicio.AddHours(2); + + var r = agenda.Agendar("Conceptos de HTTP y Fiddler web debugger", TestsHelper.GetOrCreatePonente("jjmontes"), fechaInicio, + fechaTermino, string.Empty, TipoEvento.Van); + Assert.IsTrue(r.Succeful); + + fechaInicio = new DateTime(2011, 8, 27, 05, 00, 00); + fechaTermino = fechaInicio.AddHours(2); + r = agenda.Agendar("Conceptos de HTTP y Fiddler web debugger", + TestsHelper.GetOrCreatePonente("alabra"), + fechaInicio, + fechaTermino, string.Empty, TipoEvento.Van); + + Assert.IsFalse(r.Succeful); + } } } \ No newline at end of file