Mercurial > altnet-hispano
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); + } + } }