diff Agendas/trunk/src/Agendas.Web/Controllers/EventoController.cs @ 118:b74734a1a755

Manejo de eventos por estado
author Nelo@Kenia.neluz.int
date Wed, 22 Jun 2011 09:32:59 -0300
parents 7ef7e4bb71f6
children 6f1041301797
line wrap: on
line diff
--- 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);
+		}
+
 	}
 }