Mercurial > altnet-hispano
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