Mercurial > altnet-hispano
changeset 70:c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
modificaciones en proyecto Agendas.Blog
modificacion de viewmodel EventoModel - agregado de UrlInvitacion (no requerido)
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Blog/Impl/PostWriter.cs Thu May 19 01:32:29 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Blog/Impl/PostWriter.cs Fri May 20 12:21:07 2011 -0300 @@ -1,4 +1,5 @@ using System; +using System.Linq; using AltNetHispano.Agendas.Domain; namespace Agendas.Blog.Impl @@ -18,8 +19,7 @@ protected string GetNombreUsuario(Evento evento) { - return string.Empty; - //return evento.Tracks.Single(t => t.Accion == Accion.Realizar).Usuario; TODO (property Usuario debe ser publica) + return evento.Tracks.Single(t => t.Accion == Accion.Realizar).Usuario; } protected void ExecuteService(string title, string body)
--- a/Agendas/trunk/src/Agendas.Blog/Impl/PublicarReunionPostWriter.cs Thu May 19 01:32:29 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Blog/Impl/PublicarReunionPostWriter.cs Fri May 20 12:21:07 2011 -0300 @@ -10,7 +10,7 @@ protected override string GetTitle(Evento evento) { return string.Format(CultureInfo.InvariantCulture, Resources.VAN_Publicacion_Title, - string.Empty, //# de VAN en el historial TODO + evento.NumeroOrden, //# de VAN en el historial evento.Ponente.Nombre //Nombre y apellido del ponente ); @@ -19,15 +19,9 @@ protected override string GetBody(Evento evento) { return string.Format(CultureInfo.InvariantCulture, Resources.VAN_Realizacion_Body, - getUrlPublicacionEnWiki(evento), //Url al video publicado en la wiki + evento.UrlWiki, //Url al video publicado en la wiki GetNombreUsuario(evento) //Usuario que postea en el blog ); } - - private string getUrlPublicacionEnWiki(Evento evento) - { - //TODO - throw new NotImplementedException(); - } } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Blog/Impl/RealizarReunionPostWriter.cs Thu May 19 01:32:29 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Blog/Impl/RealizarReunionPostWriter.cs Fri May 20 12:21:07 2011 -0300 @@ -6,45 +6,50 @@ namespace Agendas.Blog.Impl { - public class RealizarReunionPostWriter : PostWriter - { - protected override string GetTitle(Evento evento) - { - return string.Format(CultureInfo.InvariantCulture, Resources.VAN_Realizacion_Title, - evento.Ponente.Nombre, //Nombre y apellido del ponente - evento.Titulo //Tema a tratar en la reunion - ); - } + public class RealizarReunionPostWriter : PostWriter + { + protected override string GetTitle(Evento evento) + { + return string.Format(CultureInfo.InvariantCulture, Resources.VAN_Realizacion_Title, + evento.Ponente.Nombre, //Nombre y apellido del ponente + evento.Titulo //Tema a tratar en la reunion + ); + } + + protected override string GetBody(Evento evento) + { + var fecha = getFechaFormateada(evento.Fecha); + return string.Format(CultureInfo.InvariantCulture, Resources.VAN_Realizacion_Body, + fecha, //Fecha y hora en GMT+0 + evento.Ponente.Nombre, //Nombre y apellido del ponente + evento.Titulo, //Tema a tratar en la reunion + getUrlInvitacion(evento), //Url a la invitacion realizada por el ponente (por lo general es el thread en la lista de correo) + GetNombreUsuario(evento) //Usuario que postea en el blog + ); + } - protected override string GetBody(Evento evento) - { - var fecha = getFechaFormateada(evento.Fecha); - return string.Format(CultureInfo.InvariantCulture, Resources.VAN_Realizacion_Body, - fecha, //Fecha y hora en GMT+0 - evento.Ponente.Nombre, //Nombre y apellido del ponente - evento.Titulo, //Tema a tratar en la reunion - getUrlThreadListaCorreo(evento), //Url al thread en la lista de correo - GetNombreUsuario(evento) //Usuario que postea en el blog - ); - } + private string getFechaFormateada(DateTime? fecha) + { + if (fecha == null) + throw new ArgumentNullException("fecha"); + + var fechaCast = (DateTime)fecha; + var culture = CultureInfo.CreateSpecificCulture("es-ES"); + var result = fechaCast.ToString("D", culture) + " a las " + + fechaCast.ToString("t", culture) + " UTC/GMT"; + + return result; + } - private string getFechaFormateada(DateTime? fecha) - { - if (fecha == null) - throw new ArgumentNullException("fecha"); - - var fechaCast = (DateTime)fecha; - var culture = CultureInfo.CreateSpecificCulture("es-ES"); - var result = fechaCast.ToString("D", culture) + " a las " + - fechaCast.ToString("t", culture) + " UTC/GMT"; + private string getUrlInvitacion(Evento evento) + { + if (!string.IsNullOrEmpty(evento.UrlInvitacion)) + { + return string.Format(CultureInfo.InvariantCulture, Resources.VAN_Realizacion_Body_UrlListaCorreo, + evento.UrlInvitacion); + } - return result; - } - - private string getUrlThreadListaCorreo(Evento evento) - { - return string.Format(CultureInfo.InvariantCulture, Resources.VAN_Realizacion_Body_UrlListaCorreo, - string.Empty /*evento.UrlListaCorreo*/);//TODO - } - } + return string.Empty; + } + } } \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs Thu May 19 01:32:29 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs Fri May 20 12:21:07 2011 -0300 @@ -77,7 +77,7 @@ return new Resultado(true); } - public Resultado Publicar(string titulo, string ponenteNombre, DateTime? fecha) + public Resultado Publicar(string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion) { if (!fecha.HasValue) return new Resultado(false); @@ -88,9 +88,9 @@ Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo); if (evento == null) - evento = Evento.Publicar(titulo, ponente, fecha.Value); + evento = Evento.Publicar(titulo, ponente, fecha.Value, urlInvitacion); else - evento.Publicar(ponente, fecha); + evento.Publicar(ponente, fecha, urlInvitacion); if (_publicador != null) _publicador.Publicar(evento);
--- a/Agendas/trunk/src/Agendas.Domain/Evento.cs Thu May 19 01:32:29 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Evento.cs Fri May 20 12:21:07 2011 -0300 @@ -16,10 +16,10 @@ return evento; } - public static Evento Publicar(string titulo, Ponente ponente, DateTime fecha) + public static Evento Publicar(string titulo, Ponente ponente, DateTime fecha, string urlInvitacion) { var evento = new Evento { Titulo = titulo }; - evento.Publicar(ponente, fecha); + evento.Publicar(ponente, fecha, urlInvitacion); return evento; } @@ -33,7 +33,22 @@ public virtual string Titulo { get; private set; } public virtual DateTime? Fecha { get; private set; } public virtual string Sintesis { get; private set; } - + + /// <summary> + /// Url con la invitacion realizada por el ponente (en la mayoria de los casos va a ser un link al thread de la lista de correo) + /// </summary> + public virtual string UrlInvitacion { get; private set; } + + /// <summary> + /// Url a la pagina de la wiki con el video de la reunion virtual + /// </summary> + public virtual string UrlWiki { get; private set; } + + /// <summary> + /// Numero de orden en el historico de reuniones virtuales + /// </summary> + public virtual short NumeroOrden { get; private set; } + private Ponente _ponente; public virtual Ponente Ponente { @@ -72,18 +87,21 @@ AddTracks(new Track(Accion.CambiarTitulo)); } - public virtual void Publicar(Ponente ponente, DateTime? fecha) + public virtual void Publicar(Ponente ponente, DateTime? fecha, string urlInvitacion) { Ponente = ponente; Fecha = fecha; + UrlInvitacion = urlInvitacion; AddTracks(new Track(Accion.Publicar)); } - public virtual void Realizado(DateTime fecha, string sintesis, IList<string> enlaces) + public virtual void Realizado(DateTime fecha, string sintesis, IList<string> enlaces, string urlWiki, short numeroOrden) { Fecha = fecha; Sintesis = sintesis; _enlaces = enlaces; + UrlWiki = urlWiki; + NumeroOrden = numeroOrden; } public virtual void Realizado(string sintesis)
--- a/Agendas/trunk/src/Agendas.Domain/Track.cs Thu May 19 01:32:29 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Track.cs Fri May 20 12:21:07 2011 -0300 @@ -14,7 +14,7 @@ } public virtual Accion Accion { get; private set; } - protected virtual string Usuario { get; private set; } + public virtual string Usuario { get; private set; } } public enum Accion
--- a/Agendas/trunk/src/Agendas.Tests/PonentesTests.cs Thu May 19 01:32:29 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/PonentesTests.cs Fri May 20 12:21:07 2011 -0300 @@ -10,6 +10,8 @@ [TestFixture] public class PonentesTests : TestBase { + private const string urlInvitacion = "http://groups.google.com/group/altnet-hispano/browse_thread/thread/65d6d26eb381386e"; + [Test] public void Publicar_dos_eventos_con_el_mismo_ponente_no_registrado() { @@ -17,8 +19,10 @@ var agenda = new Agenda(publicador.Object, null, DefaultEventoRepository, DefaultPonenteRepository); - agenda.Publicar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26)); - agenda.Publicar("Conform - Parte 2", "Fabio Maulo", new DateTime(2011, 3, 5)); + agenda.Publicar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), + urlInvitacion); + agenda.Publicar("Conform - Parte 2", "Fabio Maulo", new DateTime(2011, 3, 5), + urlInvitacion); var eventos = agenda.GetEventosPublicados(); Assert.AreEqual(2, eventos.Count); @@ -47,7 +51,7 @@ agenda.RegistrarPonente("Fabio Maulo", "fabiomaulo@gmail.com", "@fabiomaulo", "http://fabiomaulo.blogspot.com"); - agenda.Publicar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26)); + agenda.Publicar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), urlInvitacion); Assert.AreEqual(1, agenda.GetEventosPublicados().Count); @@ -69,7 +73,8 @@ var agenda = new Agenda(publicador.Object, null, DefaultEventoRepository, DefaultPonenteRepository); - agenda.Publicar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26)); + agenda.Publicar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), + urlInvitacion); Assert.AreEqual(1, agenda.GetEventosPublicados().Count);
--- a/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Thu May 19 01:32:29 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/PropuestasTests.cs Fri May 20 12:21:07 2011 -0300 @@ -12,6 +12,8 @@ [TestFixture] public class PropuestasTests : TestBase { + private const string urlInvitacion = "http://groups.google.com/group/altnet-hispano/browse_thread/thread/65d6d26eb381386e"; + [Test] public void Crear_modificar_y_publicar_evento_propuesto() { @@ -36,7 +38,7 @@ Assert.AreEqual("otro ponente", evento.Ponente.Nombre); } - var r = agenda.Publicar("Van 2", "jjmontes", DateTime.Now); + var r = agenda.Publicar("Van 2", "jjmontes", DateTime.Now, urlInvitacion); Assert.IsTrue(r.Succeful); { IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); @@ -59,7 +61,8 @@ { var van = agenda.GetEventosPropuestos().FirstOrDefault(); Assert.IsNotNull(van); - var r = agenda.Publicar(van.Titulo, "Ponente", null); + var r = agenda.Publicar(van.Titulo, "Ponente", null, + urlInvitacion); Assert.IsFalse(r.Succeful); } } @@ -78,7 +81,8 @@ Assert.IsNotNull(van); van.Actualizar(null, DateTime.Today.AddDays(5)); - var r = agenda.Publicar(van.Titulo, string.Empty, van.Fecha); + var r = agenda.Publicar(van.Titulo, string.Empty, van.Fecha, + urlInvitacion); Assert.IsFalse(r.Succeful); } } @@ -134,7 +138,8 @@ var agenda = new Agenda(null, null, DefaultEventoRepository, DefaultPonenteRepository); agenda.Proponer("Van propuesta", null); - var r = agenda.Publicar("Van publicada", "jjmontes", DateTime.Now); + var r = agenda.Publicar("Van publicada", "jjmontes", DateTime.Now, + urlInvitacion); Assert.IsTrue(r.Succeful); IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos();
--- a/Agendas/trunk/src/Agendas.Tests/PulicarTests.cs Thu May 19 01:32:29 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/PulicarTests.cs Fri May 20 12:21:07 2011 -0300 @@ -11,6 +11,8 @@ [TestFixture] public class PulicarTests : TestBase { + private const string urlInvitacion = "http://groups.google.com/group/altnet-hispano/browse_thread/thread/65d6d26eb381386e"; + [Test] public void CompositePublicador_constructor_parametro_null_debe_generar_ArgumentNullException() { @@ -27,7 +29,7 @@ var agenda = new Agenda(publicador.Object, null, repository.Object, DefaultPonenteRepository); - Assert.Throws<Exception>(() => agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now)); + Assert.Throws<Exception>(() => agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now, urlInvitacion)); Assert.AreEqual(0, agenda.GetEventosPublicados().Count); publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); @@ -45,7 +47,8 @@ var agenda = new Agenda(publicador.Object, null, repository.Object, DefaultPonenteRepository); Assert.Throws<IdentityContextNotConfiguredException>( - () => agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now)); + () => agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now, + urlInvitacion)); repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); } @@ -59,7 +62,8 @@ var agenda = new Agenda(publicador.Object, null, repository.Object, DefaultPonenteRepository); - Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now)); + Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now, + urlInvitacion)); publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(0)); repository.Verify(p => p.Save(It.IsAny<Evento>()), Times.Exactly(0)); @@ -70,7 +74,8 @@ { var agenda = new Agenda(null, null, DefaultEventoRepository, DefaultPonenteRepository); - var r = agenda.Publicar("Van para publicar", string.Empty, DateTime.Now); + var r = agenda.Publicar("Van para publicar", string.Empty, DateTime.Now, + urlInvitacion); Assert.IsFalse(r.Succeful); } @@ -84,9 +89,10 @@ var repository = new Mock<IEventoRepository>(); var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), null, - repository.Object, DefaultPonenteRepository); + repository.Object, DefaultPonenteRepository); - agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now); + agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now, + urlInvitacion); publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); @@ -100,7 +106,8 @@ var agenda = new Agenda(publicador.Object, null, DefaultEventoRepository, DefaultPonenteRepository); - agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now); + agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now, + urlInvitacion); var eventos = agenda.GetEventosPublicados(); Assert.AreEqual(1, eventos.Count); @@ -123,7 +130,8 @@ var agenda = new Agenda(publicador.Object, null, repository, DefaultPonenteRepository); - agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now); + agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now, + urlInvitacion); publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); @@ -154,9 +162,10 @@ var recordador1 = new Mock<IRecordador>(); var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), recordador1.Object, - DefaultEventoRepository, DefaultPonenteRepository); + DefaultEventoRepository, DefaultPonenteRepository); - agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now); + agenda.Publicar("Van para publicar", "jjmontes", DateTime.Now, + urlInvitacion); var van = agenda.GetEventosPublicados().Single(v => v.Titulo == "Van para publicar"); agenda.Recordar(van.Id);
--- a/Agendas/trunk/src/Agendas.Tests/TrackTests.cs Thu May 19 01:32:29 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/TrackTests.cs Fri May 20 12:21:07 2011 -0300 @@ -8,6 +8,8 @@ [TestFixture] public class TrackTests : TestBase { + private const string urlInvitacion = "http://groups.google.com/group/altnet-hispano/browse_thread/thread/65d6d26eb381386e"; + [Test] public void Track_al_publicar_y_modificar_evento() { @@ -16,7 +18,7 @@ var agenda = new Agenda(null, null, repository, DefaultPonenteRepository); var fecha = DateTime.Now.AddDays(5); - agenda.Publicar("Html 5", "jjmontes", fecha); + agenda.Publicar("Html 5", "jjmontes", fecha, urlInvitacion); var evento = repository.GetEventosConFecha().First(); Assert.AreEqual(1, evento.Tracks.Count()); @@ -38,7 +40,8 @@ var agenda = new Agenda(null, null, repository, DefaultPonenteRepository); - agenda.Publicar("Html 5", "jjmontes", DateTime.Now); + agenda.Publicar("Html 5", "jjmontes", DateTime.Now, + urlInvitacion); var evento = repository.GetEventosConFecha().First(); Assert.AreEqual(1, evento.Tracks.Count());
--- a/Agendas/trunk/src/Agendas.Web/Controllers/EventoController.cs Thu May 19 01:32:29 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Controllers/EventoController.cs Fri May 20 12:21:07 2011 -0300 @@ -35,7 +35,8 @@ { var agenda = AgendaFactory.GetAgenda(); - var r = agenda.Publicar(model.Titulo, model.Ponente, model.Fecha); + var r = agenda.Publicar(model.Titulo, model.Ponente, model.Fecha, + model.UrlInvitacion); if (r.Succeful) return RedirectToAction("Index"); ModelState.AddModelError("error", r.ToString());
--- a/Agendas/trunk/src/Agendas.Web/Models/EventoModel.cs Thu May 19 01:32:29 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Models/EventoModel.cs Fri May 20 12:21:07 2011 -0300 @@ -20,6 +20,8 @@ [Required(ErrorMessage = "debe ingresar la fecha del evento")] public DateTime Fecha { get; set; } + + public string UrlInvitacion { get; set; } } public class EventoEditModel