Mercurial > altnet-hispano
changeset 57:3d9e6d56d903
Refactoring del track de cambios de un evento
author | nelopauselli |
---|---|
date | Mon, 16 May 2011 20:23:31 -0300 |
parents | 65bbcdd5d357 |
children | 37d99d239cae |
files | Agendas/trunk/src/Agendas.Domain/Agenda.cs Agendas/trunk/src/Agendas.Domain/Agendas.Domain.csproj Agendas/trunk/src/Agendas.Domain/Evento.cs Agendas/trunk/src/Agendas.Domain/Track.cs Agendas/trunk/src/Agendas.Tests/EventoTests.cs |
diffstat | 5 files changed, 53 insertions(+), 42 deletions(-) [+] |
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs Mon May 16 20:15:05 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs Mon May 16 20:23:31 2011 -0300 @@ -64,8 +64,7 @@ public Resultado Proponer(string titulo, string ponenteNombre) { Ponente ponente = GetPonente(ponenteNombre); - var evento = new Evento(titulo); - evento.Actualizar(ponente); + var evento = Evento.Proponer(titulo, ponente); if (string.IsNullOrWhiteSpace(evento.Titulo)) return new Resultado(false); @@ -78,15 +77,18 @@ public Resultado Publicar(string titulo, string ponenteNombre, DateTime? fecha) { + if (!fecha.HasValue) + return new Resultado(false); + if (string.IsNullOrWhiteSpace(ponenteNombre)) + return new Resultado(false); + Ponente ponente = GetPonente(ponenteNombre); - Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo) ?? new Evento(titulo); - evento.Publicar(ponente, fecha); - - if (!evento.Fecha.HasValue) - return new Resultado(false); - if (string.IsNullOrWhiteSpace(evento.Ponente.Nombre)) - return new Resultado(false); + Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo); + if (evento == null) + evento = Evento.Publicar(titulo, ponente, fecha.Value); + else + evento.Publicar(ponente, fecha); if (_publicador != null) _publicador.Publicar(evento);
--- a/Agendas/trunk/src/Agendas.Domain/Agendas.Domain.csproj Mon May 16 20:15:05 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agendas.Domain.csproj Mon May 16 20:23:31 2011 -0300 @@ -55,6 +55,7 @@ <Compile Include="IPublicador.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Resultado.cs" /> + <Compile Include="Track.cs" /> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
--- a/Agendas/trunk/src/Agendas.Domain/Evento.cs Mon May 16 20:15:05 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Evento.cs Mon May 16 20:23:31 2011 -0300 @@ -8,10 +8,24 @@ private readonly IList<Track> _tracks; private IList<string> _enlaces; - public Evento(string titulo) + public static Evento Proponer(string titulo, Ponente ponente) { - Titulo = titulo; + var evento = new Evento { Titulo = titulo, Ponente = ponente }; + evento.AddTracks(new Track(Accion.Proponer)); + + return evento; + } + public static Evento Publicar(string titulo, Ponente ponente, DateTime fecha) + { + var evento = new Evento { Titulo = titulo }; + evento.Publicar(ponente, fecha); + + return evento; + } + + private Evento() + { _enlaces = new List<string>(); _tracks = new List<Track>(); } @@ -20,7 +34,6 @@ public DateTime? Fecha { get; private set; } public string Sintesis { get; private set; } public Ponente Ponente { get; private set; } - protected string Usuario { get; private set; } public IEnumerable<string> Enlaces { @@ -34,29 +47,20 @@ public void Actualizar(Ponente ponente, DateTime? fecha) { - Usuario = IdentityContext.GetUserName(); Ponente = ponente; Fecha = fecha; AddTracks(new Track(Accion.Modificar)); } - public void Actualizar(Ponente ponente) - { - Usuario = IdentityContext.GetUserName(); - Ponente = ponente; - } - public void CambiarTitulo(string titulo) { - Usuario = IdentityContext.GetUserName(); Titulo = titulo; AddTracks(new Track(Accion.CambiarTitulo)); } public void Publicar(Ponente ponente, DateTime? fecha) { - Usuario = IdentityContext.GetUserName(); Ponente = ponente; Fecha = fecha; AddTracks(new Track(Accion.Publicar)); @@ -64,7 +68,6 @@ public void Realizado(DateTime fecha, string sintesis, IList<string> enlaces) { - Usuario = IdentityContext.GetUserName(); Fecha = fecha; Sintesis = sintesis; _enlaces = enlaces; @@ -72,7 +75,6 @@ public void Realizado(string sintesis) { - Usuario = IdentityContext.GetUserName(); Sintesis = sintesis; AddTracks(new Track(Accion.Realizar)); } @@ -82,22 +84,4 @@ _tracks.Add(track); } } - - public class Track - { - public Track(string accion) - { - Accion = accion; - } - - public string Accion { get; private set; } - } - - public class Accion - { - public const string Publicar = "Publicar"; - public const string Modificar = "Modificar"; - public const string CambiarTitulo = "CambiarTitulo"; - public const string Realizar = "Realizar"; - } } \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Domain/Track.cs Mon May 16 20:23:31 2011 -0300 @@ -0,0 +1,24 @@ +namespace AltNetHispano.Agendas.Domain +{ + public class Track + { + public Track(string accion) + { + Usuario = IdentityContext.GetUserName(); + Accion = accion; + } + + public string Accion { get; private set; } + protected string Usuario { get; private set; } + } + + public class Accion + { + public const string Proponer = "Proponer"; + public const string Publicar = "Publicar"; + public const string Modificar = "Modificar"; + public const string CambiarTitulo = "CambiarTitulo"; + public const string Realizar = "Realizar"; + } + +} \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Tests/EventoTests.cs Mon May 16 20:15:05 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/EventoTests.cs Mon May 16 20:23:31 2011 -0300 @@ -15,7 +15,7 @@ { Guid vanId; { - var van = new Evento("TDD - Diseño Basado en Ejemplos"); + var van = Evento.Proponer("TDD - Diseño Basado en Ejemplos", null); van.Actualizar(new Ponente("Carlos Blé"), new DateTime(2010, 04, 16)); IEventoRepository eventoRepository = new EventoRepository();