view Agendas/trunk/src/Agendas.Web/Controllers/PropuestaController.cs @ 89:24e9488ac152

mapeo de property UrlInvitacion entre viewmodel y entity
author jorge.rowies
date Tue, 31 May 2011 16:31:24 -0300
parents c8897b1c6f49
children db4b1e2cae49
line wrap: on
line source

using System;
using System.Linq;
using System.Web.Mvc;
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();
		}

		[HttpPost]
		[Authorize]
		public ActionResult New(PropuestaNewModel model)
		{
			if (ModelState.IsValid)
			{
				var agenda = AgendaFactory.GetAgenda();

				var r = agenda.Proponer(model.Titulo, model.Ponente, model.UrlInvitacion);
				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);
		}
	}
}