Mercurial > altnet-hispano
view Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 14:ed6d842abf42
Modificar evento
author | nelo@MTEySS.neluz.int |
---|---|
date | Sun, 13 Mar 2011 20:49:15 -0300 |
parents | 05996fa19e04 |
children | 08b9e96132a5 |
line wrap: on
line source
using System; using System.Collections.Generic; using System.Linq; using AltNetHispano.Agendas.Domain.Exceptions; namespace AltNetHispano.Agendas.Domain { public class Agenda { private readonly IList<Evento> _eventosPropuestos; private readonly IList<Evento> _eventosPublicados; private readonly IPublicador _publicador; private readonly IRecordador _recordador; private readonly ISeguridad _seguridad; public Agenda(IPublicador publicador, IRecordador recordador, ISeguridad seguridad) { _publicador = publicador; _recordador = recordador; _seguridad = seguridad; _eventosPropuestos = new List<Evento>(); _eventosPublicados = new List<Evento>(); } public Guid Id { get; set; } public void Publicar(string titulo, string ponente, DateTime? fecha) { var evento = new Evento{Titulo=titulo, Ponente = ponente, Fecha = fecha}; if (!evento.Fecha.HasValue) throw new ValidationException(); if (_publicador != null) _publicador.Publicar(evento); if (NoEstaAutenticado(_seguridad)) throw new UsuarioNoAutenticadoException(); if (string.IsNullOrWhiteSpace(evento.Ponente)) throw new ValidationException(); //TODO: persistir el evento! if (evento.Id==Guid.Empty) evento.Id = Guid.NewGuid(); _eventosPublicados.Add(evento); } public void Recordar(Evento evento) { if (_recordador != null) _recordador.Recordar(evento); } public void Proponer(Evento evento) { if (string.IsNullOrWhiteSpace(evento.Titulo)) throw new ValidationException(); if (NoEstaAutenticado(_seguridad)) throw new ValidationException(); _eventosPropuestos.Add(evento); } public IList<Evento> GetEventosPropuestos() { return _eventosPropuestos; } public IList<Evento> GetEventosPublicados() { return _eventosPublicados; } private static bool NoEstaAutenticado(ISeguridad seguridad) { return seguridad == null || seguridad.GetPrincipal() == null || seguridad.GetPrincipal().Identity == null || string.IsNullOrWhiteSpace(seguridad.GetPrincipal().Identity.Name); } public void ModificarEvento(Guid id, string titulo, string ponente, DateTime? fecha) { var evento = _eventosPublicados.SingleOrDefault(e => e.Id == id); if (evento == null) throw new EventoNotFoundException(); evento.Titulo = titulo; evento.Ponente = ponente; evento.Fecha = fecha; } public Evento GetEventoPublicado(Guid id) { return _eventosPublicados.SingleOrDefault(e => e.Id == id); } } public class EventoNotFoundException : Exception { } public class UsuarioNoAutenticadoException : Exception { } }