Mercurial > altnet-hispano
diff Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 242:5cc1681d3789
Combinar
author | juanjose.montesdeocaarbos |
---|---|
date | Wed, 05 Oct 2011 07:57:21 -0300 |
parents | 51faeabfb9d9 |
children | 59f8fa2f835e |
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs Wed Oct 05 07:43:09 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs Wed Oct 05 07:57:21 2011 -0300 @@ -46,29 +46,23 @@ return _eventosRepository.GetByState(EventoPublicadoState.GetInstance()) ?? new List<Evento>(); } - public EventoResultado ModificarEvento(Guid eventoId, string titulo, Guid ponenteId, DateTime? fechaInicio, DateTime? fechaTermino, string urlInvitacion) + public EventoResultado ModificarEvento(Guid eventoId, string titulo, IEnumerable<Guid> ponentesId, DateTime? fechaInicio, DateTime? fechaTermino, string urlInvitacion) { Evento evento = GetEvento(eventoId); - if (evento.Tipo == TipoEvento.Van && ponenteId == Guid.Empty) + if (evento.Tipo == TipoEvento.Van && (ponentesId == null || !ponentesId.Any(id=>id!=Guid.Empty))) return new EventoResultado(false, "Debe indicar el ponente para este tipo de evento", null); - Persona persona = null; - if (ponenteId != Guid.Empty) - { - persona = _personaRepository.Get(ponenteId); - if (persona == null) - return new EventoResultado(false, string.Format("No se encontró el ponente indicado ({0})", ponenteId), null); - } - if (evento.Titulo != titulo) evento.CambiarTitulo(titulo); 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); + evento.Agendar(fechaInicio, fechaTermino, urlInvitacion); + else if (evento.FechaInicio != fechaInicio || evento.UrlInvitacion != urlInvitacion || evento.FechaTermino != fechaTermino) + evento.Actualizar(fechaInicio, fechaTermino, urlInvitacion); + + var r = ActualizarPonentes(evento, ponentesId, Accion.Modificar); + if (!r.Succeful) return r; Notify(evento); @@ -77,21 +71,20 @@ return new EventoResultado(true,"Evento modificado", warnings); } - public EventoResultado ModificarPropuesta(Guid id, string titulo, Guid ponenteId, string urlInvitacion) + public EventoResultado ModificarPropuesta(Guid id, string titulo, IEnumerable<Guid> ponentesId, string urlInvitacion) { - return ModificarEvento(id, titulo, ponenteId, null, null, urlInvitacion); + return ModificarEvento(id, titulo, ponentesId, null, null, urlInvitacion); } - public EventoResultado Proponer(string titulo, Guid? ponenteId, string urlInvitacion, TipoEvento tipo) + public EventoResultado Proponer(string titulo, IEnumerable<Guid> ponentesId, string urlInvitacion, TipoEvento tipo) { - Persona persona = null; - if (ponenteId.HasValue) - persona = _personaRepository.Get(ponenteId.Value); + if (string.IsNullOrWhiteSpace(titulo)) + return new EventoResultado(false, "Debe indicar el título del evento", null); - var evento = Evento.Proponer(titulo, persona, urlInvitacion, tipo); + var evento = Evento.Proponer(titulo, urlInvitacion, tipo); - if (string.IsNullOrWhiteSpace(evento.Titulo)) - return new EventoResultado(false,"Debe indicar el título del evento", null); + var r = ActualizarPonentes(evento, ponentesId, null); + if (!r.Succeful) return r; Notify(evento); @@ -102,23 +95,15 @@ return new EventoResultado(true,"Evento propuesto", warnings); } - public EventoResultado Agendar(string titulo, Guid ponenteId, DateTime? fechaInicio, DateTime? fechaTermino, string urlInvitacion, TipoEvento tipo, IEnumerable<Guid> colaboradoresId = null) + public EventoResultado Agendar(string titulo, IEnumerable<Guid> ponentesId, DateTime? fechaInicio, DateTime? fechaTermino, string urlInvitacion, TipoEvento tipo) { 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); - if (tipo==TipoEvento.Van && ponenteId == Guid.Empty) + if (tipo == TipoEvento.Van && (ponentesId == null || !ponentesId.Any(id => id != Guid.Empty))) return new EventoResultado(false, "Debe indicar el ponente para este tipo de evento", null); - Persona persona = null; - if (ponenteId != Guid.Empty) - { - persona = _personaRepository.Get(ponenteId); - if (persona == null) - return new EventoResultado(false, string.Format("No se encontró el ponente indicado ({0})", ponenteId), null); - } - var existeOtroEvento = _eventosRepository.GetNoPropuestoByTitulo(titulo); if (existeOtroEvento != null) return new EventoResultado(false, @@ -137,23 +122,12 @@ } if (evento == null) - evento = Evento.Agendar(titulo, persona, fechaInicio.Value, fechaTermino.Value, urlInvitacion, tipo); + evento = Evento.Agendar(titulo, fechaInicio.Value, fechaTermino.Value, urlInvitacion, tipo); else - evento.Agendar(persona, fechaInicio, fechaTermino, urlInvitacion); + evento.Agendar(fechaInicio, fechaTermino, urlInvitacion); - var colaboradores = new List<Persona>(); - if (colaboradoresId!=null) - { - foreach (var colaboradorId in colaboradoresId) - { - var colaborador = _personaRepository.Get(colaboradorId); - if (colaborador == null) - return new EventoResultado(false, string.Format("No se encontró el colaborador indicado ({0})", colaboradorId), - null); - colaboradores.Add(colaborador); - } - evento.ActualizarOtrosPonentes(colaboradores); - } + var r = ActualizarPonentes(evento, ponentesId, null); + if (!r.Succeful) return r; Notify(evento); @@ -164,7 +138,25 @@ return new EventoResultado(true, "Evento creado", warnings); } - public EventoResultado Confirmar(Guid eventoId) + private EventoResultado ActualizarPonentes(Evento evento, IEnumerable<Guid> ponentesId, Accion? action) + { + var ponentes = new List<Persona>(); + if (ponentesId != null) + { + foreach (var ponenteId in ponentesId.Where(id=>id!=Guid.Empty)) + { + var colaborador = _personaRepository.Get(ponenteId); + if (colaborador == null) + return new EventoResultado(false, string.Format("No se encontró el colaborador indicado ({0})", ponenteId), + null); + ponentes.Add(colaborador); + } + evento.ActualizarPonentes(ponentes, action); + } + return new EventoResultado(true, "Ponentes actualizados", null); + } + + public EventoResultado Confirmar(Guid eventoId) { Evento evento = GetEvento(eventoId);