diff Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 185:2d02adb79322

Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio. Se modifica la propiedad Fecha del Evento, renombrandola FechaInicio. En el ModelView se agrega propiedades Duración y Hora del Evento cuando es Modificado, Nuevo y Agendado. Las fechas ingresadas son creadas en sistema UTC Queda pendiente Agregar duración a Google Calendar.
author alabra
date Tue, 09 Aug 2011 01:04:27 -0400
parents 212c664db5aa
children 4d0b2552edb2
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Mon Aug 08 22:32:12 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Tue Aug 09 01:04:27 2011 -0400
@@ -46,7 +46,7 @@
             return _eventosRepository.GetByState(EventoPublicadoState.GetInstance()) ?? new List<Evento>();
         }
 
-		public EventoResultado ModificarEvento(Guid eventoId, string titulo, Guid ponenteId, DateTime? fecha, string urlInvitacion)
+        public EventoResultado ModificarEvento(Guid eventoId, string titulo, Guid ponenteId, DateTime? fechaInicio, DateTime? fechaTermino, string urlInvitacion)
         {
             Evento evento = GetEvento(eventoId);
             Persona persona = _personaRepository.Get(ponenteId);
@@ -54,10 +54,11 @@
             if (evento.Titulo != titulo)
                 evento.CambiarTitulo(titulo);
 
-            if (evento.Fecha == null && fecha != null)
-                evento.Agendar(persona, fecha, urlInvitacion);
-            else if (evento.Fecha != fecha || evento.Ponente != persona || evento.UrlInvitacion != urlInvitacion)
-                evento.Actualizar(persona, fecha, urlInvitacion);
+            if (evento.FechaInicio == null && fechaInicio != null && evento.FechaTermino == null && fechaTermino != null)
+                evento.Agendar(persona, fechaInicio, fechaTermino, urlInvitacion);
+            else if (evento.FechaInicio != fechaInicio || evento.Ponente != persona || evento.UrlInvitacion != urlInvitacion ||
+                    evento.FechaTermino != fechaTermino)
+                evento.Actualizar(persona, fechaInicio, fechaTermino, urlInvitacion);
 
             Notify(evento);
 
@@ -68,7 +69,7 @@
 
 		public EventoResultado ModificarPropuesta(Guid id, string titulo, Guid ponenteId, string urlInvitacion)
         {
-            return ModificarEvento(id, titulo, ponenteId, null, urlInvitacion);
+            return ModificarEvento(id, titulo, ponenteId, null, null, urlInvitacion);
         }
 
 		public EventoResultado Proponer(string titulo, Guid? ponenteId, string urlInvitacion, TipoEvento tipo)
@@ -91,20 +92,22 @@
 			return new EventoResultado(true,"Evento propuesto", warnings);
 		}
 
-		public EventoResultado Agendar(string titulo, Guid ponenteId, DateTime? fecha, string urlInvitacion, TipoEvento tipo)
+		public EventoResultado Agendar(string titulo, Guid ponenteId, DateTime? fechaInicio, DateTime? fechaTermino, string urlInvitacion, TipoEvento tipo)
         {
-            if (!fecha.HasValue)
+            if (!fechaInicio.HasValue)
                 return new EventoResultado(false, "Debe indicar la fecha", null);
+            if (!fechaTermino.HasValue)
+                return new EventoResultado(false, "Debe indicar la hora y duración", null);
 
             Persona persona = _personaRepository.Get(ponenteId);
             if (persona == null)
-				return new EventoResultado(false, string.Format("No se encontró el ponente indicado ({0})", ponenteId), null);
+                return new EventoResultado(false, string.Format("No se encontró el ponente indicado ({0})", ponenteId), null);
 
             Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo);
             if (evento == null)
-                evento = Evento.Agendar(titulo, persona, fecha.Value, urlInvitacion, tipo);
+                evento = Evento.Agendar(titulo, persona, fechaInicio.Value, fechaTermino.Value, urlInvitacion, tipo);
             else
-                evento.Agendar(persona, fecha, urlInvitacion);
+                evento.Agendar(persona, fechaInicio, fechaTermino, urlInvitacion);
 
             Notify(evento);