diff Agendas/trunk/src/Agendas.Web/Controllers/PropuestaController.cs @ 26:71b02443450a

UI de Propuestas de VANs
author nelo@MTEySS.neluz.int
date Tue, 15 Mar 2011 08:45:00 -0300
parents
children 29b8a8893ba3
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Agendas/trunk/src/Agendas.Web/Controllers/PropuestaController.cs	Tue Mar 15 08:45:00 2011 -0300
@@ -0,0 +1,98 @@
+using System;
+using System.Linq;
+using System.Web.Mvc;
+using Agendas.Factories;
+using Agendas.Web.Models;
+using AltNetHispano.Agendas.Domain.Exceptions;
+
+namespace Agendas.Web.Controllers
+{
+	public class PropuestaController : Controller
+	{
+		public ActionResult Index()
+		{
+			var model = GetIndexModel();
+			return View(model);
+		}
+
+		private static PropuestaIndexModel GetIndexModel()
+		{
+			var agenda = AgendaFactory.GetAgenda();
+
+			return new PropuestaIndexModel
+			       	{
+			       		Propuestas = from e in agenda.GetEventosPropuestos()
+			       		             select new PropuestaDto {Id = e.Id.ToString(), Titulo = e.Titulo, Ponente = e.Ponente.Nombre}
+			       	};
+		}
+
+		[Authorize]
+		public ActionResult New()
+		{
+			return View();
+		}
+
+		[HttpPost]
+		[Authorize]
+		public ActionResult New(PropuestaNewModel model)
+		{
+			if (ModelState.IsValid)
+			{
+				var agenda = AgendaFactory.GetAgenda();
+
+				try
+				{
+					agenda.Proponer(model.Titulo, model.Ponente);
+
+					return View("Index", GetIndexModel());
+				}
+				catch (ValidationException ex)
+				{
+					ModelState.AddModelError("error", ex.ToString());
+				}
+			}
+			return View(model);
+		}
+
+		[Authorize]
+		public ActionResult Edit(string id)
+		{
+			var agenda = AgendaFactory.GetAgenda();
+			var propuesta = agenda.GetEvento(new Guid(id));
+			if (propuesta != null)
+			{
+				var model = new PropuestaEditModel
+				            	{
+				            		Id = id,
+				            		Titulo = propuesta.Titulo,
+				            		Ponente = propuesta.Ponente != null ? propuesta.Ponente.Nombre : string.Empty
+				            	};
+				return View(model);
+			}
+			ModelState.AddModelError("error", "No se encontró el Propuesta que quiere modificar");
+			return View();
+		}
+
+		[HttpPost]
+		[Authorize]
+		public ActionResult Edit(PropuestaEditModel model)
+		{
+			if (ModelState.IsValid)
+			{
+				var agenda = AgendaFactory.GetAgenda();
+
+				try
+				{
+					agenda.ModificarPropuesta(new Guid(model.Id), model.Titulo, model.Ponente);
+
+					return View("Index", GetIndexModel());
+				}
+				catch (ValidationException ex)
+				{
+					ModelState.AddModelError("error", ex.ToString());
+				}
+			}
+			return View(model);
+		}
+	}
+}
\ No newline at end of file