Mercurial > altnet-hispano
diff Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 145:e6e6bfb1da9e
En la edición de un evento (nuevo, propuesta, modificación), el ponente se selecciona desde un combo.
author | Nelo@Guinea.neluz.int |
---|---|
date | Mon, 01 Aug 2011 11:42:24 -0300 |
parents | 62791999ad01 |
children | c1062de96845 |
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs Mon Aug 01 10:25:23 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs Mon Aug 01 11:42:24 2011 -0300 @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using System.Linq; using AltNetHispano.Agendas.Domain.Exceptions; @@ -7,159 +6,151 @@ namespace AltNetHispano.Agendas.Domain { - public class Agenda - { - private readonly IEventoRepository _eventosRepository; - private readonly IPersonaRepository _personaRepository; - private readonly IPatrocinadorRepository _patrocinadorRepository; + public class Agenda + { + private readonly IEventoRepository _eventosRepository; + private readonly IPersonaRepository _personaRepository; + private readonly IPatrocinadorRepository _patrocinadorRepository; - private readonly IPublicador _publicador; + private readonly IPublicador _publicador; - public Agenda(IPublicador publicador, IEventoRepository eventosRepository, - IPersonaRepository personaRepository, IPatrocinadorRepository patrocinadorRepository) - { - _publicador = publicador; - _patrocinadorRepository = patrocinadorRepository; - _personaRepository = personaRepository; - _eventosRepository = eventosRepository; - } + public Agenda(IPublicador publicador, IEventoRepository eventosRepository, + IPersonaRepository personaRepository, IPatrocinadorRepository patrocinadorRepository) + { + _publicador = publicador; + _patrocinadorRepository = patrocinadorRepository; + _personaRepository = personaRepository; + _eventosRepository = eventosRepository; + } - public Evento GetEvento(Guid eventoId) - { - Evento evento =_eventosRepository.Get(eventoId); - if (evento == null) - throw new EventoNotFoundException(eventoId); - return evento; - } + public Evento GetEvento(Guid eventoId) + { + Evento evento = _eventosRepository.Get(eventoId); + if (evento == null) + throw new EventoNotFoundException(eventoId); + return evento; + } - public IList<Evento> GetEventosActivos(EventoState state) - { - return _eventosRepository.GetByState(state) ?? new List<Evento>(); - } + public IList<Evento> GetEventosActivos(EventoState state) + { + return _eventosRepository.GetByState(state) ?? new List<Evento>(); + } - public IList<Evento> GetEventosActivos() - { - return _eventosRepository.GetActivos() ?? new List<Evento>(); - } + public IList<Evento> GetEventosActivos() + { + return _eventosRepository.GetActivos() ?? new List<Evento>(); + } - public IEnumerable<Evento> GetHistorico() - { - return _eventosRepository.GetByState(EventoPublicadoState.GetInstance()) ?? new List<Evento>(); - } + public IEnumerable<Evento> GetHistorico() + { + return _eventosRepository.GetByState(EventoPublicadoState.GetInstance()) ?? new List<Evento>(); + } - public Resultado ModificarEvento(Guid eventoId, string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion) - { - Evento evento = GetEvento(eventoId); + public Resultado ModificarEvento(Guid eventoId, string titulo, Guid ponenteId, DateTime? fecha, string urlInvitacion) + { + Evento evento = GetEvento(eventoId); + Persona persona = _personaRepository.Get(ponenteId); - Persona persona = null; - if (!string.IsNullOrWhiteSpace(ponenteNombre)) - persona = GetPonente(ponenteNombre); + if (evento.Titulo != titulo) + evento.CambiarTitulo(titulo); - 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.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); + Notify(evento); - Notify(evento); - - return new Resultado(true); - } + return new Resultado(true); + } - public Resultado ModificarPropuesta(Guid id, string titulo, string ponenteNombre, string urlInvitacion) - { - return ModificarEvento(id, titulo, ponenteNombre, null, urlInvitacion); - } + public Resultado ModificarPropuesta(Guid id, string titulo, Guid ponenteId, string urlInvitacion) + { + return ModificarEvento(id, titulo, ponenteId, null, urlInvitacion); + } - public Resultado Proponer(string titulo, string ponenteNombre, string urlInvitacion, TipoEvento tipo) - { - Persona persona = GetPonente(ponenteNombre); - var evento = Evento.Proponer(titulo, persona, urlInvitacion, tipo); + public Resultado Proponer(string titulo, Guid? ponenteId, string urlInvitacion, TipoEvento tipo) + { + Persona persona = null; + if (ponenteId.HasValue) + persona = _personaRepository.Get(ponenteId.Value); - if (string.IsNullOrWhiteSpace(evento.Titulo)) - return new Resultado(false); + var evento = Evento.Proponer(titulo, persona, urlInvitacion, tipo); - Notify(evento); + if (string.IsNullOrWhiteSpace(evento.Titulo)) + return new Resultado(false); - _eventosRepository.Save(evento); - _personaRepository.Save(persona); + Notify(evento); - return new Resultado(true); - } + _eventosRepository.Save(evento); - public Resultado Agendar(string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion, TipoEvento tipo) - { - if (!fecha.HasValue) - return new Resultado(false); - if (string.IsNullOrWhiteSpace(ponenteNombre)) - return new Resultado(false); + return new Resultado(true); + } - Persona persona = GetPonente(ponenteNombre); + public Resultado Agendar(string titulo, Guid ponenteId, DateTime? fecha, string urlInvitacion, TipoEvento tipo) + { + if (!fecha.HasValue) + return new Resultado(false); - Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo); - if (evento == null) - evento = Evento.Agendar(titulo, persona, fecha.Value, urlInvitacion, tipo); - else - evento.Agendar(persona, fecha, urlInvitacion); - - Notify(evento); + Persona persona = _personaRepository.Get(ponenteId); + if (persona == null) + return new Resultado(false) + {Message = string.Format("No se encontró el ponente indicado ({0})", ponenteId)}; - _eventosRepository.Save(evento); - _personaRepository.Save(persona); - - return new Resultado(true); - } + Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo); + if (evento == null) + evento = Evento.Agendar(titulo, persona, fecha.Value, urlInvitacion, tipo); + else + evento.Agendar(persona, fecha, urlInvitacion); - public Resultado Confirmar(Guid eventoId) - { - Evento evento = GetEvento(eventoId); + Notify(evento); - evento.Confirmar(); + _eventosRepository.Save(evento); + + return new Resultado(true); + } - Notify(evento); + public Resultado Confirmar(Guid eventoId) + { + Evento evento = GetEvento(eventoId); - _eventosRepository.Save(evento); + evento.Confirmar(); - return new Resultado(true); - } + Notify(evento); - public Resultado Publicar(Guid eventoId, short numeroOrden, string urlWiki) - { - Evento evento = GetEvento(eventoId); + _eventosRepository.Save(evento); - evento.Publicar(numeroOrden, urlWiki); + return new Resultado(true); + } - Notify(evento); + public Resultado Publicar(Guid eventoId, short numeroOrden, string urlWiki) + { + Evento evento = GetEvento(eventoId); - _eventosRepository.Save(evento); - - return new Resultado(true); - } + evento.Publicar(numeroOrden, urlWiki); - private void Notify(Evento evento) - { - var tracks = evento.GetTrackNews(); - if (_publicador != null) - _publicador.Publicar(tracks); - } + Notify(evento); + + _eventosRepository.Save(evento); + + return new Resultado(true); + } - public void RegistrarPonente(string nombre, string mail, string twitter, string blog) - { - var ponente = new Persona(nombre, mail, twitter, blog); - _personaRepository.Save(ponente); - } + private void Notify(Evento evento) + { + var tracks = evento.GetTrackNews(); + if (_publicador != null) + _publicador.Publicar(tracks); + } - private Persona GetPonente(string nombre) - { - Persona persona = _personaRepository.GetByNombre(nombre) ?? new Persona(nombre); - _personaRepository.Save(persona); - return persona; - } + public void RegistrarPonente(string nombre, string mail, string twitter, string blog) + { + var ponente = new Persona(nombre, mail, twitter, blog); + _personaRepository.Save(ponente); + } public Resultado Cancelar(Guid eventoId) - { + { Evento evento = GetEvento(eventoId); evento.Cancelar(); @@ -169,10 +160,10 @@ _eventosRepository.Save(evento); return new Resultado(true); - } + } - public Resultado Descartar(Guid eventoId) - { + public Resultado Descartar(Guid eventoId) + { Evento evento = GetEvento(eventoId); evento.Descartar(); @@ -182,10 +173,10 @@ _eventosRepository.Save(evento); return new Resultado(true); - } + } - public Resultado ReProponer(Guid eventoId) - { + public Resultado ReProponer(Guid eventoId) + { Evento evento = GetEvento(eventoId); evento.ReProponer(); @@ -195,10 +186,10 @@ _eventosRepository.Save(evento); return new Resultado(true); - } + } - public Resultado ReAgendar(Guid eventoId) - { + public Resultado ReAgendar(Guid eventoId) + { Evento evento = GetEvento(eventoId); evento.ReAgendar(); @@ -208,35 +199,35 @@ _eventosRepository.Save(evento); return new Resultado(true); - } + } - public void IndicarPatrocinadores(Guid eventoId, Guid[] patrocinadores) - { - var evento = GetEvento(eventoId); + public void IndicarPatrocinadores(Guid eventoId, IEnumerable<Guid> patrocinadores) + { + var evento = GetEvento(eventoId); - var agregar = new List<Patrocinador>(); - var quitar = new List<Patrocinador>(); + var agregar = new List<Patrocinador>(); + var quitar = new List<Patrocinador>(); - foreach (var patrocinadorId in patrocinadores) - { - if (!evento.Patrocinadores.Any(p => p.Id == patrocinadorId)) - { - var patrocinador = _patrocinadorRepository.Get(patrocinadorId); - agregar.Add(patrocinador); - } - } + foreach (var patrocinadorId in patrocinadores) + { + if (!evento.Patrocinadores.Any(p => p.Id == patrocinadorId)) + { + var patrocinador = _patrocinadorRepository.Get(patrocinadorId); + agregar.Add(patrocinador); + } + } - foreach (var patrocinador in evento.Patrocinadores) - { - if (!patrocinadores.Any(p => p == patrocinador.Id)) - quitar.Add(patrocinador); - } + foreach (var patrocinador in evento.Patrocinadores) + { + if (!patrocinadores.Any(p => p == patrocinador.Id)) + quitar.Add(patrocinador); + } - foreach (var patrocinador in agregar) - evento.AddPatrocinador(patrocinador); + foreach (var patrocinador in agregar) + evento.AddPatrocinador(patrocinador); - foreach (var patrocinador in quitar) - evento.RemovePatrocinador(patrocinador); - } - } + foreach (var patrocinador in quitar) + evento.RemovePatrocinador(patrocinador); + } + } } \ No newline at end of file