view Agendas/trunk/src/Agendas.Web/Controllers/PatrocinadorApiController.cs @ 286:a8f7c41e3b47

#196: Patrocinadores, en el histórico de eventos.
author juanjose.montesdeocaarbos
date Mon, 02 Jan 2012 15:51:19 -0300
parents c8f378272407
children 1408ac17cb64
line wrap: on
line source

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

namespace AltNetHispano.Agendas.Web.Controllers
{
    public class PatrocinadorApiController : Controller
    {
		private HttpServerUtilityBase _server;

		public HttpServerUtilityBase HttpServer
		{
			get
			{
				if (_server == null)
				{
					var httpServer = HttpContext.Server;
					_server = httpServer;
				}

				return _server;
			}
		}

		public PatrocinadorApiController()
		{ }

		public PatrocinadorApiController(HttpServerUtilityBase server)
		{
			_server = server;
		}

		//[CustomAuthorize(Roles = Roles.Administrador)]
		public PartialViewResult Nuevo()
        {
			var model = new PatrocinadorNewModel();
			return PartialView(model);
        }

		[HttpPost]
		//[CustomAuthorize(Roles = Roles.Administrador)]
		public JsonResult Nuevo(PatrocinadorNewModel model)
		{
			if (ModelState.IsValid)
			{
				var patrocinadores = AgendaFactory.GetPatrocinadorRepository();
				if (patrocinadores.GetByNombre(model.Nombre) == null)
				{
					var tempLogoFile = Path.Combine(HttpServer.MapPath("~/App_Data"),
													model.Nombre +
													model.Logo.FileName.Substring(model.Logo.FileName.LastIndexOf(".")));
					model.Logo.SaveAs(tempLogoFile);
					var patrocinador = new Patrocinador(model.Nombre);
					patrocinador.LoadLogo(tempLogoFile);

					patrocinadores.Save(patrocinador);
					
					return Json(new Resultado(true, string.Empty));
				}
				return Json(new Resultado(false, "El patrocinador ya existe."));
			}

			return Json(new Resultado(false, string.Join(",", ModelState.Values)));
		}
	}
}