Mercurial > altnet-hispano
changeset 14:ed6d842abf42
Modificar evento
author | nelo@MTEySS.neluz.int |
---|---|
date | Sun, 13 Mar 2011 20:49:15 -0300 |
parents | da95298db862 |
children | 08b9e96132a5 |
files | Agendas/trunk/src/Agendas.Domain/Agenda.cs Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj Agendas/trunk/src/Agendas.Web/Controllers/AgendaController.cs Agendas/trunk/src/Agendas.Web/Models/AgendaModel.cs Agendas/trunk/src/Agendas.Web/Views/Agenda/Edit.cshtml |
diffstat | 5 files changed, 97 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs Sun Mar 13 20:24:20 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs Sun Mar 13 20:49:15 2011 -0300 @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using AltNetHispano.Agendas.Domain.Exceptions; namespace AltNetHispano.Agendas.Domain @@ -36,6 +37,9 @@ if (string.IsNullOrWhiteSpace(evento.Ponente)) throw new ValidationException(); + //TODO: persistir el evento! + if (evento.Id==Guid.Empty) evento.Id = Guid.NewGuid(); + _eventosPublicados.Add(evento); } @@ -68,9 +72,28 @@ return seguridad == null || seguridad.GetPrincipal() == null || seguridad.GetPrincipal().Identity == null || string.IsNullOrWhiteSpace(seguridad.GetPrincipal().Identity.Name); } - } + + public void ModificarEvento(Guid id, string titulo, string ponente, DateTime? fecha) + { + var evento = _eventosPublicados.SingleOrDefault(e => e.Id == id); + if (evento == null) + throw new EventoNotFoundException(); + evento.Titulo = titulo; + evento.Ponente = ponente; + evento.Fecha = fecha; + } - public class UsuarioNoAutenticadoException : Exception + public Evento GetEventoPublicado(Guid id) + { + return _eventosPublicados.SingleOrDefault(e => e.Id == id); + } + } + + public class EventoNotFoundException : Exception + { + } + + public class UsuarioNoAutenticadoException : Exception { } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj Sun Mar 13 20:24:20 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj Sun Mar 13 20:49:15 2011 -0300 @@ -136,6 +136,9 @@ <Name>Agendas.Domain</Name> </ProjectReference> </ItemGroup> + <ItemGroup> + <Content Include="Views\Agenda\Edit.cshtml" /> + </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
--- a/Agendas/trunk/src/Agendas.Web/Controllers/AgendaController.cs Sun Mar 13 20:24:20 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Controllers/AgendaController.cs Sun Mar 13 20:49:15 2011 -0300 @@ -52,5 +52,39 @@ } return View(model); } + + public ActionResult Edit(string id) + { + var agenda = AgendaFactory.GetAgenda(); + var evento = agenda.GetEventoPublicado(new Guid(id)); + if (evento!=null) + { + var model = new AgendaEditModel {Id = id, Titulo = evento.Titulo, Ponente = evento.Ponente, Fecha = evento.Fecha}; + return View(model); + } + ModelState.AddModelError("error","No se encontró el evento que quiere modificar"); + return View(); + } + + [HttpPost] + public ActionResult Edit(AgendaEditModel model) + { + if (ModelState.IsValid) + { + var agenda = AgendaFactory.GetAgenda(); + + try + { + agenda.ModificarEvento(new Guid(model.Id), model.Titulo, model.Ponente, model.Fecha); + + return View("Index", GetIndexModel()); + } + catch (ValidationException ex) + { + ModelState.AddModelError("error", ex.ToString()); + } + } + return View(model); + } } }
--- a/Agendas/trunk/src/Agendas.Web/Models/AgendaModel.cs Sun Mar 13 20:24:20 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Models/AgendaModel.cs Sun Mar 13 20:49:15 2011 -0300 @@ -34,7 +34,7 @@ public string Ponente { get; set; } [Required(ErrorMessage = "debe ingresar la fecha del evento")] - public DateTime Fecha { get; set; } + public DateTime? Fecha { get; set; } }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Web/Views/Agenda/Edit.cshtml Sun Mar 13 20:49:15 2011 -0300 @@ -0,0 +1,34 @@ +@model Agendas.Web.Models.AgendaEditModel +@{ + ViewBag.Title = "Agenda"; +} + +<p> + Modifique los datos que desea corregir y presione guardar +</p> + +<link href="@Url.Content("~/Content/themes/base/jquery-ui.css")" rel="stylesheet" type="text/css" /> +<script src="@Url.Content("~/Scripts/jquery-ui.js")" type="text/javascript"></script> + +<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> +<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> + +<script type="text/javascript"> + $(document).ready(function () { + $("#Fecha").datepicker({ dateFormat: 'dd-mm-yy' }); + }); +</script> + +@using (Html.BeginForm()) +{ + @Html.ValidationSummary(true, "Los datos ingresados no son validos, por favor verifíquelos") + <div> + <fieldset> + <legend>Datos del evento:</legend> + @Html.EditorForModel() + <p> + <input type="submit" value="Guardar" /> + </p> + </fieldset> + </div> +} \ No newline at end of file