Mercurial > altnet-hispano
comparison Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 15:08b9e96132a5
Persistimos los eventos de la agenda
author | nelo@MTEySS.neluz.int |
---|---|
date | Mon, 14 Mar 2011 00:14:09 -0300 |
parents | ed6d842abf42 |
children | ed29ceb025a9 |
comparison
equal
deleted
inserted
replaced
14:ed6d842abf42 | 15:08b9e96132a5 |
---|---|
1 using System; | 1 using System; |
2 using System.Collections.Generic; | 2 using System.Collections.Generic; |
3 using System.Linq; | 3 using System.Linq; |
4 using AltNetHispano.Agendas.Domain.Exceptions; | 4 using AltNetHispano.Agendas.Domain.Exceptions; |
5 using AltNetHispano.Agendas.Domain.Repositories; | |
5 | 6 |
6 namespace AltNetHispano.Agendas.Domain | 7 namespace AltNetHispano.Agendas.Domain |
7 { | 8 { |
8 public class Agenda | 9 public class Agenda |
9 { | 10 { |
10 private readonly IList<Evento> _eventosPropuestos; | |
11 private readonly IList<Evento> _eventosPublicados; | |
12 private readonly IPublicador _publicador; | 11 private readonly IPublicador _publicador; |
13 private readonly IRecordador _recordador; | 12 private readonly IRecordador _recordador; |
14 private readonly ISeguridad _seguridad; | 13 private readonly ISeguridad _seguridad; |
14 private readonly IEventoRepository _eventosRepository; | |
15 | 15 |
16 public Agenda(IPublicador publicador, IRecordador recordador, ISeguridad seguridad) | 16 public Agenda(IPublicador publicador, IRecordador recordador, ISeguridad seguridad, IEventoRepository eventosRepository) |
17 { | 17 { |
18 _publicador = publicador; | 18 _publicador = publicador; |
19 _eventosRepository = eventosRepository; | |
19 _recordador = recordador; | 20 _recordador = recordador; |
20 _seguridad = seguridad; | 21 _seguridad = seguridad; |
21 _eventosPropuestos = new List<Evento>(); | |
22 _eventosPublicados = new List<Evento>(); | |
23 } | 22 } |
24 | 23 |
25 public Guid Id { get; set; } | 24 public Guid Id { get; set; } |
26 | 25 |
27 public void Publicar(string titulo, string ponente, DateTime? fecha) | 26 public void Publicar(string titulo, string ponente, DateTime? fecha) |
28 { | 27 { |
29 var evento = new Evento{Titulo=titulo, Ponente = ponente, Fecha = fecha}; | 28 var evento = new Evento{Titulo=titulo, Ponente = ponente, Fecha = fecha}; |
30 | 29 |
31 if (!evento.Fecha.HasValue) | 30 if (!evento.Fecha.HasValue) |
32 throw new ValidationException(); | 31 throw new ValidationException(); |
33 if (_publicador != null) | |
34 _publicador.Publicar(evento); | |
35 if (NoEstaAutenticado(_seguridad)) | 32 if (NoEstaAutenticado(_seguridad)) |
36 throw new UsuarioNoAutenticadoException(); | 33 throw new UsuarioNoAutenticadoException(); |
37 if (string.IsNullOrWhiteSpace(evento.Ponente)) | 34 if (string.IsNullOrWhiteSpace(evento.Ponente)) |
38 throw new ValidationException(); | 35 throw new ValidationException(); |
39 | 36 |
40 //TODO: persistir el evento! | 37 if (_publicador != null) |
41 if (evento.Id==Guid.Empty) evento.Id = Guid.NewGuid(); | 38 _publicador.Publicar(evento); |
42 | 39 _eventosRepository.Save(evento); |
43 _eventosPublicados.Add(evento); | |
44 } | 40 } |
45 | 41 |
46 public void Recordar(Evento evento) | 42 public void Recordar(Evento evento) |
47 { | 43 { |
48 if (_recordador != null) | 44 if (_recordador != null) |
53 { | 49 { |
54 if (string.IsNullOrWhiteSpace(evento.Titulo)) | 50 if (string.IsNullOrWhiteSpace(evento.Titulo)) |
55 throw new ValidationException(); | 51 throw new ValidationException(); |
56 if (NoEstaAutenticado(_seguridad)) | 52 if (NoEstaAutenticado(_seguridad)) |
57 throw new ValidationException(); | 53 throw new ValidationException(); |
58 _eventosPropuestos.Add(evento); | 54 _eventosRepository.Save(evento); |
59 } | 55 } |
60 | 56 |
61 public IList<Evento> GetEventosPropuestos() | 57 public IList<Evento> GetEventosPropuestos() |
62 { | 58 { |
63 return _eventosPropuestos; | 59 return _eventosRepository.GetEventosSinFecha() ?? new List<Evento>(); |
64 } | 60 } |
65 | 61 |
66 public IList<Evento> GetEventosPublicados() | 62 public IList<Evento> GetEventosPublicados() |
67 { | 63 { |
68 return _eventosPublicados; | 64 return _eventosRepository.GetEventosConFecha() ?? new List<Evento>(); |
69 } | 65 } |
70 | 66 |
71 private static bool NoEstaAutenticado(ISeguridad seguridad) { | 67 private static bool NoEstaAutenticado(ISeguridad seguridad) |
68 { | |
69 return false; | |
72 return seguridad == null || seguridad.GetPrincipal() == null || seguridad.GetPrincipal().Identity == null | 70 return seguridad == null || seguridad.GetPrincipal() == null || seguridad.GetPrincipal().Identity == null |
73 || string.IsNullOrWhiteSpace(seguridad.GetPrincipal().Identity.Name); | 71 || string.IsNullOrWhiteSpace(seguridad.GetPrincipal().Identity.Name); |
74 } | 72 } |
75 | 73 |
76 public void ModificarEvento(Guid id, string titulo, string ponente, DateTime? fecha) | 74 public void ModificarEvento(Guid id, string titulo, string ponente, DateTime? fecha) |
77 { | 75 { |
78 var evento = _eventosPublicados.SingleOrDefault(e => e.Id == id); | 76 var evento = _eventosRepository.Get(id); |
79 if (evento == null) | 77 if (evento == null) |
80 throw new EventoNotFoundException(); | 78 throw new EventoNotFoundException(); |
81 evento.Titulo = titulo; | 79 evento.Titulo = titulo; |
82 evento.Ponente = ponente; | 80 evento.Ponente = ponente; |
83 evento.Fecha = fecha; | 81 evento.Fecha = fecha; |
84 } | 82 } |
85 | 83 |
86 public Evento GetEventoPublicado(Guid id) | 84 public Evento GetEventoPublicado(Guid id) |
87 { | 85 { |
88 return _eventosPublicados.SingleOrDefault(e => e.Id == id); | 86 return _eventosRepository.Get(id); |
89 } | 87 } |
90 } | 88 } |
91 | 89 |
92 public class EventoNotFoundException : Exception | 90 public class EventoNotFoundException : Exception |
93 { | 91 { |