view Agendas/trunk/src/Agendas.Web/Controllers/EventoController.cs @ 110:a456eb519e23

Lanzando twitts desde el sitio con la cuenta de AltNetHispanoDESA
author Nelo@Kenia.neluz.int
date Wed, 08 Jun 2011 07:33:14 -0300
parents 80c22175c9b5
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);
    }
  }
}