view Agendas/trunk/src/Agendas.Web/Controllers/PropuestaController.cs @ 27:29b8a8893ba3

Mejoras menores en UI
author nelo@MTEySS.neluz.int
date Tue, 15 Mar 2011 09:14:52 -0300
parents 71b02443450a
children 475be11edf56
line wrap: on
line source

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 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.Nombre }
			};

			return View(model);
		}

		[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 RedirectToAction("Index");
				}
				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 RedirectToAction("Index");
				}
				catch (ValidationException ex)
				{
					ModelState.AddModelError("error", ex.ToString());
				}
			}
			return View(model);
		}
	}
}