view Agendas/trunk/src/Agendas.Web/Controllers/PersonaController.cs @ 185:2d02adb79322

Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio. Se modifica la propiedad Fecha del Evento, renombrandola FechaInicio. En el ModelView se agrega propiedades Duración y Hora del Evento cuando es Modificado, Nuevo y Agendado. Las fechas ingresadas son creadas en sistema UTC Queda pendiente Agregar duración a Google Calendar.
author alabra
date Tue, 09 Aug 2011 01:04:27 -0400
parents 222362c29416
children a36a76bd6ec3
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 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);
        }

		[CustomAuthorize(Roles = Roles.Administrador)]
		public ActionResult Nueva()
        {
            var model = new PersonaNewModel();
            return View("Defaulteditor", model);
        }

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

            return View("Defaulteditor", model);
        }

		[CustomAuthorize(Roles = Roles.Administrador)]
		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,
        	            		Blog = persona.Blog,
								Roles = persona.Roles.ToArray()
        	            	};

            return View("Defaulteditor", model);
        }

        [HttpPost]
		[CustomAuthorize(Roles = Roles.Administrador)]
		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, model.Blog, model.Roles);
                if (r.Succeful)
                {
                    this.AddNotification("Los datos fueron guardados");
                    return RedirectToAction("Index");
                }
            	this.AddError(r.Message);
            }

            return View("Defaulteditor", model);
        }
    }
}