Mercurial > altnet-hispano
comparison Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 235:c61954d24c8c
Quitando ponente principal y utilizando siempre la lista de ponentes
author | nelopauselli |
---|---|
date | Tue, 04 Oct 2011 20:42:35 -0300 |
parents | e5959f3405e0 |
children | 51faeabfb9d9 |
comparison
equal
deleted
inserted
replaced
231:e5959f3405e0 | 235:c61954d24c8c |
---|---|
44 public IEnumerable<Evento> GetHistorico() | 44 public IEnumerable<Evento> GetHistorico() |
45 { | 45 { |
46 return _eventosRepository.GetByState(EventoPublicadoState.GetInstance()) ?? new List<Evento>(); | 46 return _eventosRepository.GetByState(EventoPublicadoState.GetInstance()) ?? new List<Evento>(); |
47 } | 47 } |
48 | 48 |
49 public EventoResultado ModificarEvento(Guid eventoId, string titulo, Guid ponenteId, 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 && ponenteId == Guid.Empty) | 53 if (evento.Tipo == TipoEvento.Van && (ponentesId == null || !ponentesId.Any())) |
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 Persona persona = null; | |
57 if (ponenteId != Guid.Empty) | |
58 { | |
59 persona = _personaRepository.Get(ponenteId); | |
60 if (persona == null) | |
61 return new EventoResultado(false, string.Format("No se encontró el ponente indicado ({0})", ponenteId), null); | |
62 } | |
63 | |
64 if (evento.Titulo != titulo) | 56 if (evento.Titulo != titulo) |
65 evento.CambiarTitulo(titulo); | 57 evento.CambiarTitulo(titulo); |
66 | 58 |
67 if (evento.FechaInicio == null && fechaInicio != null && evento.FechaTermino == null && fechaTermino != null) | 59 if (evento.FechaInicio == null && fechaInicio != null && evento.FechaTermino == null && fechaTermino != null) |
68 evento.Agendar(persona, fechaInicio, fechaTermino, urlInvitacion); | 60 evento.Agendar(fechaInicio, fechaTermino, urlInvitacion); |
69 else if (evento.FechaInicio != fechaInicio || evento.Ponente != persona || evento.UrlInvitacion != urlInvitacion || | 61 else if (evento.FechaInicio != fechaInicio || evento.UrlInvitacion != urlInvitacion || evento.FechaTermino != fechaTermino) |
70 evento.FechaTermino != fechaTermino) | 62 evento.Actualizar(fechaInicio, fechaTermino, urlInvitacion); |
71 evento.Actualizar(persona, fechaInicio, fechaTermino, urlInvitacion); | 63 |
64 var r = ActualizarPonentes(evento, ponentesId); | |
65 if (!r.Succeful) return r; | |
72 | 66 |
73 Notify(evento); | 67 Notify(evento); |
74 | 68 |
75 var warnings = evento.GetLogsNews().Where(l => !l.Successful); | 69 var warnings = evento.GetLogsNews().Where(l => !l.Successful); |
76 | 70 |
77 return new EventoResultado(true,"Evento modificado", warnings); | 71 return new EventoResultado(true,"Evento modificado", warnings); |
78 } | 72 } |
79 | 73 |
80 public EventoResultado ModificarPropuesta(Guid id, string titulo, Guid ponenteId, string urlInvitacion) | 74 public EventoResultado ModificarPropuesta(Guid id, string titulo, IEnumerable<Guid> ponentesId, string urlInvitacion) |
81 { | 75 { |
82 return ModificarEvento(id, titulo, ponenteId, null, null, urlInvitacion); | 76 return ModificarEvento(id, titulo, ponentesId, null, null, urlInvitacion); |
83 } | 77 } |
84 | 78 |
85 public EventoResultado Proponer(string titulo, Guid? ponenteId, string urlInvitacion, TipoEvento tipo) | 79 public EventoResultado Proponer(string titulo, IEnumerable<Guid> ponentesId, string urlInvitacion, TipoEvento tipo) |
86 { | 80 { |
87 Persona persona = null; | 81 if (string.IsNullOrWhiteSpace(titulo)) |
88 if (ponenteId.HasValue) | 82 return new EventoResultado(false, "Debe indicar el título del evento", null); |
89 persona = _personaRepository.Get(ponenteId.Value); | 83 |
90 | 84 var evento = Evento.Proponer(titulo, urlInvitacion, tipo); |
91 var evento = Evento.Proponer(titulo, persona, urlInvitacion, tipo); | 85 |
92 | 86 var r = ActualizarPonentes(evento, ponentesId); |
93 if (string.IsNullOrWhiteSpace(evento.Titulo)) | 87 if (!r.Succeful) return r; |
94 return new EventoResultado(false,"Debe indicar el título del evento", null); | |
95 | 88 |
96 Notify(evento); | 89 Notify(evento); |
97 | 90 |
98 _eventosRepository.Save(evento); | 91 _eventosRepository.Save(evento); |
99 | 92 |
100 var warnings = evento.GetLogsNews().Where(l => !l.Successful); | 93 var warnings = evento.GetLogsNews().Where(l => !l.Successful); |
101 | 94 |
102 return new EventoResultado(true,"Evento propuesto", warnings); | 95 return new EventoResultado(true,"Evento propuesto", warnings); |
103 } | 96 } |
104 | 97 |
105 public EventoResultado Agendar(string titulo, Guid ponenteId, DateTime? fechaInicio, DateTime? fechaTermino, string urlInvitacion, TipoEvento tipo, IEnumerable<Guid> colaboradoresId = null) | 98 public EventoResultado Agendar(string titulo, IEnumerable<Guid> ponentesId, DateTime? fechaInicio, DateTime? fechaTermino, string urlInvitacion, TipoEvento tipo) |
106 { | 99 { |
107 if (!fechaInicio.HasValue) | 100 if (!fechaInicio.HasValue) |
108 return new EventoResultado(false, "Debe indicar la fecha", null); | 101 return new EventoResultado(false, "Debe indicar la fecha", null); |
109 if (!fechaTermino.HasValue) | 102 if (!fechaTermino.HasValue) |
110 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); |
111 if (tipo==TipoEvento.Van && ponenteId == Guid.Empty) | 104 if (tipo==TipoEvento.Van && (ponentesId == null || !ponentesId.Any())) |
112 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); |
113 | |
114 Persona persona = null; | |
115 if (ponenteId != Guid.Empty) | |
116 { | |
117 persona = _personaRepository.Get(ponenteId); | |
118 if (persona == null) | |
119 return new EventoResultado(false, string.Format("No se encontró el ponente indicado ({0})", ponenteId), null); | |
120 } | |
121 | 106 |
122 var existeOtroEvento = _eventosRepository.GetNoPropuestoByTitulo(titulo); | 107 var existeOtroEvento = _eventosRepository.GetNoPropuestoByTitulo(titulo); |
123 if (existeOtroEvento != null) | 108 if (existeOtroEvento != null) |
124 return new EventoResultado(false, | 109 return new EventoResultado(false, |
125 string.Format( | 110 string.Format( |
135 return new EventoResultado(false, string.Format("El evento que está intentando agendar entra en conflicto con '{0}'", e.Titulo), null); | 120 return new EventoResultado(false, string.Format("El evento que está intentando agendar entra en conflicto con '{0}'", e.Titulo), null); |
136 } | 121 } |
137 } | 122 } |
138 | 123 |
139 if (evento == null) | 124 if (evento == null) |
140 evento = Evento.Agendar(titulo, persona, fechaInicio.Value, fechaTermino.Value, urlInvitacion, tipo); | 125 evento = Evento.Agendar(titulo, fechaInicio.Value, fechaTermino.Value, urlInvitacion, tipo); |
141 else | 126 else |
142 evento.Agendar(persona, fechaInicio, fechaTermino, urlInvitacion); | 127 evento.Agendar(fechaInicio, fechaTermino, urlInvitacion); |
143 | 128 |
144 var colaboradores = new List<Persona>(); | 129 var r = ActualizarPonentes(evento, ponentesId); |
145 if (colaboradoresId!=null) | 130 if (!r.Succeful) return r; |
146 { | |
147 foreach (var colaboradorId in colaboradoresId) | |
148 { | |
149 var colaborador = _personaRepository.Get(colaboradorId); | |
150 if (colaborador == null) | |
151 return new EventoResultado(false, string.Format("No se encontró el colaborador indicado ({0})", colaboradorId), | |
152 null); | |
153 colaboradores.Add(colaborador); | |
154 } | |
155 evento.ActualizarOtrosPonentes(colaboradores); | |
156 } | |
157 | 131 |
158 Notify(evento); | 132 Notify(evento); |
159 | 133 |
160 _eventosRepository.Save(evento); | 134 _eventosRepository.Save(evento); |
161 | 135 |
162 var warnings = evento.GetLogsNews().Where(l => !l.Successful); | 136 var warnings = evento.GetLogsNews().Where(l => !l.Successful); |
163 | 137 |
164 return new EventoResultado(true, "Evento creado", warnings); | 138 return new EventoResultado(true, "Evento creado", warnings); |
165 } | 139 } |
166 | 140 |
167 public EventoResultado Confirmar(Guid eventoId) | 141 private EventoResultado ActualizarPonentes(Evento evento, IEnumerable<Guid> ponentesId) |
142 { | |
143 var ponentes = new List<Persona>(); | |
144 if (ponentesId != null) | |
145 { | |
146 foreach (var ponenteId in ponentesId.Where(id=>id!=Guid.Empty)) | |
147 { | |
148 var colaborador = _personaRepository.Get(ponenteId); | |
149 if (colaborador == null) | |
150 return new EventoResultado(false, string.Format("No se encontró el colaborador indicado ({0})", ponenteId), | |
151 null); | |
152 ponentes.Add(colaborador); | |
153 } | |
154 evento.ActualizarOtrosPonentes(ponentes); | |
155 } | |
156 return new EventoResultado(true, "Ponentes actualizados", null); | |
157 } | |
158 | |
159 public EventoResultado Confirmar(Guid eventoId) | |
168 { | 160 { |
169 Evento evento = GetEvento(eventoId); | 161 Evento evento = GetEvento(eventoId); |
170 | 162 |
171 evento.Confirmar(); | 163 evento.Confirmar(); |
172 | 164 |