diff Agendas/trunk/src/Agendas.Web/Controllers/PatrocinadorController.cs @ 278:6f5ab71614d4

#125: ABM de patrocinadores.
author juanjose.montesdeocaarbos
date Wed, 21 Dec 2011 08:47:05 -0300
parents bf993f99cee3
children 1e889a2e45c5
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Web/Controllers/PatrocinadorController.cs	Tue Dec 20 08:28:33 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Web/Controllers/PatrocinadorController.cs	Wed Dec 21 08:47:05 2011 -0300
@@ -14,14 +14,27 @@
 {
     public class PatrocinadorController : Controller
     {
-    	private IHttpServer _server;
+		private HttpServerUtilityBase _server;
+
+		public HttpServerUtilityBase HttpServer
+		{
+			get
+			{
+				if (_server == null)
+				{
+					var httpServer = HttpContext.Server;
+					_server =  httpServer;
+				}
+
+				return _server;
+			}
+		}
 
 		public PatrocinadorController()
 		{
-			_server = (IHttpServer)ControllerContext.HttpContext.Server;
 		}
 
-		public PatrocinadorController(IHttpServer server)
+		public PatrocinadorController(HttpServerUtilityBase server)
 		{
 			_server = server;
 		}
@@ -65,43 +78,69 @@
 		{
 			if (ModelState.IsValid)
 			{
-				var tempLogoFile = Path.Combine(_server.MapPath("~/App_Data"), model.Nombre + model.Logo.FileName.Substring(model.Logo.FileName.LastIndexOf(".")));
+				var tempLogoFile = Path.Combine(HttpServer.MapPath("~/App_Data"),
+												model.Nombre +
+												model.Logo.FileName.Substring(model.Logo.FileName.LastIndexOf(".")));
 				model.Logo.SaveAs(tempLogoFile);
 
 				var patrocinadores = AgendaFactory.GetPatrocinadorRepository();
 
-				var patrocinador = new Patrocinador(model.Nombre);
-				patrocinador.LoadLogo(tempLogoFile);
-				
-				patrocinadores.Save(patrocinador);
+				if (patrocinadores.GetByNombre(model.Nombre) == null)
+				{
+					var patrocinador = new Patrocinador(model.Nombre);
+					patrocinador.LoadLogo(tempLogoFile);
 
-				return RedirectToAction("Index");
+					patrocinadores.Save(patrocinador);
+
+					return RedirectToAction("Index");
+				}
+				this.AddError("El patrocinador ya existe.");
 			}
 
 			return View("DefaultEditor", model);
         }
 
-    	[CustomAuthorize(Roles = Roles.Administrador)]
-		public ActionResult Modificar(int id)
-        {
-            return View();
-        }
+		[CustomAuthorize(Roles = Roles.Administrador)]
+		public ActionResult Modificar(string id)
+		{
+			var patrocinadores = AgendaFactory.GetPatrocinadorRepository();
 
-        [HttpPost]
+			var patrocinador = patrocinadores.GetById(id);
+			if (patrocinador == null)
+			{
+				this.AddError("No se encontrĂ³ el patrocinador que intenta modificar");
+				return RedirectToAction("Index");
+			}
+			var model = new PatrocinadorNewModel();
+			return View("DefaultEditor", model);
+		}
+
+		[HttpPost]
 		[CustomAuthorize(Roles = Roles.Administrador)]
-		public ActionResult Modificar(int id, FormCollection collection)
-        {
-            try
-            {
-                // TODO: Add update logic here
- 
-                return RedirectToAction("Index");
-            }
-            catch
-            {
-                return View();
-            }
-        }
+		public ActionResult Modificar(PatrocinadorEditModel model)
+		{
+			if (ModelState.IsValid)
+			{
+				var tempLogoFile = Path.Combine(HttpServer.MapPath("~/App_Data"),
+												model.Nombre +
+												model.Logo.FileName.Substring(model.Logo.FileName.LastIndexOf(".")));
+				model.Logo.SaveAs(tempLogoFile);
+
+				var patrocinadores = AgendaFactory.GetPatrocinadorRepository();
+
+				if (patrocinadores.GetByNombre(model.Nombre) != null)
+				{
+					var patrocinador = new Patrocinador(model.Nombre);
+					patrocinador.LoadLogo(tempLogoFile);
+
+					patrocinadores.Save(patrocinador);
+
+					return RedirectToAction("Index");
+				}
+				this.AddError("No se encuentra el patrocinador.");
+			}
+			return View("DefaultEditor", model);
+		}
 
 		[CustomAuthorize(Roles = Roles.Administrador)]
 		public ActionResult Quitar(int id)