# HG changeset patch # User nelopauselli # Date 1315266212 10800 # Node ID 8a8c35302b81be1bd98025077f465323f29c92e6 # Parent 85ddae313408d292cd48653bebb0893875be5680# Parent 7d838e7d83b3e94cf54aedf669739d8e50f9c9b4 Merge diff -r 85ddae313408 -r 8a8c35302b81 Agendas/trunk/src/Agendas.Domain/Agenda.cs --- 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()) diff -r 85ddae313408 -r 8a8c35302b81 Agendas/trunk/src/Agendas.Domain/Repositories/IEventoRepository.cs --- 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 GetByState(EventoState state); IList GetActivos(); Evento GetPropuestaByTitulo(string titulo); + Evento GetNoPropuestoByTitulo(string titulo); void Save(Evento evento); void Update(Evento evento); bool ExistePonente(Persona ponente); diff -r 85ddae313408 -r 8a8c35302b81 Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs --- 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(); } diff -r 85ddae313408 -r 8a8c35302b81 Agendas/trunk/src/Agendas.Repositories.NHibernate/EventoRepository.cs --- 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().Where(e => e.Estado == EventoPropuestoState.GetInstance() && e.Titulo==titulo).SingleOrDefault(); } - public void Update(Evento evento) + public Evento GetNoPropuestoByTitulo(string titulo) + { + return + Session.QueryOver().Where(e => e.Estado != EventoPropuestoState.GetInstance() && e.Titulo == titulo) + .SingleOrDefault(); + } + + public void Update(Evento evento) { //No es necesario implementarlo } diff -r 85ddae313408 -r 8a8c35302b81 Agendas/trunk/src/Agendas.Tests/AgendarTests.cs --- 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(); + 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