comparison Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 237:51faeabfb9d9

Todos los tests en verde quitando al ponente principal
author nelopauselli
date Tue, 04 Oct 2011 21:30:55 -0300
parents c61954d24c8c
children 59f8fa2f835e
comparison
equal deleted inserted replaced
236:04d6b386afa7 237:51faeabfb9d9
48 48
49 public EventoResultado ModificarEvento(Guid eventoId, string titulo, IEnumerable<Guid> ponentesId, DateTime? fechaInicio, DateTime? fechaTermino, string urlInvitacion) 49 public EventoResultado ModificarEvento(Guid eventoId, string titulo, IEnumerable<Guid> ponentesId, DateTime? fechaInicio, DateTime? fechaTermino, string urlInvitacion)
50 { 50 {
51 Evento evento = GetEvento(eventoId); 51 Evento evento = GetEvento(eventoId);
52 52
53 if (evento.Tipo == TipoEvento.Van && (ponentesId == null || !ponentesId.Any())) 53 if (evento.Tipo == TipoEvento.Van && (ponentesId == null || !ponentesId.Any(id=>id!=Guid.Empty)))
54 return new EventoResultado(false, "Debe indicar el ponente para este tipo de evento", null); 54 return new EventoResultado(false, "Debe indicar el ponente para este tipo de evento", null);
55 55
56 if (evento.Titulo != titulo) 56 if (evento.Titulo != titulo)
57 evento.CambiarTitulo(titulo); 57 evento.CambiarTitulo(titulo);
58 58
59 if (evento.FechaInicio == null && fechaInicio != null && evento.FechaTermino == null && fechaTermino != null) 59 if (evento.FechaInicio == null && fechaInicio != null && evento.FechaTermino == null && fechaTermino != null)
60 evento.Agendar(fechaInicio, fechaTermino, urlInvitacion); 60 evento.Agendar(fechaInicio, fechaTermino, urlInvitacion);
61 else if (evento.FechaInicio != fechaInicio || evento.UrlInvitacion != urlInvitacion || evento.FechaTermino != fechaTermino) 61 else if (evento.FechaInicio != fechaInicio || evento.UrlInvitacion != urlInvitacion || evento.FechaTermino != fechaTermino)
62 evento.Actualizar(fechaInicio, fechaTermino, urlInvitacion); 62 evento.Actualizar(fechaInicio, fechaTermino, urlInvitacion);
63 63
64 var r = ActualizarPonentes(evento, ponentesId); 64 var r = ActualizarPonentes(evento, ponentesId, Accion.Modificar);
65 if (!r.Succeful) return r; 65 if (!r.Succeful) return r;
66 66
67 Notify(evento); 67 Notify(evento);
68 68
69 var warnings = evento.GetLogsNews().Where(l => !l.Successful); 69 var warnings = evento.GetLogsNews().Where(l => !l.Successful);
81 if (string.IsNullOrWhiteSpace(titulo)) 81 if (string.IsNullOrWhiteSpace(titulo))
82 return new EventoResultado(false, "Debe indicar el título del evento", null); 82 return new EventoResultado(false, "Debe indicar el título del evento", null);
83 83
84 var evento = Evento.Proponer(titulo, urlInvitacion, tipo); 84 var evento = Evento.Proponer(titulo, urlInvitacion, tipo);
85 85
86 var r = ActualizarPonentes(evento, ponentesId); 86 var r = ActualizarPonentes(evento, ponentesId, null);
87 if (!r.Succeful) return r; 87 if (!r.Succeful) return r;
88 88
89 Notify(evento); 89 Notify(evento);
90 90
91 _eventosRepository.Save(evento); 91 _eventosRepository.Save(evento);
99 { 99 {
100 if (!fechaInicio.HasValue) 100 if (!fechaInicio.HasValue)
101 return new EventoResultado(false, "Debe indicar la fecha", null); 101 return new EventoResultado(false, "Debe indicar la fecha", null);
102 if (!fechaTermino.HasValue) 102 if (!fechaTermino.HasValue)
103 return new EventoResultado(false, "Debe indicar la hora y duración", null); 103 return new EventoResultado(false, "Debe indicar la hora y duración", null);
104 if (tipo==TipoEvento.Van && (ponentesId == null || !ponentesId.Any())) 104 if (tipo == TipoEvento.Van && (ponentesId == null || !ponentesId.Any(id => id != Guid.Empty)))
105 return new EventoResultado(false, "Debe indicar el ponente para este tipo de evento", null); 105 return new EventoResultado(false, "Debe indicar el ponente para este tipo de evento", null);
106 106
107 var existeOtroEvento = _eventosRepository.GetNoPropuestoByTitulo(titulo); 107 var existeOtroEvento = _eventosRepository.GetNoPropuestoByTitulo(titulo);
108 if (existeOtroEvento != null) 108 if (existeOtroEvento != null)
109 return new EventoResultado(false, 109 return new EventoResultado(false,
124 if (evento == null) 124 if (evento == null)
125 evento = Evento.Agendar(titulo, fechaInicio.Value, fechaTermino.Value, urlInvitacion, tipo); 125 evento = Evento.Agendar(titulo, fechaInicio.Value, fechaTermino.Value, urlInvitacion, tipo);
126 else 126 else
127 evento.Agendar(fechaInicio, fechaTermino, urlInvitacion); 127 evento.Agendar(fechaInicio, fechaTermino, urlInvitacion);
128 128
129 var r = ActualizarPonentes(evento, ponentesId); 129 var r = ActualizarPonentes(evento, ponentesId, null);
130 if (!r.Succeful) return r; 130 if (!r.Succeful) return r;
131 131
132 Notify(evento); 132 Notify(evento);
133 133
134 _eventosRepository.Save(evento); 134 _eventosRepository.Save(evento);
136 var warnings = evento.GetLogsNews().Where(l => !l.Successful); 136 var warnings = evento.GetLogsNews().Where(l => !l.Successful);
137 137
138 return new EventoResultado(true, "Evento creado", warnings); 138 return new EventoResultado(true, "Evento creado", warnings);
139 } 139 }
140 140
141 private EventoResultado ActualizarPonentes(Evento evento, IEnumerable<Guid> ponentesId) 141 private EventoResultado ActualizarPonentes(Evento evento, IEnumerable<Guid> ponentesId, Accion? action)
142 { 142 {
143 var ponentes = new List<Persona>(); 143 var ponentes = new List<Persona>();
144 if (ponentesId != null) 144 if (ponentesId != null)
145 { 145 {
146 foreach (var ponenteId in ponentesId.Where(id=>id!=Guid.Empty)) 146 foreach (var ponenteId in ponentesId.Where(id=>id!=Guid.Empty))
149 if (colaborador == null) 149 if (colaborador == null)
150 return new EventoResultado(false, string.Format("No se encontró el colaborador indicado ({0})", ponenteId), 150 return new EventoResultado(false, string.Format("No se encontró el colaborador indicado ({0})", ponenteId),
151 null); 151 null);
152 ponentes.Add(colaborador); 152 ponentes.Add(colaborador);
153 } 153 }
154 evento.ActualizarOtrosPonentes(ponentes); 154 evento.ActualizarPonentes(ponentes, action);
155 } 155 }
156 return new EventoResultado(true, "Ponentes actualizados", null); 156 return new EventoResultado(true, "Ponentes actualizados", null);
157 } 157 }
158 158
159 public EventoResultado Confirmar(Guid eventoId) 159 public EventoResultado Confirmar(Guid eventoId)