view Agendas/trunk/src/Agendas.Web/Controllers/PropuestaController.cs @ 94:db4b1e2cae49

Cambio del nombre de la clase Ponente a Persona Se agrega la clase Cuenta para identificar cada una de las cuentas con que se puede autenticar una persona Alta Automatica de cuentas de twitter creando la persona
author Nelo@Kenia.neluz.int
date Sat, 04 Jun 2011 12:11:17 -0300
parents c8897b1c6f49
children 2434c2323f3d
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.Persona != null ? e.Persona.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.Persona != null ? propuesta.Persona.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);
		}
	}
}