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