view Agendas/trunk/src/Agendas.Web/Controllers/EventoController.cs @ 106:80c22175c9b5

agregado de tipo de evento (van, cafe, grupoestudio) agregado de tipo de evento en el alta de evento y en el alta de propuestas desde la app web algunas correcciones en el publicador del blog agregado de textos para publicar en el blog eventos de tipo alt.net cafe
author jorge.rowies
date Mon, 06 Jun 2011 14:07:12 -0300
parents 2434c2323f3d
children 53bcd338542b
line wrap: on
line source

using System;
using System.Linq;
using System.Web.Mvc;
using AltNetHispano.Agendas.Domain;
using AltNetHispano.Agendas.Factories;
using AltNetHispano.Agendas.Web.Models;

namespace AltNetHispano.Agendas.Web.Controllers
{
  public class EventoController : Controller
  {
    public ActionResult Index()
    {
      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 }
      };

      return View(model);
    }

    [Authorize]
    public ActionResult New()
    {
      return View(new EventoNewModel());
    }

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

        var r = agenda.Agendar(model.Titulo, model.Ponente, model.Fecha,
          model.UrlInvitacion, (TipoEvento)model.Tipo);
        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 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)
    {
      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)
          return RedirectToAction("Index");
        ModelState.AddModelError("error", r.ToString());
      }
      return View(model);
    }
  }
}