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();