view Agendas/trunk/src/Agendas.Web/Controllers/PersonaController.cs @ 144:a2b14da4902f

Alta y modificación de ponentes (personas)
author Nelo@Guinea.neluz.int
date Mon, 01 Aug 2011 10:25:23 -0300
parents
children 23aaf98b8377
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 PersonaController : Controller
    {
        public ActionResult Index()
        {
            var personas = AgendaFactory.GetPersonaService();

            var model = new PersonaIndexModel {Items = from p in personas.GetAll() select new PersonaDto{Id=p.Id, Nombre = p.Nombre}};

            return View(model);
        }

        public ActionResult Nueva()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Nueva(PersonaNewModel model)
        {
            if (ModelState.IsValid)
            {
                var personas = AgendaFactory.GetPersonaService();
                var r = personas.Add(model.Nombre, model.Twitter, model.EMail);
                if (r.Succeful)
                {
                    this.AddNotification("Los datos fueron guardados");
                    return RedirectToAction("Index");
                }
                else
                    this.AddError(r.Message);
            }

            return View(model);
        }

        public ActionResult Modificar(string id)
        {
            var personas = AgendaFactory.GetPersonaService();

            var persona = personas.GetById(new Guid(id));
            if (persona==null)
            {
                this.AddError("No se encontró la persona que intenta modificar");
                return RedirectToAction("Index");
            }

            var model = new PersonaEditModel
                            {Id = persona.Id.ToString(), Nombre = persona.Nombre, Twitter = persona.Twitter, EMail = persona.Mail};
            
            return View(model);
        }

        [HttpPost]
        public ActionResult Modificar(PersonaEditModel model)
        {
            if (ModelState.IsValid)
            {
                var personas = AgendaFactory.GetPersonaService();
                var r = personas.Update(new Guid(model.Id), model.Nombre, model.Twitter, model.EMail);
                if (r.Succeful)
                {
                    this.AddNotification("Los datos fueron guardados");
                    return RedirectToAction("Index");
                }
                else
                    this.AddError(r.Message);
            }

            return View(model);
        }
    }
}