# HG changeset patch # User Jorge@Jorge-PC # Date 1308961182 10800 # Node ID 683cc27450ceee7d6b56c1c9e106fbcb246b2c92 # Parent c3573defd18f1a5a8de3a35ecf3d5e69b2e51f82# Parent 8fa58a79656a3a6a8656896823cd908c24d0ec71 Merge diff -r 8fa58a79656a -r 683cc27450ce Agendas/trunk/src/Agendas.Blog/Impl/BlogPublicador.cs --- a/Agendas/trunk/src/Agendas.Blog/Impl/BlogPublicador.cs Wed Jun 22 09:49:07 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Blog/Impl/BlogPublicador.cs Fri Jun 24 21:19:42 2011 -0300 @@ -1,21 +1,35 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; +using System.Linq; using AltNetHispano.Agendas.Domain; namespace Agendas.Blog.Impl { - public class BlogPublicador : IPublicador - { - private readonly IPostWriterFactory _postWriterFactory; + public class BlogPublicador : IPublicador + { + private readonly IPostWriterFactory _postWriterFactory; + + public BlogPublicador(IPostWriterFactory postWriterFactory) + { + _postWriterFactory = postWriterFactory; + } - public BlogPublicador(IPostWriterFactory postWriterFactory) - { - _postWriterFactory = postWriterFactory; - } + public void Publicar(IEnumerable tracks) + { + foreach (var track in tracks) + { + if (track.Logs.Any(l => l.Propietario == TrackLogPropietario.Blog && l.Successful)) continue; - public void Publicar(IEnumerable tracks) - { - foreach (var track in tracks) - _postWriterFactory.GetPostWriter(track.Accion).WritePost(track); - } - } + try + { + _postWriterFactory.GetPostWriter(track.Accion).WritePost(track); + track.LogAdd(new TrackLog(TrackLogPropietario.Blog, string.Empty, track.Usuario, true)); + } + catch (Exception ex) + { + track.LogAdd(new TrackLog(TrackLogPropietario.Blog, ex.Message, track.Usuario, false)); + } + } + } + } } diff -r 8fa58a79656a -r 683cc27450ce Agendas/trunk/src/Agendas.Domain/TrackLog.cs --- a/Agendas/trunk/src/Agendas.Domain/TrackLog.cs Wed Jun 22 09:49:07 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/TrackLog.cs Fri Jun 24 21:19:42 2011 -0300 @@ -1,4 +1,6 @@ -namespace AltNetHispano.Agendas.Domain +using System; + +namespace AltNetHispano.Agendas.Domain { public class TrackLog : Identificable { @@ -6,20 +8,27 @@ { } - public TrackLog(TrackLogPropietario propietario, string mensaje) + public TrackLog(TrackLogPropietario propietario, string mensaje, Persona usuario, bool successful) { Propietario = propietario; Mensaje = mensaje; + Fecha = DateTime.Now; + Usuario = usuario; + Successful = successful; } public virtual TrackLogPropietario Propietario { get; set; } public virtual string Mensaje { get; set; } public virtual Track Track { get; set; } + public virtual Persona Usuario { get; set; } + public virtual bool Successful { get; set; } + public virtual DateTime Fecha { get; set; } } public enum TrackLogPropietario { - Twitter = 1 + Twitter = 1, + Blog = 2 } diff -r 8fa58a79656a -r 683cc27450ce Agendas/trunk/src/Agendas.Tests/Cruds/EventoCrud.cs --- a/Agendas/trunk/src/Agendas.Tests/Cruds/EventoCrud.cs Wed Jun 22 09:49:07 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/Cruds/EventoCrud.cs Fri Jun 24 21:19:42 2011 -0300 @@ -27,7 +27,12 @@ var ponente = new Persona("Carlos Blé"); _personaRepository.Save(ponente); - var evento = Evento.Proponer("TDD - Diseño Basado en Ejemplos", ponente, string.Empty, TipoEvento.Van); + var usuario = new Persona("Nelo"); + _personaRepository.Save(usuario); + + var evento = Evento.Proponer("TDD - Diseño Basado en Ejemplos", ponente, string.Empty, TipoEvento.Van); + evento.Tracks.First().LogAdd(new TrackLog(TrackLogPropietario.Twitter, "Mensaje", usuario, true)); + _eventoRepository.Save(evento); return evento.Id; diff -r 8fa58a79656a -r 683cc27450ce Agendas/trunk/src/Agendas.Twitter/TwitterPublicador.cs --- a/Agendas/trunk/src/Agendas.Twitter/TwitterPublicador.cs Wed Jun 22 09:49:07 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Twitter/TwitterPublicador.cs Fri Jun 24 21:19:42 2011 -0300 @@ -49,14 +49,14 @@ foreach (var track in tracks) { //Si ya hicimos el twitt de este track, no volvemos a hacerlo - if (track.Logs.Any(l => l.Propietario == TrackLogPropietario.Twitter)) continue; + if (track.Logs.Any(l => l.Propietario == TrackLogPropietario.Twitter && l.Successful)) continue; var twitt = BuildTwitt(track); if (!string.IsNullOrWhiteSpace(twitt)) { string message; - Publicar(twitt, out message); - track.LogAdd(new TrackLog(TrackLogPropietario.Twitter, message)); + bool success = Publicar(twitt, out message); + track.LogAdd(new TrackLog(TrackLogPropietario.Twitter, message, track.Usuario, success)); } } }