changeset 118:b74734a1a755

Manejo de eventos por estado
author Nelo@Kenia.neluz.int
date Wed, 22 Jun 2011 09:32:59 -0300
parents 7ef7e4bb71f6
children 8fa58a79656a
files Agendas/trunk/src/Agendas.Domain/Agenda.cs Agendas/trunk/src/Agendas.Domain/Repositories/IEventoRepository.cs Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs Agendas/trunk/src/Agendas.Repositories.NHibernate/EventoRepository.cs Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Agendas/trunk/src/Agendas.Tests/PonentesTests.cs Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Agendas/trunk/src/Agendas.Tests/TrackTests.cs Agendas/trunk/src/Agendas.Tests/Workflows/WorkflowTests.cs Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj Agendas/trunk/src/Agendas.Web/Controllers/EventoController.cs Agendas/trunk/src/Agendas.Web/Controllers/PropuestaController.cs Agendas/trunk/src/Agendas.Web/Models/EventoModel.cs Agendas/trunk/src/Agendas.Web/Models/PropuestaModel.cs Agendas/trunk/src/Agendas.Web/Views/Evento/Agendar.cshtml Agendas/trunk/src/Agendas.Web/Views/Evento/Edit.cshtml Agendas/trunk/src/Agendas.Web/Views/Evento/Index.cshtml Agendas/trunk/src/Agendas.Web/Views/Evento/Modificar.cshtml Agendas/trunk/src/Agendas.Web/Views/Evento/New.cshtml Agendas/trunk/src/Agendas.Web/Views/Evento/Nuevo.cshtml Agendas/trunk/src/Agendas.Web/Views/Evento/Proponer.cshtml Agendas/trunk/src/Agendas.Web/Views/Propuesta/Edit.cshtml Agendas/trunk/src/Agendas.Web/Views/Propuesta/Index.cshtml Agendas/trunk/src/Agendas.Web/Views/Propuesta/New.cshtml Agendas/trunk/src/Agendas.Web/Views/Shared/_Menu.cshtml
diffstat 25 files changed, 422 insertions(+), 463 deletions(-) [+]
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Sun Jun 19 13:35:34 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Wed Jun 22 09:32:59 2011 -0300
@@ -27,14 +27,14 @@
 			return evento;
 		}
 
-		public IList<Evento> GetEventosPropuestos()
+		public IList<Evento> GetEventosActivos(EventoState state)
 		{
-			return _eventosRepository.GetEventosSinFecha() ?? new List<Evento>();
+			return _eventosRepository.GetByState(state) ?? new List<Evento>();
 		}
 
-		public IList<Evento> GetEventosAgendados()
+		public IList<Evento> GetEventosActivos()
 		{
-			return _eventosRepository.GetEventosConFecha() ?? new List<Evento>();
+			return _eventosRepository.GetActivos() ?? new List<Evento>();
 		}
 
 		public Resultado ModificarEvento(Guid eventoId, string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion)
--- a/Agendas/trunk/src/Agendas.Domain/Repositories/IEventoRepository.cs	Sun Jun 19 13:35:34 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Repositories/IEventoRepository.cs	Wed Jun 22 09:32:59 2011 -0300
@@ -7,8 +7,8 @@
 	{
 		void Delete(Evento evento);
 		Evento Get(Guid vanId);
-		IList<Evento> GetEventosConFecha();
-		IList<Evento> GetEventosSinFecha();
+		IList<Evento> GetByState(EventoState state);
+		IList<Evento> GetActivos();
 		Evento GetPropuestaByTitulo(string titulo);
 		void Save(Evento evento);
 		void Update(Evento evento);
--- a/Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs	Sun Jun 19 13:35:34 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs	Wed Jun 22 09:32:59 2011 -0300
@@ -13,6 +13,11 @@
 			//nada que hacer en este método para este repositorio
 		}
 
+		public IList<Evento> GetByState(EventoState state)
+		{
+			return Objects.Values.Where(e => e.Estado == state.GetDescripcion()).ToList();
+		}
+
 		public void Delete(Evento evento)
 		{
 			Objects.Remove(evento.Id);
@@ -24,14 +29,12 @@
             return Objects.TryGetValue(vanId, out evento) ? evento : null;
         }
 
-		public IList<Evento> GetEventosSinFecha()
+		public IList<Evento> GetActivos()
 		{
-			return Objects.Values.Where(e => e.Fecha == null).ToList();
-		}
-
-		public IList<Evento> GetEventosConFecha()
-		{
-			return Objects.Values.Where(e => e.Fecha != null).ToList();
+			return
+				Objects.Values.Where(
+					e =>
+					e.Estado != EventoPublicadoState.GetInstance().GetDescripcion()).ToList();
 		}
 
 		public Evento GetPropuestaByTitulo(string titulo)
--- a/Agendas/trunk/src/Agendas.Repositories.NHibernate/EventoRepository.cs	Sun Jun 19 13:35:34 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Repositories.NHibernate/EventoRepository.cs	Wed Jun 22 09:32:59 2011 -0300
@@ -22,14 +22,12 @@
 			return Session.Get<Evento>(vanId);
 		}
 
-		public IList<Evento> GetEventosConFecha()
+		public IList<Evento> GetActivos()
 		{
-			return Session.QueryOver<Evento>().Where(e => e.Fecha != null).List();
-		}
-
-		public IList<Evento> GetEventosSinFecha()
-		{
-			return Session.QueryOver<Evento>().Where(e => e.Fecha == null).List();
+			return
+				Session.QueryOver<Evento>().Where(
+					e =>
+					e.Estado != EventoPublicadoState.GetInstance().GetDescripcion()).List();
 		}
 
 		public Evento GetPropuestaByTitulo(string titulo)
@@ -41,5 +39,10 @@
 		{
 			//No es necesario implementarlo
 		}
+
+		public IList<Evento> GetByState(EventoState state)
+		{
+			return Session.QueryOver<Evento>().Where(e => e.Estado == state.GetDescripcion()).List();
+		}
 	}
 }
--- a/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs	Sun Jun 19 13:35:34 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs	Wed Jun 22 09:32:59 2011 -0300
@@ -32,7 +32,7 @@
 			var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository);
 
       Assert.Throws<Exception>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion, TipoEvento.Van));
-			Assert.AreEqual(0, agenda.GetEventosAgendados().Count);
+			Assert.AreEqual(0, agenda.GetEventosActivos().Count);
 
 			publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
 			repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
@@ -111,9 +111,9 @@
 			agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
         urlInvitacion, TipoEvento.Van);
 
-			Assert.AreEqual(0, agenda.GetEventosPropuestos().Count);
+			Assert.AreEqual(0, agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).Count);
 
-			var eventos = agenda.GetEventosAgendados();
+			var eventos = agenda.GetEventosActivos();
 			Assert.AreEqual(1, eventos.Count);
 
 			publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
@@ -136,7 +136,7 @@
 
 			publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
 
-			var evento = repository.GetEventosConFecha().First();
+			var evento = repository.GetActivos().First();
 			Assert.AreNotEqual(Guid.Empty, evento.Id);
 			Assert.IsNotNull(evento.Fecha);
 
@@ -145,7 +145,7 @@
 
 			publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2));
 
-			evento = repository.GetEventosConFecha().First();
+			evento = repository.GetActivos().First();
 			Assert.AreEqual("otro titulo", evento.Titulo);
 			Assert.AreEqual("otro ponente", evento.Ponente.Nombre);
 			Assert.AreEqual(fecha, evento.Fecha);
@@ -167,7 +167,7 @@
 			agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now,
         urlInvitacion, TipoEvento.Van);
 
-			var van = agenda.GetEventosAgendados().Single(v => v.Titulo == "Van para publicar");
+			var van = agenda.GetEventosActivos().Single(v => v.Titulo == "Van para publicar");
 			//agenda.Recordar(van.Id);
 
 			publicador1.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
@@ -184,18 +184,19 @@
 			var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }),
 															DefaultEventoRepository, DefaultPersonaRepository);
 
-      agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
-			Assert.AreEqual(1, agenda.GetEventosPropuestos().Count);
-			Assert.AreEqual(0, agenda.GetEventosAgendados().Count);
+			agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
+			Assert.AreEqual(1, agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).Count);
+			Assert.AreEqual(1, agenda.GetEventosActivos().Count);
 
-			var publicado = agenda.GetEventosPropuestos().First();
+			var publicado = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).First();
 			Assert.AreEqual(1, publicado.Tracks.Count());
 
 			agenda.ModificarEvento(publicado.Id, "Html 5", "jjmontes", DateTime.Today.AddDays(5), urlInvitacion);
-			Assert.AreEqual(0, agenda.GetEventosPropuestos().Count);
-			Assert.AreEqual(1, agenda.GetEventosAgendados().Count);
+			Assert.AreEqual(0, agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).Count);
+			Assert.AreEqual(1, agenda.GetEventosActivos(EventoAgendadoState.GetInstance()).Count);
+			Assert.AreEqual(1, agenda.GetEventosActivos().Count);
 
-			var agendado = agenda.GetEventosAgendados().First();
+			var agendado = agenda.GetEventosActivos().First();
 			Assert.AreSame(publicado, agendado);
 			Assert.AreEqual(2, agendado.Tracks.Count());
 
@@ -211,7 +212,8 @@
       var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
       agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
 
-      var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5");
+    	var evento =
+    		DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5");
 
       Assert.IsInstanceOf(typeof(EventoPropuestoState), evento.GetEstado());
       Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Proponer) == 1);
@@ -225,7 +227,7 @@
       var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
       agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
 
-      var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5");
+      var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
 
       Assert.IsInstanceOf(typeof(EventoAgendadoState), evento.GetEstado());
       Assert.That(evento.GetTrackNews().Count(t => t.Accion == Accion.Agendar) == 1);
@@ -239,7 +241,7 @@
       var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
       agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
 
-      var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5");
+      var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
 
       agenda.Confirmar(evento.Id);
 
@@ -255,7 +257,7 @@
       var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
       agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
 
-      var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5");
+      var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
 
       agenda.Confirmar(evento.Id);
       agenda.Publicar(evento.Id, 0, string.Empty);
@@ -272,7 +274,7 @@
       var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
       agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van);
 
-      var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5");
+      var evento = DefaultEventoRepository.GetActivos().Single(e => e.Titulo == "Html 5");
       agenda.Confirmar(evento.Id);
 
       const string urlWiki = "http://www.altnethispano.org/wiki/van-2010-10-21-mono-cecil.ashx";
@@ -291,7 +293,8 @@
       var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
       agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
 
-      var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5");
+    	var evento =
+    		DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5");
 
       Assert.IsFalse(evento.Estado.GetType() == typeof(EventoAgendadoState));
 
@@ -307,7 +310,8 @@
       var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository);
       agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van);
 
-      var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5");
+    	var evento =
+    		DefaultEventoRepository.GetByState(EventoPropuestoState.GetInstance()).Single(e => e.Titulo == "Html 5");
 
       Assert.IsFalse(evento.Estado.GetType() == typeof(EventoConfirmadoState));
 
--- a/Agendas/trunk/src/Agendas.Tests/PonentesTests.cs	Sun Jun 19 13:35:34 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/PonentesTests.cs	Wed Jun 22 09:32:59 2011 -0300
@@ -25,7 +25,7 @@
 			agenda.Agendar("Conform - Parte 2", "Fabio Maulo", new DateTime(2011, 3, 5),
         urlInvitacion, TipoEvento.Van);
 
-			var eventos = agenda.GetEventosAgendados();
+			var eventos = agenda.GetEventosActivos();
 			Assert.AreEqual(2, eventos.Count);
 
 			publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2));
@@ -51,7 +51,7 @@
 
       agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), urlInvitacion, TipoEvento.Van);
 
-			Assert.AreEqual(1, agenda.GetEventosAgendados().Count);
+			Assert.AreEqual(1, agenda.GetEventosActivos().Count);
 
 			publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
 
@@ -75,7 +75,7 @@
 			agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26),
         urlInvitacion, TipoEvento.Van);
 
-			Assert.AreEqual(1, agenda.GetEventosAgendados().Count);
+			Assert.AreEqual(1, agenda.GetEventosActivos().Count);
 
 			publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
 
@@ -95,7 +95,7 @@
       agenda.Proponer(titulo, "Fabio", urlInvitacion, TipoEvento.Van);
 			Persona persona;
 			{
-				var eventos = agenda.GetEventosPropuestos();
+				var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance());
 				Assert.AreEqual(1, eventos.Count);
 
 				Evento evento = eventos[0];
@@ -107,7 +107,7 @@
 
 			agenda.ModificarPropuesta(eventoId, titulo, null, urlInvitacion);
 			{
-				var eventos = agenda.GetEventosPropuestos();
+				var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance());
 				Assert.AreEqual(1, eventos.Count);
 
 				Evento evento = eventos[0];
@@ -125,7 +125,7 @@
 
       agenda.Proponer(titulo, "Fabio", urlInvitacion, TipoEvento.Van);
 			{
-				var eventos = agenda.GetEventosPropuestos();
+				var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance());
 				Assert.AreEqual(1, eventos.Count);
 
 				Evento evento = eventos[0];
@@ -136,7 +136,7 @@
 
 			agenda.ModificarPropuesta(eventoId, titulo, "José", urlInvitacion);
 			{
-				var eventos = agenda.GetEventosPropuestos();
+				var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance());
 				Assert.AreEqual(1, eventos.Count);
 
 				Evento evento = eventos[0];
--- a/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs	Sun Jun 19 13:35:34 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs	Wed Jun 22 09:32:59 2011 -0300
@@ -19,18 +19,18 @@
 		{
 			var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository);
 
-      agenda.Proponer("Van", null, urlInvitacion, TipoEvento.Van);
+			agenda.Proponer("Van", null, urlInvitacion, TipoEvento.Van);
 			{
-				IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos();
-				IList<Evento> eventosPublicados = agenda.GetEventosAgendados();
+				IList<Evento> eventosPropuestos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance());
+				IList<Evento> eventosAgendados = agenda.GetEventosActivos(EventoAgendadoState.GetInstance());
 
 				Assert.AreEqual(1, eventosPropuestos.Count);
-				Assert.AreEqual(0, eventosPublicados.Count);
+				Assert.AreEqual(0, eventosAgendados.Count);
 
 				var evento = eventosPropuestos.FirstOrDefault();
 				agenda.ModificarPropuesta(evento.Id, "Van 2", "otro ponente", urlInvitacion);
 
-				eventosPropuestos = agenda.GetEventosPropuestos();
+				eventosPropuestos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance());
 				Assert.AreEqual(1, eventosPropuestos.Count);
 
 				evento = eventosPropuestos.FirstOrDefault();
@@ -38,14 +38,14 @@
 				Assert.AreEqual("otro ponente", evento.Ponente.Nombre);
 			}
 
-      var r = agenda.Agendar("Van 2", "jjmontes", DateTime.Now, urlInvitacion, TipoEvento.Van);
+			var r = agenda.Agendar("Van 2", "jjmontes", DateTime.Now, urlInvitacion, TipoEvento.Van);
 			Assert.IsTrue(r.Succeful);
 			{
-				IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos();
-				IList<Evento> eventosPublicados = agenda.GetEventosAgendados();
+				IList<Evento> eventosPropuestos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance());
+				IList<Evento> eventosAgendados = agenda.GetEventosActivos(EventoAgendadoState.GetInstance());
 
 				Assert.AreEqual(0, eventosPropuestos.Count);
-				Assert.AreEqual(1, eventosPublicados.Count);
+				Assert.AreEqual(1, eventosAgendados.Count);
 			}
 		}
 
@@ -55,14 +55,14 @@
 			var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository);
 
 			{
-        agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van);
+				agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van);
 			}
 
 			{
-				var van = agenda.GetEventosPropuestos().FirstOrDefault();
+				var van = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).FirstOrDefault();
 				Assert.IsNotNull(van);
 				var r = agenda.Agendar(van.Titulo, "Ponente", null,
-          urlInvitacion, TipoEvento.Van);
+		  urlInvitacion, TipoEvento.Van);
 				Assert.IsFalse(r.Succeful);
 			}
 		}
@@ -73,16 +73,16 @@
 			var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository);
 
 			{
-        agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van);
+				agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van);
 			}
 
 			{
-				var van = agenda.GetEventosPropuestos().FirstOrDefault();
+				var van = agenda.GetEventosActivos(EventoPropuestoState.GetInstance()).FirstOrDefault();
 				Assert.IsNotNull(van);
 
 				van.Actualizar(null, DateTime.Today.AddDays(5), urlInvitacion);
 				var r = agenda.Agendar(van.Titulo, string.Empty, van.Fecha,
-          urlInvitacion, TipoEvento.Van);
+		  urlInvitacion, TipoEvento.Van);
 				Assert.IsFalse(r.Succeful);
 			}
 		}
@@ -104,7 +104,7 @@
 
 			var agenda = new Agenda(null, repository.Object, DefaultPersonaRepository);
 
-      var r = agenda.Proponer(string.Empty, null, urlInvitacion, TipoEvento.Van);
+			var r = agenda.Proponer(string.Empty, null, urlInvitacion, TipoEvento.Van);
 			Assert.IsFalse(r.Succeful);
 
 			repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0));
@@ -117,16 +117,16 @@
 
 			SetCurrentUser(null, null);
 
-      Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Proponer("Inmortalidad de la meduza.", null, urlInvitacion, TipoEvento.Van));
+			Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Proponer("Inmortalidad de la meduza.", null, urlInvitacion, TipoEvento.Van));
 		}
 
 		[Test]
 		public void Proponer_evento_correctamente()
 		{
 			var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository);
-      agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van);
+			agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van);
 
-			IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos();
+			IList<Evento> eventosPropuestos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance());
 			Assert.IsNotNull(eventosPropuestos);
 			Assert.AreEqual(1, eventosPropuestos.Count);
 			Assert.AreEqual("Van propuesta", eventosPropuestos[0].Titulo);
@@ -137,16 +137,16 @@
 		{
 			var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository);
 
-      agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van);
+			agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van);
 			var r = agenda.Agendar("Van publicada", "jjmontes", DateTime.Now,
-        urlInvitacion, TipoEvento.Van);
+			                       urlInvitacion, TipoEvento.Van);
 			Assert.IsTrue(r.Succeful);
 
-			IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos();
-			IList<Evento> eventosPublicados = agenda.GetEventosAgendados();
+			IList<Evento> eventosPropuestos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance());
+			IList<Evento> eventosAgendados = agenda.GetEventosActivos(EventoAgendadoState.GetInstance());
 
 			Assert.AreEqual(1, eventosPropuestos.Count);
-			Assert.AreEqual(1, eventosPublicados.Count);
+			Assert.AreEqual(1, eventosAgendados.Count);
 		}
 	}
 }
\ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Tests/TrackTests.cs	Sun Jun 19 13:35:34 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/TrackTests.cs	Wed Jun 22 09:32:59 2011 -0300
@@ -19,7 +19,7 @@
 
 			var fecha = DateTime.Now.AddDays(5);
 			agenda.Agendar("Html 5", "jjmontes", fecha, urlInvitacion, TipoEvento.Van);
-			var evento = repository.GetEventosConFecha().First();
+			var evento = repository.GetActivos().First();
 
 			Assert.AreEqual(1, evento.Tracks.Count());
 			var ultimo = evento.Tracks.Last();
@@ -54,7 +54,7 @@
 
 			agenda.Agendar("Html 5", "jjmontes", DateTime.Now,
         urlInvitacion, TipoEvento.Van);
-			var evento = repository.GetEventosConFecha().First();
+			var evento = repository.GetActivos().First();
 
 			Assert.AreEqual(1, evento.Tracks.Count());
 			Assert.AreEqual(Accion.Agendar, evento.Tracks.Last().Accion);
--- a/Agendas/trunk/src/Agendas.Tests/Workflows/WorkflowTests.cs	Sun Jun 19 13:35:34 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/Workflows/WorkflowTests.cs	Wed Jun 22 09:32:59 2011 -0300
@@ -43,7 +43,7 @@
 
 			_workflow.Agendar();
 
-			var evento = DefaultEventoRepository.GetEventosConFecha().SingleOrDefault();
+			var evento = DefaultEventoRepository.GetActivos().SingleOrDefault();
 			Assert.IsNotNull(evento);
 
 			_workflow.Confirmar(evento.Id);
@@ -58,7 +58,7 @@
 
 			_workflow.Agendar();
 
-			var evento = DefaultEventoRepository.GetEventosConFecha().SingleOrDefault();
+			var evento = DefaultEventoRepository.GetActivos().SingleOrDefault();
 			Assert.IsNotNull(evento);
 
 			_workflow.Confirmar(evento.Id);
--- a/Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj	Sun Jun 19 13:35:34 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj	Wed Jun 22 09:32:59 2011 -0300
@@ -66,7 +66,6 @@
     <Compile Include="Controllers\EventoController.cs" />
     <Compile Include="Controllers\HomeController.cs" />
     <Compile Include="Controllers\PerfilController.cs" />
-    <Compile Include="Controllers\PropuestaController.cs" />
     <Compile Include="Global.asax.cs">
       <DependentUpon>Global.asax</DependentUpon>
     </Compile>
@@ -156,14 +155,12 @@
     <Folder Include="App_Data\" />
   </ItemGroup>
   <ItemGroup>
-    <Content Include="Views\Evento\Edit.cshtml" />
+    <Content Include="Views\Evento\Modificar.cshtml" />
     <Content Include="Views\Evento\Index.cshtml" />
-    <Content Include="Views\Evento\New.cshtml" />
+    <Content Include="Views\Evento\Nuevo.cshtml" />
   </ItemGroup>
   <ItemGroup>
-    <Content Include="Views\Propuesta\New.cshtml" />
-    <Content Include="Views\Propuesta\Edit.cshtml" />
-    <Content Include="Views\Propuesta\Index.cshtml" />
+    <Content Include="Views\Evento\Proponer.cshtml" />
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\Agendas.Domain\Agendas.Domain.csproj">
@@ -204,6 +201,9 @@
   <ItemGroup>
     <Content Include="Views\Shared\_Messages.cshtml" />
   </ItemGroup>
+  <ItemGroup>
+    <Content Include="Views\Evento\Agendar.cshtml" />
+  </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
   <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
--- a/Agendas/trunk/src/Agendas.Web/Controllers/EventoController.cs	Sun Jun 19 13:35:34 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Web/Controllers/EventoController.cs	Wed Jun 22 09:32:59 2011 -0300
@@ -14,31 +14,33 @@
 			var agenda = AgendaFactory.GetAgenda();
 
 			var model = new EventoIndexModel
-							{
-								ProximosEventos = from e in agenda.GetEventosAgendados()
-												  orderby e.Fecha
-												  select new EventoDto
-															{
-																Id = e.Id.ToString(),
-																Titulo = e.Titulo,
-																Fecha = e.Fecha.Value,
-																PuedeModificar = e.GetEstado().PuedePromover(Accion.Modificar),
-																PuedeConfirmar = e.GetEstado().PuedePromover(Accion.Confirmar),
-																PuedePublicar = e.GetEstado().PuedePromover(Accion.Publicar)
-															}
-							};
+			            	{
+			            		ProximosEventos = from e in agenda.GetEventosActivos()
+			            		                  orderby e.Fecha
+			            		                  select new EventoDto
+			            		                         	{
+			            		                         		Id = e.Id.ToString(),
+			            		                         		Titulo = e.Titulo,
+			            		                         		Fecha = e.Fecha.HasValue ? e.Fecha.Value.ToShortDateString() : string.Empty,
+																Estado = e.Estado,
+			            		                         		PuedeAgendar = e.GetEstado().PuedePromover(Accion.Agendar),
+			            		                         		PuedeModificar = e.GetEstado().PuedePromover(Accion.Modificar),
+			            		                         		PuedeConfirmar = e.GetEstado().PuedePromover(Accion.Confirmar),
+			            		                         		PuedePublicar = e.GetEstado().PuedePromover(Accion.Publicar)
+			            		                         	}
+			            	};
 			return View(model);
 		}
 
 		[Authorize]
-		public ActionResult New()
+		public ActionResult Nuevo()
 		{
 			return View(new EventoNewModel());
 		}
 
 		[HttpPost]
 		[Authorize]
-		public ActionResult New(EventoNewModel model)
+		public ActionResult Nuevo(EventoNewModel model)
 		{
 			if (ModelState.IsValid)
 			{
@@ -57,24 +59,7 @@
 		}
 
 		[Authorize]
-		public ActionResult Edit(string id)
-		{
-			var agenda = AgendaFactory.GetAgenda();
-			var evento = agenda.GetEvento(new Guid(id));
-
-			var model = new EventoEditModel
-						  {
-							  Id = id,
-							  Titulo = evento.Titulo,
-							  Ponente = evento.Ponente != null ? evento.Ponente.Nombre : string.Empty,
-							  Fecha = evento.Fecha,
-							  UrlInvitacion = evento.UrlInvitacion
-						  };
-			return View(model);
-		}
-
-		[Authorize]
-		public ActionResult Confirm(string id)
+		public ActionResult Confirmar(string id)
 		{
 			var agenda = AgendaFactory.GetAgenda();
 			agenda.Confirmar(new Guid(id));
@@ -84,7 +69,7 @@
 		}
 
 		[Authorize]
-		public ActionResult Publish(string id)
+		public ActionResult Publicar(string id)
 		{
 			var agenda = AgendaFactory.GetAgenda();
 			agenda.Publicar(new Guid(id), 0, string.Empty);
@@ -93,9 +78,26 @@
 			return RedirectToAction("Index");
 		}
 
+		[Authorize]
+		public ActionResult Modificar(string id)
+		{
+			var agenda = AgendaFactory.GetAgenda();
+			var evento = agenda.GetEvento(new Guid(id));
+
+			var model = new EventoEditModel
+			{
+				Id = id,
+				Titulo = evento.Titulo,
+				Ponente = evento.Ponente != null ? evento.Ponente.Nombre : string.Empty,
+				Fecha = evento.Fecha,
+				UrlInvitacion = evento.UrlInvitacion
+			};
+			return View(model);
+		}
+		
 		[HttpPost]
 		[Authorize]
-		public ActionResult Edit(EventoEditModel model)
+		public ActionResult Modificar(EventoEditModel model)
 		{
 			if (ModelState.IsValid)
 			{
@@ -111,5 +113,64 @@
 			}
 			return View(model);
 		}
+
+		[Authorize]
+		public ActionResult Agendar(string id)
+		{
+			var agenda = AgendaFactory.GetAgenda();
+			var evento = agenda.GetEvento(new Guid(id));
+
+			var model = new EventoAgendarModel
+			{
+				Id = id,
+				Titulo = evento.Titulo,
+				Ponente = evento.Ponente != null ? evento.Ponente.Nombre : string.Empty,
+				Fecha = evento.Fecha,
+				UrlInvitacion = evento.UrlInvitacion
+			};
+			return View(model);
+		}
+
+		[HttpPost]
+		[Authorize]
+		public ActionResult Agendar(EventoAgendarModel model)
+		{
+			if (ModelState.IsValid)
+			{
+				var agenda = AgendaFactory.GetAgenda();
+
+				var r = agenda.ModificarEvento(new Guid(model.Id), model.Titulo, model.Ponente, model.Fecha.Value, model.UrlInvitacion);
+				if (r.Succeful)
+				{
+					this.AddNotification("evento agendado");
+					return RedirectToAction("Index");
+				}
+				ModelState.AddModelError("error", r.ToString());
+			}
+			return View(model);
+		}
+
+		[Authorize]
+		public ActionResult Proponer()
+		{
+			return View(new PropuestaNewModel());
+		}
+
+		[HttpPost]
+		[Authorize]
+		public ActionResult Proponer(PropuestaNewModel model)
+		{
+			if (ModelState.IsValid)
+			{
+				var agenda = AgendaFactory.GetAgenda();
+
+				var r = agenda.Proponer(model.Titulo, model.Ponente, model.UrlInvitacion, (TipoEvento)model.Tipo);
+				if (r.Succeful)
+					return RedirectToAction("Index");
+				ModelState.AddModelError("error", r.ToString());
+			}
+			return View(model);
+		}
+
 	}
 }
--- a/Agendas/trunk/src/Agendas.Web/Controllers/PropuestaController.cs	Sun Jun 19 13:35:34 2011 -0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-using System;
-using System.Linq;
-using System.Web.Mvc;
-using AltNetHispano.Agendas.Domain;
-using AltNetHispano.Agendas.Factories;
-using AltNetHispano.Agendas.Web.Models;
-
-namespace AltNetHispano.Agendas.Web.Controllers
-{
-	public class PropuestaController : Controller
-	{
-		public ActionResult Index()
-		{
-			var agenda = AgendaFactory.GetAgenda();
-
-			var model = new PropuestaIndexModel
-			            	{
-			            		Propuestas = from e in agenda.GetEventosPropuestos()
-			            		             select
-			            		             	new PropuestaDto
-			            		             		{
-			            		             			Id = e.Id.ToString(),
-			            		             			Titulo = e.Titulo,
-			            		             			Ponente = e.Ponente != null ? e.Ponente.Nombre : string.Empty
-			            		             		}
-			            	};
-
-			return View(model);
-		}
-
-		[Authorize]
-		public ActionResult New()
-		{
-			return View(new PropuestaNewModel());
-		}
-
-		[HttpPost]
-		[Authorize]
-		public ActionResult New(PropuestaNewModel model)
-		{
-			if (ModelState.IsValid)
-			{
-				var agenda = AgendaFactory.GetAgenda();
-
-        var r = agenda.Proponer(model.Titulo, model.Ponente, model.UrlInvitacion, (TipoEvento)model.Tipo);
-				if (r.Succeful)
-					return RedirectToAction("Index");
-				ModelState.AddModelError("error", r.ToString());
-			}
-			return View(model);
-		}
-
-		[Authorize]
-		public ActionResult Edit(string id)
-		{
-			var agenda = AgendaFactory.GetAgenda();
-			var propuesta = agenda.GetEvento(new Guid(id));
-
-			var model = new PropuestaEditModel
-			            	{
-			            		Id = id,
-			            		Titulo = propuesta.Titulo,
-			            		Ponente = propuesta.Ponente != null ? propuesta.Ponente.Nombre : string.Empty,
-			            		UrlInvitacion = propuesta.UrlInvitacion
-			            	};
-			return View(model);
-		}
-
-		[HttpPost]
-		[Authorize]
-		public ActionResult Edit(PropuestaEditModel model)
-		{
-			if (ModelState.IsValid)
-			{
-				var agenda = AgendaFactory.GetAgenda();
-
-				var r = agenda.ModificarPropuesta(new Guid(model.Id), model.Titulo, model.Ponente, model.UrlInvitacion);
-				if (r.Succeful)
-					return RedirectToAction("Index");
-				ModelState.AddModelError("error", r.ToString());
-			}
-			return View(model);
-		}
-	}
-}
\ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Web/Models/EventoModel.cs	Sun Jun 19 13:35:34 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Web/Models/EventoModel.cs	Wed Jun 22 09:32:59 2011 -0300
@@ -60,13 +60,32 @@
     public string UrlInvitacion { get; set; }
   }
 
+  public class EventoAgendarModel
+  {
+	  [HiddenInput(DisplayValue = false)]
+	  public string Id { get; set; }
+
+	  [Required]
+	  public string Titulo { get; set; }
+
+	  [Required]
+	  public string Ponente { get; set; }
+
+	  [Required]
+	  public DateTime? Fecha { get; set; }
+
+	  [Url]
+	  public string UrlInvitacion { get; set; }
+  }
 
   public class EventoDto
   {
     public string Id { get; set; }
-    public string Titulo { get; set; }
-    public DateTime Fecha { get; set; }
+	public string Titulo { get; set; }
+	public string Estado { get; set; }
+    public string Fecha { get; set; }
 
+	public bool PuedeAgendar { get; set; }
 	public bool PuedeModificar { get; set; }
 	public bool PuedeConfirmar { get; set; }
 	public bool PuedePublicar { get; set; }
--- a/Agendas/trunk/src/Agendas.Web/Models/PropuestaModel.cs	Sun Jun 19 13:35:34 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Web/Models/PropuestaModel.cs	Wed Jun 22 09:32:59 2011 -0300
@@ -5,51 +5,24 @@
 
 namespace AltNetHispano.Agendas.Web.Models
 {
-  public class PropuestaIndexModel
-  {
-    public IEnumerable<PropuestaDto> Propuestas { get; set; }
-  }
+	public class PropuestaNewModel
+	{
+		public PropuestaNewModel()
+		{
+			Tipos = EventoModelHelper.GetTiposEventos();
+		}
 
-  public class PropuestaNewModel
-  {
-    public PropuestaNewModel()
-    {
-      Tipos = EventoModelHelper.GetTiposEventos();
-    }
-
-    [Required]
-    public int Tipo { get; set; }
-
-    [Required]
-    public string Titulo { get; set; }
-
-    public string Ponente { get; set; }
-
-    [Url]
-    public string UrlInvitacion { get; set; }
+		[Required]
+		public int Tipo { get; set; }
 
-    public IEnumerable<TipoEventoModel> Tipos { get; private set; }
-  }
+		[Required]
+		public string Titulo { get; set; }
 
-  public class PropuestaEditModel
-  {
-    [HiddenInput(DisplayValue = false)]
-    public string Id { get; set; }
-
-    [Required]
-    public string Titulo { get; set; }
-
-    public string Ponente { get; set; }
+		public string Ponente { get; set; }
 
-    [Url]
-    public string UrlInvitacion { get; set; }
-  }
-
+		[Url]
+		public string UrlInvitacion { get; set; }
 
-  public class PropuestaDto
-  {
-    public string Id { get; set; }
-    public string Titulo { get; set; }
-    public string Ponente { get; set; }
-  }
+		public IEnumerable<TipoEventoModel> Tipos { get; private set; }
+	}
 }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Agendas/trunk/src/Agendas.Web/Views/Evento/Agendar.cshtml	Wed Jun 22 09:32:59 2011 -0300
@@ -0,0 +1,28 @@
+@model AltNetHispano.Agendas.Web.Models.EventoAgendarModel
+<h2>Agenda</h2>
+<p>
+    Modifique los datos que desea corregir y presione guardar
+</p>
+
+<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
+<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
+
+<script type="text/javascript">
+	$(document).ready(function () {
+		$("#Fecha").datepicker({ dateFormat: 'dd-mm-yy' });
+	});
+</script>
+
+@using (Html.BeginForm())
+{
+    @Html.ValidationSummary(true, "Los datos ingresados no son validos, por favor verifíquelos")
+    <div>
+        <fieldset>
+            <legend>Datos del evento:</legend>
+            @Html.EditorForModel()
+            <p>
+                <input type="submit" value="Guardar" />
+            </p>
+        </fieldset>
+    </div>
+}
\ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Web/Views/Evento/Edit.cshtml	Sun Jun 19 13:35:34 2011 -0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-@model AltNetHispano.Agendas.Web.Models.EventoEditModel
-<h2>Agenda</h2>
-<p>
-    Modifique los datos que desea corregir y presione guardar
-</p>
-
-<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
-<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
-
-<script type="text/javascript">
-	$(document).ready(function () {
-		$("#Fecha").datepicker({ dateFormat: 'dd-mm-yy' });
-	});
-</script>
-
-@using (Html.BeginForm())
-{
-    @Html.ValidationSummary(true, "Los datos ingresados no son validos, por favor verifíquelos")
-    <div>
-        <fieldset>
-            <legend>Datos del evento:</legend>
-            @Html.EditorForModel()
-            <p>
-                <input type="submit" value="Guardar" />
-            </p>
-        </fieldset>
-    </div>
-}
\ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Web/Views/Evento/Index.cshtml	Sun Jun 19 13:35:34 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Web/Views/Evento/Index.cshtml	Wed Jun 22 09:32:59 2011 -0300
@@ -8,6 +8,7 @@
         <tr>
             <th>Fecha</th>
             <th>Evento</th>
+            <th>Estado</th>
             <th>Acciones</th>
         </tr>
     </thead>
@@ -15,21 +16,26 @@
         @foreach (var item in Model.ProximosEventos)
         {
         <tr>
-            <td>@item.Fecha.ToShortDateString()</td>
+            <td>@item.Fecha</td>
             <td>@item.Titulo</td>
+            <td>@item.Estado</td>
             <td>
+				@if (item.PuedeAgendar)
+	{
+					@Html.ActionLink("Agendar", "Agendar", "Evento", new { id = item.Id }, null)
+	}
 				@if (item.PuedeModificar)
-				{
-					@Html.ActionLink("Modificar", "Edit", new { id = item.Id })
-				}
+	{
+					@Html.ActionLink("Modificar", "Modificar", new { id = item.Id })
+	}
 				@if (item.PuedeConfirmar)
-				{
-					@Html.ActionLink("Confirmar", "Confirm", new { id = item.Id })
-				}
+	{
+					@Html.ActionLink("Confirmar", "Confirmar", new { id = item.Id })
+	}
 				@if (item.PuedePublicar)
-				{
-					@Html.ActionLink("Publicar", "Publish", new { id = item.Id })
-				}
+	{
+					@Html.ActionLink("Publicar", "Publicar", new { id = item.Id })
+	}
 			</td>
         </tr>
 		}
@@ -37,5 +43,6 @@
 </table>
     
 <p>
-@Html.ActionLink("Nuevo", "New")
+@Html.ActionLink("Nuevo", "Nuevo")
+@Html.ActionLink("Proponer", "Proponer")
 </p>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Agendas/trunk/src/Agendas.Web/Views/Evento/Modificar.cshtml	Wed Jun 22 09:32:59 2011 -0300
@@ -0,0 +1,28 @@
+@model AltNetHispano.Agendas.Web.Models.EventoEditModel
+<h2>Agenda</h2>
+<p>
+    Modifique los datos que desea corregir y presione guardar
+</p>
+
+<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
+<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
+
+<script type="text/javascript">
+	$(document).ready(function () {
+		$("#Fecha").datepicker({ dateFormat: 'dd-mm-yy' });
+	});
+</script>
+
+@using (Html.BeginForm())
+{
+    @Html.ValidationSummary(true, "Los datos ingresados no son validos, por favor verifíquelos")
+    <div>
+        <fieldset>
+            <legend>Datos del evento:</legend>
+            @Html.EditorForModel()
+            <p>
+                <input type="submit" value="Guardar" />
+            </p>
+        </fieldset>
+    </div>
+}
\ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Web/Views/Evento/New.cshtml	Sun Jun 19 13:35:34 2011 -0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-@model AltNetHispano.Agendas.Web.Models.EventoNewModel
-<h2>Agenda</h2>
-<p>
-    Complete los siguiente datos para agendar un nuevo evento
-</p>
-
-<link href="@Url.Content("~/Content/themes/base/jquery-ui.css")" rel="stylesheet" type="text/css" />
-<script src="@Url.Content("~/Scripts/jquery-ui.js")" type="text/javascript"></script>
-
-<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
-<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
-
-<script type="text/javascript">
-	$(document).ready(function () {
-		$("#Fecha").datepicker({ dateFormat: 'dd-mm-yy' });
-	});
-</script>
-
-@using (Html.BeginForm())
-{
-    @Html.ValidationSummary(true, "Los datos ingresados no son validos, por favor verifíquelos")
-    <div>
-        <fieldset>
-            <legend>Datos del evento:</legend>
-
-            <div class="editor-label">
-              @Html.LabelFor(model=>model.Tipo)
-            </div>
-            <div class="editor-field">
-              @Html.DropDownListFor(model => model.Tipo, new SelectList(Model.Tipos, "TipoEvento", "TipoEventoStr"))
-              @Html.ValidationMessageFor(model => model.Tipo)
-            </div>
-
-            <div class="editor-label">
-              @Html.LabelFor(model=>model.Titulo)
-            </div>
-            <div class="editor-field">
-              @Html.EditorFor(model=>model.Titulo)
-              @Html.ValidationMessageFor(model => model.Titulo)
-            </div>
-
-            <div class="editor-label">
-              @Html.LabelFor(model=>model.Ponente)
-            </div>
-            <div class="editor-field">
-              @Html.EditorFor(model=>model.Ponente)
-              @Html.ValidationMessageFor(model => model.Ponente)
-            </div>
-
-            <div class="editor-label">
-              @Html.LabelFor(model=>model.Fecha)
-            </div>
-            <div class="editor-field">
-              @Html.EditorFor(model=>model.Fecha)
-              @Html.ValidationMessageFor(model => model.Fecha)
-            </div>
-
-            <div class="editor-label">
-              @Html.LabelFor(model=>model.UrlInvitacion)
-            </div>
-            <div class="editor-field">
-              @Html.EditorFor(model => model.UrlInvitacion)
-              @Html.ValidationMessageFor(model => model.UrlInvitacion)
-            </div>
-
-            <p>
-                <input type="submit" value="Guardar" />
-            </p>
-        </fieldset>
-    </div>
-}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Agendas/trunk/src/Agendas.Web/Views/Evento/Nuevo.cshtml	Wed Jun 22 09:32:59 2011 -0300
@@ -0,0 +1,71 @@
+@model AltNetHispano.Agendas.Web.Models.EventoNewModel
+<h2>Agenda</h2>
+<p>
+    Complete los siguiente datos para agendar un nuevo evento
+</p>
+
+<link href="@Url.Content("~/Content/themes/base/jquery-ui.css")" rel="stylesheet" type="text/css" />
+<script src="@Url.Content("~/Scripts/jquery-ui.js")" type="text/javascript"></script>
+
+<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
+<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
+
+<script type="text/javascript">
+	$(document).ready(function () {
+		$("#Fecha").datepicker({ dateFormat: 'dd-mm-yy' });
+	});
+</script>
+
+@using (Html.BeginForm())
+{
+    @Html.ValidationSummary(true, "Los datos ingresados no son validos, por favor verifíquelos")
+    <div>
+        <fieldset>
+            <legend>Datos del evento:</legend>
+
+            <div class="editor-label">
+              @Html.LabelFor(model=>model.Tipo)
+            </div>
+            <div class="editor-field">
+              @Html.DropDownListFor(model => model.Tipo, new SelectList(Model.Tipos, "TipoEvento", "TipoEventoStr"))
+              @Html.ValidationMessageFor(model => model.Tipo)
+            </div>
+
+            <div class="editor-label">
+              @Html.LabelFor(model=>model.Titulo)
+            </div>
+            <div class="editor-field">
+              @Html.EditorFor(model=>model.Titulo)
+              @Html.ValidationMessageFor(model => model.Titulo)
+            </div>
+
+            <div class="editor-label">
+              @Html.LabelFor(model=>model.Ponente)
+            </div>
+            <div class="editor-field">
+              @Html.EditorFor(model=>model.Ponente)
+              @Html.ValidationMessageFor(model => model.Ponente)
+            </div>
+
+            <div class="editor-label">
+              @Html.LabelFor(model=>model.Fecha)
+            </div>
+            <div class="editor-field">
+              @Html.EditorFor(model=>model.Fecha)
+              @Html.ValidationMessageFor(model => model.Fecha)
+            </div>
+
+            <div class="editor-label">
+              @Html.LabelFor(model=>model.UrlInvitacion)
+            </div>
+            <div class="editor-field">
+              @Html.EditorFor(model => model.UrlInvitacion)
+              @Html.ValidationMessageFor(model => model.UrlInvitacion)
+            </div>
+
+            <p>
+                <input type="submit" value="Guardar" />
+            </p>
+        </fieldset>
+    </div>
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Agendas/trunk/src/Agendas.Web/Views/Evento/Proponer.cshtml	Wed Jun 22 09:32:59 2011 -0300
@@ -0,0 +1,54 @@
+@model AltNetHispano.Agendas.Web.Models.PropuestaNewModel
+<h2>Agenda</h2>
+<p>
+    Complete los siguiente datos para proponer un nuevo tema
+</p>
+
+<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
+<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
+
+@using (Html.BeginForm())
+{
+    @Html.ValidationSummary(true, "Los datos ingresados no son validos, por favor verifíquelos")
+    <div>
+        <fieldset>
+            <legend>Datos de la propuesta:</legend>
+
+            <div class="editor-label">
+              @Html.LabelFor(model=>model.Tipo)
+            </div>
+            <div class="editor-field">
+              @Html.DropDownListFor(model => model.Tipo, new SelectList(Model.Tipos, "TipoEvento", "TipoEventoStr"))
+              @Html.ValidationMessageFor(model => model.Tipo)
+            </div>
+
+            <div class="editor-label">
+              @Html.LabelFor(model=>model.Titulo)
+            </div>
+            <div class="editor-field">
+              @Html.EditorFor(model=>model.Titulo)
+              @Html.ValidationMessageFor(model => model.Titulo)
+            </div>
+
+            <div class="editor-label">
+              @Html.LabelFor(model=>model.Ponente)
+            </div>
+            <div class="editor-field">
+              @Html.EditorFor(model=>model.Ponente)
+              @Html.ValidationMessageFor(model => model.Ponente)
+            </div>
+
+            <div class="editor-label">
+              @Html.LabelFor(model=>model.UrlInvitacion)
+            </div>
+            <div class="editor-field">
+              @Html.EditorFor(model => model.UrlInvitacion)
+              @Html.ValidationMessageFor(model => model.UrlInvitacion)
+            </div>
+
+            <p>
+                <input type="submit" value="Guardar" />
+            </p>
+        </fieldset>
+    </div>
+}
\ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Web/Views/Propuesta/Edit.cshtml	Sun Jun 19 13:35:34 2011 -0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-@model AltNetHispano.Agendas.Web.Models.PropuestaEditModel
-<h2>Propuestas</h2>
-<p>
-    Modifique los datos que desea corregir y presione guardar
-</p>
-
-<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
-<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
-
-@using (Html.BeginForm())
-{
-    @Html.ValidationSummary(true, "Los datos ingresados no son validos, por favor verifíquelos")
-    <div>
-        <fieldset>
-            <legend>Datos de la propuesta:</legend>
-            @Html.EditorForModel()
-            <p>
-                <input type="submit" value="Guardar" />
-            </p>
-        </fieldset>
-    </div>
-}
\ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Web/Views/Propuesta/Index.cshtml	Sun Jun 19 13:35:34 2011 -0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-@model AltNetHispano.Agendas.Web.Models.PropuestaIndexModel
-<h2>Propuestas</h2>
-<p>
-    Temas propuestos aun no agendados
-</p>
-<table>
-    <thead>
-        <tr>
-            <th>Propuesta</th>
-            <th>Ponente</th>
-            <th>Acciones</th>
-        </tr>
-    </thead>
-    <tbody>
-        @foreach (var item in Model.Propuestas)
-        {
-        <tr>
-            <td>@item.Titulo</td>
-            <td>@item.Ponente</td>
-            <td>
-				@Html.ActionLink("Modificar", "Edit", new { id = item.Id })
-				@Html.ActionLink("Agendar", "Edit", "Evento", new { id = item.Id }, null)
-			</td>
-        </tr>
-        }
-    </tbody>
-</table>
-
-<p>
-@Html.ActionLink("Nueva", "New")
-</p>
--- a/Agendas/trunk/src/Agendas.Web/Views/Propuesta/New.cshtml	Sun Jun 19 13:35:34 2011 -0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-@model AltNetHispano.Agendas.Web.Models.PropuestaNewModel
-<h2>Agenda</h2>
-<p>
-    Complete los siguiente datos para proponer un nuevo tema
-</p>
-
-<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
-<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
-
-@using (Html.BeginForm())
-{
-    @Html.ValidationSummary(true, "Los datos ingresados no son validos, por favor verifíquelos")
-    <div>
-        <fieldset>
-            <legend>Datos de la propuesta:</legend>
-
-            <div class="editor-label">
-              @Html.LabelFor(model=>model.Tipo)
-            </div>
-            <div class="editor-field">
-              @Html.DropDownListFor(model => model.Tipo, new SelectList(Model.Tipos, "TipoEvento", "TipoEventoStr"))
-              @Html.ValidationMessageFor(model => model.Tipo)
-            </div>
-
-            <div class="editor-label">
-              @Html.LabelFor(model=>model.Titulo)
-            </div>
-            <div class="editor-field">
-              @Html.EditorFor(model=>model.Titulo)
-              @Html.ValidationMessageFor(model => model.Titulo)
-            </div>
-
-            <div class="editor-label">
-              @Html.LabelFor(model=>model.Ponente)
-            </div>
-            <div class="editor-field">
-              @Html.EditorFor(model=>model.Ponente)
-              @Html.ValidationMessageFor(model => model.Ponente)
-            </div>
-
-            <div class="editor-label">
-              @Html.LabelFor(model=>model.UrlInvitacion)
-            </div>
-            <div class="editor-field">
-              @Html.EditorFor(model => model.UrlInvitacion)
-              @Html.ValidationMessageFor(model => model.UrlInvitacion)
-            </div>
-
-            <p>
-                <input type="submit" value="Guardar" />
-            </p>
-        </fieldset>
-    </div>
-}
\ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Web/Views/Shared/_Menu.cshtml	Sun Jun 19 13:35:34 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Web/Views/Shared/_Menu.cshtml	Wed Jun 22 09:32:59 2011 -0300
@@ -1,6 +1,5 @@
 <ul id="menu">
     <li>@Html.ActionLink("Home", "Index", "Home")</li>
-    <li>@Html.ActionLink("Propuestas", "Index", "Propuesta")</li>
     <li>@Html.ActionLink("Eventos", "Index", "Evento")</li>
     <li>@Html.ActionLink("Histórico", "Index", "Histórico")</li>
 @if (Request.IsAuthenticated)