Mercurial > altnet-hispano
changeset 106:80c22175c9b5
agregado de tipo de evento (van, cafe, grupoestudio)
agregado de tipo de evento en el alta de evento y en el alta de propuestas desde la app web
algunas correcciones en el publicador del blog
agregado de textos para publicar en el blog eventos de tipo alt.net cafe
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Blog/Agendas.Blog.csproj Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Blog/Agendas.Blog.csproj Mon Jun 06 14:07:12 2011 -0300 @@ -48,6 +48,7 @@ <Compile Include="Impl\BlogPublicador.cs" /> <Compile Include="Exceptions\BlogWriterMasterKeyNotFoundException.cs" /> <Compile Include="Impl\BlogPublicadorConfig.cs" /> + <Compile Include="Exceptions\TipoEventoNoSoportadoException.cs" /> <Compile Include="IPostWriter.cs" /> <Compile Include="IPostWriterFactory.cs" /> <Compile Include="Impl\NullObjectPostWriter.cs" />
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Blog/Exceptions/TipoEventoNoSoportadoException.cs Mon Jun 06 14:07:12 2011 -0300 @@ -0,0 +1,13 @@ +using System; +using System.Globalization; + +namespace Agendas.Blog.Exceptions +{ + public class TipoEventoNoSoportadoException : Exception + { + public TipoEventoNoSoportadoException(string tipoEvento) + : base(string.Format(CultureInfo.InvariantCulture, "El tipo de evento '{0}' no esta soportado por el publicador de blog", tipoEvento)) + { + } + } +} \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Blog/Impl/AgendarReunionPostWriter.cs Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Blog/Impl/AgendarReunionPostWriter.cs Mon Jun 06 14:07:12 2011 -0300 @@ -1,5 +1,6 @@ using System; using System.Globalization; +using Agendas.Blog.Exceptions; using Agendas.Blog.Properties; using AltNetHispano.Agendas.Domain; using System.Linq; @@ -13,17 +14,34 @@ } protected override string GetTitle(Track track) - { - return string.Format(CultureInfo.InvariantCulture, Resources.VAN_Realizacion_Title, + { + string resourceName = getTitleResourceName(track); + + return string.Format(CultureInfo.InvariantCulture, resourceName, track.Evento.Ponente.Nombre, //Nombre y apellido del ponente track.Evento.Titulo //Tema a tratar en la reunion ); - } + } - protected override string GetBody(Track track) + private string getTitleResourceName(Track track) + { + string resourceName; + if (track.Evento.Tipo == TipoEvento.Van) + resourceName = Resources.VAN_Agendar_Title; + else if (track.Evento.Tipo == TipoEvento.Cafe) + resourceName = Resources.Cafe_Agendar_Title; + else + throw new TipoEventoNoSoportadoException(track.Evento.Tipo.ToString()); + + return resourceName; + } + + protected override string GetBody(Track track) { + string resourceName = getBodyResourceName(track); + var fecha = getFechaFormateada(track.Evento.Fecha); - return string.Format(CultureInfo.InvariantCulture, Resources.VAN_Realizacion_Body, + return string.Format(CultureInfo.InvariantCulture, resourceName, fecha, //Fecha y hora en GMT+0 track.Evento.Ponente.Nombre, //Nombre y apellido del ponente track.Evento.Titulo, //Tema a tratar en la reunion @@ -32,6 +50,19 @@ ); } + private string getBodyResourceName(Track track) + { + string resourceName; + if (track.Evento.Tipo == TipoEvento.Van) + resourceName = Resources.VAN_Agendar_Body; + else if (track.Evento.Tipo == TipoEvento.Cafe) + resourceName = Resources.Cafe_Agendar_Body; + else + throw new TipoEventoNoSoportadoException(track.Evento.Tipo.ToString()); + + return resourceName; + } + private string getFechaFormateada(DateTime? fecha) { if (fecha == null) @@ -49,7 +80,7 @@ { if (!string.IsNullOrEmpty(evento.UrlInvitacion)) { - return string.Format(CultureInfo.InvariantCulture, Resources.VAN_Realizacion_Body_UrlListaCorreo, + return string.Format(CultureInfo.InvariantCulture, Resources.Reunion_Agendar_Body_UrlListaCorreo, evento.UrlInvitacion); }
--- a/Agendas/trunk/src/Agendas.Blog/Impl/PublicarReunionPostWriter.cs Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Blog/Impl/PublicarReunionPostWriter.cs Mon Jun 06 14:07:12 2011 -0300 @@ -1,5 +1,6 @@ using System; using System.Globalization; +using Agendas.Blog.Exceptions; using Agendas.Blog.Properties; using AltNetHispano.Agendas.Domain; @@ -13,19 +14,49 @@ protected override string GetTitle(Track track) { - return string.Format(CultureInfo.InvariantCulture, Resources.VAN_Publicacion_Title, + string resourceName = getTitleResourceName(track); + + return string.Format(CultureInfo.InvariantCulture, resourceName, track.Evento.NumeroOrden, //# de VAN en el historial - track.Evento.Ponente.Nombre //Nombre y apellido del ponente + track.Evento.Titulo //Titulo del evento ); } + private string getTitleResourceName(Track track) + { + string resourceName; + if (track.Evento.Tipo == TipoEvento.Van) + resourceName = Resources.VAN_Publicar_Title; + else if (track.Evento.Tipo == TipoEvento.Cafe) + resourceName = Resources.Cafe_Publicar_Title; + else + throw new TipoEventoNoSoportadoException(track.Evento.Tipo.ToString()); + + return resourceName; + } + protected override string GetBody(Track track) { - return string.Format(CultureInfo.InvariantCulture, Resources.VAN_Publicacion_Body, + string resourceName = getBodyResourceName(track); + + return string.Format(CultureInfo.InvariantCulture, resourceName, track.Evento.UrlWiki, //Url al video publicado en la wiki GetNombreUsuario(track) //Usuario que postea en el blog ); } + + private string getBodyResourceName(Track track) + { + string resourceName; + if (track.Evento.Tipo == TipoEvento.Van) + resourceName = Resources.VAN_Publicar_Body; + else if (track.Evento.Tipo == TipoEvento.Cafe) + resourceName = Resources.Cafe_Publicar_Body; + else + throw new TipoEventoNoSoportadoException(track.Evento.Tipo.ToString()); + + return resourceName; + } } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Blog/Properties/Resources.Designer.cs Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Blog/Properties/Resources.Designer.cs Mon Jun 06 14:07:12 2011 -0300 @@ -61,7 +61,32 @@ } /// <summary> - /// Looks up a localized string similar to <p>Ya está publicada la grabación de esta VAN en: </p> + /// Looks up a localized string similar to <p>El día {0}, se realizará un ALT.NET Café donde se tratará el tema "{2}"</p> + ///{3} + ///<p>&nbsp;</p> + ///<p>Para acceder, pueden hacerlo por live meeting mediante alguno de los siguientes enlaces:</p> + ///<p><a href="http://snipr.com/virtualaltnet">http://snipr.com/virtualaltnet </a></p> + ///<p><a href="https://www323.livemeeting.com/cc/usergroups/join?id=van&amp;role=attend">https://www323.livemeeting.com/cc/usergroups/join?id=van&amp;role=attend</a></p> + ///<p>&nbsp;</p> + ///<p>Más información sobre las reuniones virtuale [rest of string was truncated]";. + /// </summary> + internal static string Cafe_Agendar_Body { + get { + return ResourceManager.GetString("Cafe_Agendar_Body", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Realización de ALT.NET Café - {1}. + /// </summary> + internal static string Cafe_Agendar_Title { + get { + return ResourceManager.GetString("Cafe_Agendar_Title", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to <p>Ya está publicada la grabación de este ALT.NET Café en: </p> ///<p><a href="{0}">{0}</a></p> ///<br /> ///<p> </p> @@ -69,18 +94,29 @@ ///<p>{1}</p> ///<p></p>. /// </summary> - internal static string VAN_Publicacion_Body { + internal static string Cafe_Publicar_Body { get { - return ResourceManager.GetString("VAN_Publicacion_Body", resourceCulture); + return ResourceManager.GetString("Cafe_Publicar_Body", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to Publicada la grabación de la VAN #{0} - {1}. + /// Looks up a localized string similar to Publicada la grabación del ALT.NET Café #{0} - {1}. /// </summary> - internal static string VAN_Publicacion_Title { + internal static string Cafe_Publicar_Title { get { - return ResourceManager.GetString("VAN_Publicacion_Title", resourceCulture); + return ResourceManager.GetString("Cafe_Publicar_Title", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to <p>En el siguiente enlace, podrán encontrar el detalle de los temas a tratar:</p> + ///<p><a href="{0}">{0}</a></p> + ///<p></p>. + /// </summary> + internal static string Reunion_Agendar_Body_UrlListaCorreo { + get { + return ResourceManager.GetString("Reunion_Agendar_Body_UrlListaCorreo", resourceCulture); } } @@ -94,29 +130,42 @@ ///<p>&nbsp;</p> ///<p>Más información sobre las reuniones virtuales de la comuni [rest of string was truncated]";. /// </summary> - internal static string VAN_Realizacion_Body { + internal static string VAN_Agendar_Body { get { - return ResourceManager.GetString("VAN_Realizacion_Body", resourceCulture); - } - } - - /// <summary> - /// Looks up a localized string similar to <p>En el siguiente enlace, podrán encontrar el detalle de los temas a tratar:</p> - ///<p><a href="{0}">{0}</a></p> - ///<p></p>. - /// </summary> - internal static string VAN_Realizacion_Body_UrlListaCorreo { - get { - return ResourceManager.GetString("VAN_Realizacion_Body_UrlListaCorreo", resourceCulture); + return ResourceManager.GetString("VAN_Agendar_Body", resourceCulture); } } /// <summary> /// Looks up a localized string similar to Presentación de VAN con {0} - {1}. /// </summary> - internal static string VAN_Realizacion_Title { + internal static string VAN_Agendar_Title { get { - return ResourceManager.GetString("VAN_Realizacion_Title", resourceCulture); + return ResourceManager.GetString("VAN_Agendar_Title", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to <p>Ya está publicada la grabación de esta VAN en: </p> + ///<p><a href="{0}">{0}</a></p> + ///<br /> + ///<p> </p> + ///<p>En nombre de la comunidad ALT.NET Hispano,</p> + ///<p>{1}</p> + ///<p></p>. + /// </summary> + internal static string VAN_Publicar_Body { + get { + return ResourceManager.GetString("VAN_Publicar_Body", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Publicada la grabación de la VAN #{0} - {1}. + /// </summary> + internal static string VAN_Publicar_Title { + get { + return ResourceManager.GetString("VAN_Publicar_Title", resourceCulture); } } }
--- a/Agendas/trunk/src/Agendas.Blog/Properties/Resources.resx Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Blog/Properties/Resources.resx Mon Jun 06 14:07:12 2011 -0300 @@ -117,7 +117,7 @@ <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> - <data name="VAN_Publicacion_Body" xml:space="preserve"> + <data name="VAN_Publicar_Body" xml:space="preserve"> <value><p>Ya está publicada la grabación de esta VAN en: </p> <p><a href="{0}">{0}</a></p> <br /> @@ -126,10 +126,10 @@ <p>{1}</p> <p></p></value> </data> - <data name="VAN_Publicacion_Title" xml:space="preserve"> + <data name="VAN_Publicar_Title" xml:space="preserve"> <value>Publicada la grabación de la VAN #{0} - {1}</value> </data> - <data name="VAN_Realizacion_Body" xml:space="preserve"> + <data name="VAN_Agendar_Body" xml:space="preserve"> <value><p>El día {0}, {1} presentará en una nueva VAN el tema "{2}"</p> {3} <p>&nbsp;</p> @@ -144,12 +144,42 @@ <p>En nombre de la comunidad ALT.NET Hispano,</p> <p>{4}</p></value> </data> - <data name="VAN_Realizacion_Body_UrlListaCorreo" xml:space="preserve"> + <data name="Reunion_Agendar_Body_UrlListaCorreo" xml:space="preserve"> <value><p>En el siguiente enlace, podrán encontrar el detalle de los temas a tratar:</p> <p><a href="{0}">{0}</a></p> <p></p></value> </data> - <data name="VAN_Realizacion_Title" xml:space="preserve"> + <data name="VAN_Agendar_Title" xml:space="preserve"> <value>Presentación de VAN con {0} - {1}</value> </data> + <data name="Cafe_Agendar_Body" xml:space="preserve"> + <value><p>El día {0}, se realizará un ALT.NET Café donde se tratará el tema "{2}"</p> +{3} +<p>&nbsp;</p> +<p>Para acceder, pueden hacerlo por live meeting mediante alguno de los siguientes enlaces:</p> +<p><a href="http://snipr.com/virtualaltnet">http://snipr.com/virtualaltnet </a></p> +<p><a href="https://www323.livemeeting.com/cc/usergroups/join?id=van&amp;role=attend">https://www323.livemeeting.com/cc/usergroups/join?id=van&amp;role=attend</a></p> +<p>&nbsp;</p> +<p>Más información sobre las reuniones virtuales de la comunidad:</p> +<p><a href="../../reuniones/descripcion.aspx">http://altnethispano.org/reuniones/descripcion.aspx</a></p> +<p> </p> +<p></p> +<p>En nombre de la comunidad ALT.NET Hispano,</p> +<p>{4}</p></value> + </data> + <data name="Cafe_Agendar_Title" xml:space="preserve"> + <value>Realización de ALT.NET Café - {1}</value> + </data> + <data name="Cafe_Publicar_Body" xml:space="preserve"> + <value><p>Ya está publicada la grabación de este ALT.NET Café en: </p> +<p><a href="{0}">{0}</a></p> +<br /> +<p> </p> +<p>En nombre de la comunidad ALT.NET Hispano,</p> +<p>{1}</p> +<p></p></value> + </data> + <data name="Cafe_Publicar_Title" xml:space="preserve"> + <value>Publicada la grabación del ALT.NET Café #{0} - {1}</value> + </data> </root> \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs Mon Jun 06 14:07:12 2011 -0300 @@ -63,10 +63,10 @@ return ModificarEvento(id, titulo, ponenteNombre, null, urlInvitacion); } - public Resultado Proponer(string titulo, string ponenteNombre, string urlInvitacion) + public Resultado Proponer(string titulo, string ponenteNombre, string urlInvitacion, TipoEvento tipo) { Persona persona = GetPonente(ponenteNombre); - var evento = Evento.Proponer(titulo, persona, urlInvitacion); + var evento = Evento.Proponer(titulo, persona, urlInvitacion, tipo); if (string.IsNullOrWhiteSpace(evento.Titulo)) return new Resultado(false); @@ -79,7 +79,7 @@ return new Resultado(true); } - public Resultado Agendar(string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion) + public Resultado Agendar(string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion, TipoEvento tipo) { if (!fecha.HasValue) return new Resultado(false); @@ -90,7 +90,7 @@ Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo); if (evento == null) - evento = Evento.Agendar(titulo, persona, fecha.Value, urlInvitacion); + evento = Evento.Agendar(titulo, persona, fecha.Value, urlInvitacion, tipo); else evento.Agendar(persona, fecha, urlInvitacion);
--- a/Agendas/trunk/src/Agendas.Domain/Agendas.Domain.csproj Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agendas.Domain.csproj Mon Jun 06 14:07:12 2011 -0300 @@ -66,6 +66,7 @@ <Compile Include="Repositories\IPersonaRepository.cs" /> <Compile Include="Resultado.cs" /> <Compile Include="Services\PersonaService.cs" /> + <Compile Include="TipoEvento.cs" /> <Compile Include="Track.cs" /> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
--- a/Agendas/trunk/src/Agendas.Domain/Evento.cs Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Evento.cs Mon Jun 06 14:07:12 2011 -0300 @@ -106,6 +106,8 @@ _eventoState = eventoState; } + public virtual TipoEvento Tipo { get; private set; } + #endregion #region Acciones sobre el evento @@ -115,27 +117,29 @@ /// </summary> /// <param name="titulo">Título del evento propuesto</param> /// <param name="persona">Ponente para evento propuesto</param> - /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> + /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> + /// <param name="tipo">Tipo del evento</param> /// <returns></returns> - public static Evento Proponer(string titulo, Persona persona, string urlInvitacion) + public static Evento Proponer(string titulo, Persona persona, string urlInvitacion, TipoEvento tipo) { - var evento = new Evento {Titulo = titulo, Ponente = persona, UrlInvitacion = urlInvitacion}; + var evento = new Evento {Titulo = titulo, Ponente = persona, UrlInvitacion = urlInvitacion, Tipo = tipo}; evento.GetEstado().Promover(evento, Accion.Proponer); return evento; } - /// <summary> - /// Agenda un evento que no estaba propuesto - /// </summary> - /// <param name="titulo">Título del evento a agendar</param> - /// <param name="persona">Ponente para el evento</param> - /// <param name="fecha">Fecha de realización del evento</param> - /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> - /// <returns></returns> - public static Evento Agendar(string titulo, Persona persona, DateTime fecha, string urlInvitacion) - { - var evento = new Evento { Titulo = titulo }; + /// <summary> + /// Agenda un evento que no estaba propuesto + /// </summary> + /// <param name="titulo">Título del evento a agendar</param> + /// <param name="persona">Ponente para el evento</param> + /// <param name="fecha">Fecha de realización del evento</param> + /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> + /// <param name="tipo">Tipo del evento</param> + /// <returns></returns> + public static Evento Agendar(string titulo, Persona persona, DateTime fecha, string urlInvitacion, TipoEvento tipo) + { + var evento = new Evento {Titulo = titulo, Tipo = tipo}; evento.Agendar(persona, fecha, urlInvitacion); return evento;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Domain/TipoEvento.cs Mon Jun 06 14:07:12 2011 -0300 @@ -0,0 +1,9 @@ +namespace AltNetHispano.Agendas.Domain +{ + public enum TipoEvento + { + Van, + Cafe, + GrupoEstudio + } +} \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/AgendarTests.cs Mon Jun 06 14:07:12 2011 -0300 @@ -31,7 +31,7 @@ var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository); - Assert.Throws<Exception>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion)); + Assert.Throws<Exception>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion, TipoEvento.Van)); Assert.AreEqual(0, agenda.GetEventosAgendados().Count); publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); @@ -50,7 +50,7 @@ Assert.Throws<IdentityContextNotConfiguredException>( () => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, - urlInvitacion)); + urlInvitacion, TipoEvento.Van)); repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); } @@ -65,7 +65,7 @@ var agenda = new Agenda(publicador.Object, repository.Object, DefaultPersonaRepository); Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, - urlInvitacion)); + urlInvitacion, TipoEvento.Van)); publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(0)); repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); @@ -77,7 +77,7 @@ var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository); var r = agenda.Agendar("Van para publicar", string.Empty, DateTime.Now, - urlInvitacion); + urlInvitacion, TipoEvento.Van); Assert.IsFalse(r.Succeful); } @@ -94,7 +94,7 @@ repository.Object, DefaultPersonaRepository); agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, - urlInvitacion); + urlInvitacion, TipoEvento.Van); publicador1.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); publicador2.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); @@ -109,7 +109,7 @@ var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository); agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, - urlInvitacion); + urlInvitacion, TipoEvento.Van); Assert.AreEqual(0, agenda.GetEventosPropuestos().Count); @@ -132,7 +132,7 @@ var agenda = new Agenda(publicador.Object, repository, DefaultPersonaRepository); agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, - urlInvitacion); + urlInvitacion, TipoEvento.Van); publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1)); @@ -165,7 +165,7 @@ DefaultEventoRepository, DefaultPersonaRepository); agenda.Agendar("Van para publicar", "jjmontes", DateTime.Now, - urlInvitacion); + urlInvitacion, TipoEvento.Van); var van = agenda.GetEventosAgendados().Single(v => v.Titulo == "Van para publicar"); //agenda.Recordar(van.Id); @@ -184,7 +184,7 @@ var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), DefaultEventoRepository, DefaultPersonaRepository); - agenda.Proponer("Html 5", "jjmontes", urlInvitacion); + agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); Assert.AreEqual(1, agenda.GetEventosPropuestos().Count); Assert.AreEqual(0, agenda.GetEventosAgendados().Count); @@ -209,7 +209,7 @@ var publicador1 = new Mock<IPublicador>(); var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); - agenda.Proponer("Html 5", "jjmontes", urlInvitacion); + agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5"); @@ -223,7 +223,7 @@ var publicador1 = new Mock<IPublicador>(); var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); - agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion); + agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5"); @@ -237,7 +237,7 @@ var publicador1 = new Mock<IPublicador>(); var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); - agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion); + agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5"); @@ -253,7 +253,7 @@ var publicador1 = new Mock<IPublicador>(); var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); - agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion); + agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5"); @@ -270,7 +270,7 @@ var publicador1 = new Mock<IPublicador>(); var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); - agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion); + agenda.Agendar("Html 5", "jjmontes", DateTime.MinValue, urlInvitacion, TipoEvento.Van); var evento = DefaultEventoRepository.GetEventosConFecha().Single(e => e.Titulo == "Html 5"); agenda.Confirmar(evento.Id); @@ -289,7 +289,7 @@ var publicador1 = new Mock<IPublicador>(); var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); - agenda.Proponer("Html 5", "jjmontes", urlInvitacion); + agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5"); @@ -305,7 +305,7 @@ var publicador1 = new Mock<IPublicador>(); var agenda = new Agenda(publicador1.Object, DefaultEventoRepository, DefaultPersonaRepository); - agenda.Proponer("Html 5", "jjmontes", urlInvitacion); + agenda.Proponer("Html 5", "jjmontes", urlInvitacion, TipoEvento.Van); var evento = DefaultEventoRepository.GetEventosSinFecha().Single(e => e.Titulo == "Html 5");
--- a/Agendas/trunk/src/Agendas.Tests/Cruds/EventoCrud.cs Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/Cruds/EventoCrud.cs Mon Jun 06 14:07:12 2011 -0300 @@ -27,7 +27,7 @@ var ponente = new Persona("Carlos Blé"); _personaRepository.Save(ponente); - var evento = Evento.Proponer("TDD - Diseño Basado en Ejemplos", ponente, string.Empty); + var evento = Evento.Proponer("TDD - Diseño Basado en Ejemplos", ponente, string.Empty, TipoEvento.Van); _eventoRepository.Save(evento); return evento.Id;
--- a/Agendas/trunk/src/Agendas.Tests/PonentesTests.cs Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/PonentesTests.cs Mon Jun 06 14:07:12 2011 -0300 @@ -20,10 +20,10 @@ var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository); - agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), - urlInvitacion); + agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), + urlInvitacion, TipoEvento.Van); agenda.Agendar("Conform - Parte 2", "Fabio Maulo", new DateTime(2011, 3, 5), - urlInvitacion); + urlInvitacion, TipoEvento.Van); var eventos = agenda.GetEventosAgendados(); Assert.AreEqual(2, eventos.Count); @@ -49,7 +49,7 @@ agenda.RegistrarPonente("Fabio Maulo", "fabiomaulo@gmail.com", "@fabiomaulo", "http://fabiomaulo.blogspot.com"); - agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), urlInvitacion); + agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), urlInvitacion, TipoEvento.Van); Assert.AreEqual(1, agenda.GetEventosAgendados().Count); @@ -73,7 +73,7 @@ var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository); agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), - urlInvitacion); + urlInvitacion, TipoEvento.Van); Assert.AreEqual(1, agenda.GetEventosAgendados().Count); @@ -92,7 +92,7 @@ const string titulo = "Audit (parallel model) con NHibernate 3"; Guid eventoId; - agenda.Proponer(titulo, "Fabio", urlInvitacion); + agenda.Proponer(titulo, "Fabio", urlInvitacion, TipoEvento.Van); Persona persona; { var eventos = agenda.GetEventosPropuestos(); @@ -123,7 +123,7 @@ const string titulo = "Audit (parallel model) con NHibernate 3"; Guid eventoId; - agenda.Proponer(titulo, "Fabio", urlInvitacion); + agenda.Proponer(titulo, "Fabio", urlInvitacion, TipoEvento.Van); { var eventos = agenda.GetEventosPropuestos(); Assert.AreEqual(1, eventos.Count);
--- a/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Mon Jun 06 14:07:12 2011 -0300 @@ -19,7 +19,7 @@ { var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository); - agenda.Proponer("Van", null, urlInvitacion); + agenda.Proponer("Van", null, urlInvitacion, TipoEvento.Van); { IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); IList<Evento> eventosPublicados = agenda.GetEventosAgendados(); @@ -38,7 +38,7 @@ Assert.AreEqual("otro ponente", evento.Ponente.Nombre); } - var r = agenda.Agendar("Van 2", "jjmontes", DateTime.Now, urlInvitacion); + var r = agenda.Agendar("Van 2", "jjmontes", DateTime.Now, urlInvitacion, TipoEvento.Van); Assert.IsTrue(r.Succeful); { IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); @@ -55,14 +55,14 @@ var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository); { - agenda.Proponer("Van propuesta", null, urlInvitacion); + agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van); } { var van = agenda.GetEventosPropuestos().FirstOrDefault(); Assert.IsNotNull(van); var r = agenda.Agendar(van.Titulo, "Ponente", null, - urlInvitacion); + urlInvitacion, TipoEvento.Van); Assert.IsFalse(r.Succeful); } } @@ -73,7 +73,7 @@ var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository); { - agenda.Proponer("Van propuesta", null, urlInvitacion); + agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van); } { @@ -82,7 +82,7 @@ van.Actualizar(null, DateTime.Today.AddDays(5), urlInvitacion); var r = agenda.Agendar(van.Titulo, string.Empty, van.Fecha, - urlInvitacion); + urlInvitacion, TipoEvento.Van); Assert.IsFalse(r.Succeful); } } @@ -104,7 +104,7 @@ var agenda = new Agenda(null, repository.Object, DefaultPersonaRepository); - var r = agenda.Proponer(string.Empty, null, urlInvitacion); + var r = agenda.Proponer(string.Empty, null, urlInvitacion, TipoEvento.Van); Assert.IsFalse(r.Succeful); repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); @@ -117,14 +117,14 @@ SetCurrentUser(null, null); - Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Proponer("Inmortalidad de la meduza.", null, urlInvitacion)); + Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Proponer("Inmortalidad de la meduza.", null, urlInvitacion, TipoEvento.Van)); } [Test] public void Proponer_evento_correctamente() { var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository); - agenda.Proponer("Van propuesta", null, urlInvitacion); + agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van); IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); Assert.IsNotNull(eventosPropuestos); @@ -137,9 +137,9 @@ { var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository); - agenda.Proponer("Van propuesta", null, urlInvitacion); + agenda.Proponer("Van propuesta", null, urlInvitacion, TipoEvento.Van); var r = agenda.Agendar("Van publicada", "jjmontes", DateTime.Now, - urlInvitacion); + urlInvitacion, TipoEvento.Van); Assert.IsTrue(r.Succeful); IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos();
--- a/Agendas/trunk/src/Agendas.Tests/TrackTests.cs Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/TrackTests.cs Mon Jun 06 14:07:12 2011 -0300 @@ -18,7 +18,7 @@ var agenda = new Agenda(null, repository, DefaultPersonaRepository); var fecha = DateTime.Now.AddDays(5); - agenda.Agendar("Html 5", "jjmontes", fecha, urlInvitacion); + agenda.Agendar("Html 5", "jjmontes", fecha, urlInvitacion, TipoEvento.Van); var evento = repository.GetEventosConFecha().First(); Assert.AreEqual(1, evento.Tracks.Count()); @@ -53,7 +53,7 @@ var agenda = new Agenda(null, repository, DefaultPersonaRepository); agenda.Agendar("Html 5", "jjmontes", DateTime.Now, - urlInvitacion); + urlInvitacion, TipoEvento.Van); var evento = repository.GetEventosConFecha().First(); Assert.AreEqual(1, evento.Tracks.Count());
--- a/Agendas/trunk/src/Agendas.Tests/Workflows/Workflow.cs Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/Workflows/Workflow.cs Mon Jun 06 14:07:12 2011 -0300 @@ -17,14 +17,14 @@ public void Proponer() { - var resultado = _agenda.Proponer("SOLID", "Jorge", null); + var resultado = _agenda.Proponer("SOLID", "Jorge", null, TipoEvento.Van); Assert.IsTrue(resultado.Succeful); } public void Agendar() { - var resultado = _agenda.Agendar("SOLID", "Jorge", DateTime.Today.AddDays(5), null); + var resultado = _agenda.Agendar("SOLID", "Jorge", DateTime.Today.AddDays(5), null, TipoEvento.Van); Assert.IsTrue(resultado.Succeful); }
--- a/Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj Mon Jun 06 14:07:12 2011 -0300 @@ -75,6 +75,7 @@ <Compile Include="IdentityHelper.cs" /> <Compile Include="Models\AccountModels.cs" /> <Compile Include="Models\EventoModel.cs" /> + <Compile Include="Models\EventoModelHelper.cs" /> <Compile Include="Models\PropuestaModel.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Services\AccountMembershipService.cs" />
--- a/Agendas/trunk/src/Agendas.Web/Controllers/EventoController.cs Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Controllers/EventoController.cs Mon Jun 06 14:07:12 2011 -0300 @@ -1,80 +1,82 @@ 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 EventoController : Controller + public class EventoController : Controller + { + public ActionResult Index() { - public ActionResult Index() - { - var agenda = AgendaFactory.GetAgenda(); + var agenda = AgendaFactory.GetAgenda(); + + var model = new EventoIndexModel + { + ProximosEventos = from e in agenda.GetEventosAgendados() + orderby e.Fecha + select new EventoDto { Id = e.Id.ToString(), Titulo = e.Titulo, Fecha = e.Fecha.Value } + }; - var model = new EventoIndexModel - { - ProximosEventos = from e in agenda.GetEventosAgendados() orderby e.Fecha - select new EventoDto { Id = e.Id.ToString(), Titulo = e.Titulo, Fecha = e.Fecha.Value } - }; - - return View(model); - } + return View(model); + } - [Authorize] - public ActionResult New() - { - return View(); - } + [Authorize] + public ActionResult New() + { + return View(new EventoNewModel()); + } - [HttpPost] - [Authorize] - public ActionResult New(EventoNewModel model) - { - if (ModelState.IsValid) - { - var agenda = AgendaFactory.GetAgenda(); + [HttpPost] + [Authorize] + public ActionResult New(EventoNewModel model) + { + if (ModelState.IsValid) + { + var agenda = AgendaFactory.GetAgenda(); - var r = agenda.Agendar(model.Titulo, model.Ponente, model.Fecha, - model.UrlInvitacion); - if (r.Succeful) - return RedirectToAction("Index"); - ModelState.AddModelError("error", r.ToString()); - } - return View(model); - } + var r = agenda.Agendar(model.Titulo, model.Ponente, model.Fecha, + model.UrlInvitacion, (TipoEvento)model.Tipo); + if (r.Succeful) + return RedirectToAction("Index"); + ModelState.AddModelError("error", r.ToString()); + } + return View(model); + } - [Authorize] - public ActionResult Edit(string id) - { - var agenda = AgendaFactory.GetAgenda(); - var evento = agenda.GetEvento(new Guid(id)); - - var model = new EventoEditModel - { - Id = id, - Titulo = evento.Titulo, - Ponente = evento.Ponente != null ? evento.Ponente.Nombre : string.Empty, - Fecha = evento.Fecha, + [Authorize] + public ActionResult Edit(string id) + { + var agenda = AgendaFactory.GetAgenda(); + var evento = agenda.GetEvento(new Guid(id)); + + var model = new EventoEditModel + { + Id = id, + Titulo = evento.Titulo, + Ponente = evento.Ponente != null ? evento.Ponente.Nombre : string.Empty, + Fecha = evento.Fecha, UrlInvitacion = evento.UrlInvitacion - }; - return View(model); - } + }; + return View(model); + } - [HttpPost] - [Authorize] - public ActionResult Edit(EventoEditModel model) - { - if (ModelState.IsValid) - { - var agenda = AgendaFactory.GetAgenda(); + [HttpPost] + [Authorize] + public ActionResult Edit(EventoEditModel model) + { + if (ModelState.IsValid) + { + var agenda = AgendaFactory.GetAgenda(); - var r =agenda.ModificarEvento(new Guid(model.Id), model.Titulo, model.Ponente, model.Fecha.Value , model.UrlInvitacion); - if (r.Succeful) - return RedirectToAction("Index"); - ModelState.AddModelError("error", r.ToString()); - } - return View(model); - } + var r = agenda.ModificarEvento(new Guid(model.Id), model.Titulo, model.Ponente, model.Fecha.Value, model.UrlInvitacion); + if (r.Succeful) + return RedirectToAction("Index"); + ModelState.AddModelError("error", r.ToString()); + } + return View(model); } + } }
--- a/Agendas/trunk/src/Agendas.Web/Controllers/PropuestaController.cs Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Controllers/PropuestaController.cs Mon Jun 06 14:07:12 2011 -0300 @@ -1,6 +1,7 @@ using System; using System.Linq; using System.Web.Mvc; +using AltNetHispano.Agendas.Domain; using AltNetHispano.Agendas.Factories; using AltNetHispano.Agendas.Web.Models; @@ -30,7 +31,7 @@ [Authorize] public ActionResult New() { - return View(); + return View(new PropuestaNewModel()); } [HttpPost] @@ -41,7 +42,7 @@ { var agenda = AgendaFactory.GetAgenda(); - var r = agenda.Proponer(model.Titulo, model.Ponente, model.UrlInvitacion); + var r = agenda.Proponer(model.Titulo, model.Ponente, model.UrlInvitacion, (TipoEvento)model.Tipo); if (r.Succeful) return RedirectToAction("Index"); ModelState.AddModelError("error", r.ToString());
--- a/Agendas/trunk/src/Agendas.Web/Models/EventoModel.cs Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Models/EventoModel.cs Mon Jun 06 14:07:12 2011 -0300 @@ -6,49 +6,65 @@ namespace AltNetHispano.Agendas.Web.Models { - public class EventoIndexModel - { - public IEnumerable<EventoDto> ProximosEventos { get; set; } - } + public class EventoIndexModel + { + public IEnumerable<EventoDto> ProximosEventos { get; set; } + } - public class EventoNewModel + public class EventoNewModel + { + public EventoNewModel() { - [Required] - public string Titulo { get; set; } - - [Required] - public string Ponente { get; set; } - - [Required] - public DateTime Fecha { get; set; } - - [Url] - public string UrlInvitacion { get; set; } + Tipos = EventoModelHelper.GetTiposEventos(); } - public class EventoEditModel - { - [HiddenInput(DisplayValue = false)] - public string Id { get; set; } + [Required] + public int Tipo { get; set; } + + [Required] + public string Titulo { get; set; } + + [Required] + public string Ponente { get; set; } + + [Required] + public DateTime Fecha { get; set; } - [Required] - public string Titulo { get; set; } + [Url] + public string UrlInvitacion { get; set; } + + public IEnumerable<TipoEventoModel> Tipos { get; private set; } + } - [Required] - public string Ponente { get; set; } + public class TipoEventoModel + { + public int TipoEvento { get; set; } + public string TipoEventoStr { get; set; } + } - [Required] - public DateTime? Fecha { get; set; } + public class EventoEditModel + { + [HiddenInput(DisplayValue = false)] + public string Id { get; set; } - [Url] - public string UrlInvitacion { get; set; } - } - + [Required] + public string Titulo { get; set; } + + [Required] + public string Ponente { get; set; } - public class EventoDto - { - public string Id { get; set; } - public string Titulo { get; set; } - public DateTime Fecha { get; set; } - } + [Required] + public DateTime? Fecha { get; set; } + + [Url] + public string UrlInvitacion { get; set; } + } + + + public class EventoDto + { + public string Id { get; set; } + public string Titulo { get; set; } + public DateTime Fecha { get; set; } + } } \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Web/Models/EventoModelHelper.cs Mon Jun 06 14:07:12 2011 -0300 @@ -0,0 +1,19 @@ +using System.Collections.Generic; +using AltNetHispano.Agendas.Domain; + +namespace AltNetHispano.Agendas.Web.Models +{ + public static class EventoModelHelper + { + public static IEnumerable<TipoEventoModel> GetTiposEventos() + { + var tipos = new List<TipoEventoModel> + { + new TipoEventoModel {TipoEvento = (int) TipoEvento.Van, TipoEventoStr = "VAN"}, + new TipoEventoModel {TipoEvento = (int) TipoEvento.Cafe, TipoEventoStr = "ALT.NET Cafe"}, + new TipoEventoModel {TipoEvento = (int) TipoEvento.GrupoEstudio, TipoEventoStr = "Grupo Estudio"} + }; + return tipos; + } + } +} \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Web/Models/PropuestaModel.cs Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Models/PropuestaModel.cs Mon Jun 06 14:07:12 2011 -0300 @@ -5,41 +5,51 @@ namespace AltNetHispano.Agendas.Web.Models { - public class PropuestaIndexModel + public class PropuestaIndexModel + { + public IEnumerable<PropuestaDto> Propuestas { get; set; } + } + + public class PropuestaNewModel + { + public PropuestaNewModel() { - public IEnumerable<PropuestaDto> Propuestas { get; set; } + Tipos = EventoModelHelper.GetTiposEventos(); } - public class PropuestaNewModel - { - [Required] - public string Titulo { get; set; } + [Required] + public int Tipo { get; set; } - public string Ponente { get; set; } + [Required] + public string Titulo { get; set; } - [Url] - public string UrlInvitacion { get; set; } - } + public string Ponente { get; set; } - public class PropuestaEditModel - { - [HiddenInput(DisplayValue = false)] - public string Id { get; set; } + [Url] + public string UrlInvitacion { get; set; } + + public IEnumerable<TipoEventoModel> Tipos { get; private set; } + } - [Required] - public string Titulo { get; set; } + public class PropuestaEditModel + { + [HiddenInput(DisplayValue = false)] + public string Id { get; set; } - public string Ponente { get; set; } + [Required] + public string Titulo { get; set; } + + public string Ponente { get; set; } - [Url] - public string UrlInvitacion { get; set; } - } - + [Url] + public string UrlInvitacion { get; set; } + } + - public class PropuestaDto - { - public string Id { get; set; } - public string Titulo { get; set; } - public string Ponente { get; set; } - } + public class PropuestaDto + { + public string Id { get; set; } + public string Titulo { get; set; } + public string Ponente { get; set; } + } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Web/Views/Evento/New.cshtml Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Views/Evento/New.cshtml Mon Jun 06 14:07:12 2011 -0300 @@ -22,7 +22,47 @@ <div> <fieldset> <legend>Datos del evento:</legend> - @Html.EditorForModel() + + <div class="editor-label"> + @Html.LabelFor(model=>model.Tipo) + </div> + <div class="editor-field"> + @Html.DropDownListFor(model => model.Tipo, new SelectList(Model.Tipos, "TipoEvento", "TipoEventoStr")) + @Html.ValidationMessageFor(model => model.Tipo) + </div> + + <div class="editor-label"> + @Html.LabelFor(model=>model.Titulo) + </div> + <div class="editor-field"> + @Html.EditorFor(model=>model.Titulo) + @Html.ValidationMessageFor(model => model.Titulo) + </div> + + <div class="editor-label"> + @Html.LabelFor(model=>model.Ponente) + </div> + <div class="editor-field"> + @Html.EditorFor(model=>model.Ponente) + @Html.ValidationMessageFor(model => model.Ponente) + </div> + + <div class="editor-label"> + @Html.LabelFor(model=>model.Fecha) + </div> + <div class="editor-field"> + @Html.EditorFor(model=>model.Fecha) + @Html.ValidationMessageFor(model => model.Fecha) + </div> + + <div class="editor-label"> + @Html.LabelFor(model=>model.UrlInvitacion) + </div> + <div class="editor-field"> + @Html.EditorFor(model => model.UrlInvitacion) + @Html.ValidationMessageFor(model => model.UrlInvitacion) + </div> + <p> <input type="submit" value="Guardar" /> </p>
--- a/Agendas/trunk/src/Agendas.Web/Views/Propuesta/New.cshtml Mon Jun 06 09:12:52 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Views/Propuesta/New.cshtml Mon Jun 06 14:07:12 2011 -0300 @@ -13,7 +13,39 @@ <div> <fieldset> <legend>Datos de la propuesta:</legend> - @Html.EditorForModel() + + <div class="editor-label"> + @Html.LabelFor(model=>model.Tipo) + </div> + <div class="editor-field"> + @Html.DropDownListFor(model => model.Tipo, new SelectList(Model.Tipos, "TipoEvento", "TipoEventoStr")) + @Html.ValidationMessageFor(model => model.Tipo) + </div> + + <div class="editor-label"> + @Html.LabelFor(model=>model.Titulo) + </div> + <div class="editor-field"> + @Html.EditorFor(model=>model.Titulo) + @Html.ValidationMessageFor(model => model.Titulo) + </div> + + <div class="editor-label"> + @Html.LabelFor(model=>model.Ponente) + </div> + <div class="editor-field"> + @Html.EditorFor(model=>model.Ponente) + @Html.ValidationMessageFor(model => model.Ponente) + </div> + + <div class="editor-label"> + @Html.LabelFor(model=>model.UrlInvitacion) + </div> + <div class="editor-field"> + @Html.EditorFor(model => model.UrlInvitacion) + @Html.ValidationMessageFor(model => model.UrlInvitacion) + </div> + <p> <input type="submit" value="Guardar" /> </p>