diff Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 195:4d0b2552edb2

Ticket 170: Cuando se agenda o confirma un evento, verificar que no existan otros dentro del rango horario en que se desarrollará el evento actual.
author juanjose.montesdeocaarbos
date Sat, 13 Aug 2011 01:01:54 -0300
parents 2d02adb79322
children bb7a60c28d8d
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Fri Aug 12 23:55:09 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Sat Aug 13 01:01:54 2011 -0300
@@ -104,12 +104,20 @@
                 return new EventoResultado(false, string.Format("No se encontró el ponente indicado ({0})", ponenteId), null);
 
             Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo);
-            if (evento == null)
+
+			if (evento == null)
                 evento = Evento.Agendar(titulo, persona, fechaInicio.Value, fechaTermino.Value, urlInvitacion, tipo);
             else
                 evento.Agendar(persona, fechaInicio, fechaTermino, urlInvitacion);
 
-            Notify(evento);
+			foreach (var e in _eventosRepository.GetActivos())
+			{
+			    if (!e.Equals(evento) && (evento.FechaInicio <= e.FechaTermino && evento.FechaTermino >= e.FechaInicio))
+			    {
+			        return new EventoResultado(false, string.Format("El evento que está intentando agendar entra en conflicto con '{0}'", evento.Titulo), null);
+			    }
+			}
+			Notify(evento);
 
             _eventosRepository.Save(evento);