Mercurial > altnet-hispano
annotate Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 26:71b02443450a
UI de Propuestas de VANs
author | nelo@MTEySS.neluz.int |
---|---|
date | Tue, 15 Mar 2011 08:45:00 -0300 |
parents | 41b283d27e3e |
children | 016b9b9b8d3a |
rev | line source |
---|---|
1 | 1 using System; |
2 | 2 using System.Collections.Generic; |
4 | 3 using AltNetHispano.Agendas.Domain.Exceptions; |
15 | 4 using AltNetHispano.Agendas.Domain.Repositories; |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
5 |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
6 namespace AltNetHispano.Agendas.Domain |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
7 { |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
8 public class Agenda |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
9 { |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
10 private readonly IPublicador _publicador; |
1 | 11 private readonly IRecordador _recordador; |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
12 private readonly ISeguridad _seguridad; |
15 | 13 private readonly IEventoRepository _eventosRepository; |
24 | 14 private readonly IPonenteRepository _ponenteRepository; |
2 | 15 |
24 | 16 public Agenda(IPublicador publicador, IRecordador recordador, ISeguridad seguridad, IEventoRepository eventosRepository, IPonenteRepository ponenteRepository) |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
17 { |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
18 _publicador = publicador; |
24 | 19 _ponenteRepository = ponenteRepository; |
15 | 20 _eventosRepository = eventosRepository; |
1 | 21 _recordador = recordador; |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
22 _seguridad = seguridad; |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
23 } |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
24 |
24 | 25 public void Publicar(string titulo, string ponenteNombre, DateTime? fecha) |
26 { | |
27 var ponente = GetPonente(ponenteNombre); | |
3 | 28 |
12 | 29 var evento = new Evento{Titulo=titulo, Ponente = ponente, Fecha = fecha}; |
30 | |
4 | 31 if (!evento.Fecha.HasValue) |
32 throw new ValidationException(); | |
11
9d6b28a696d1
corrección en método que verifica la autenticación del usuario
nelo@MTEySS.neluz.int
parents:
9
diff
changeset
|
33 if (NoEstaAutenticado(_seguridad)) |
9d6b28a696d1
corrección en método que verifica la autenticación del usuario
nelo@MTEySS.neluz.int
parents:
9
diff
changeset
|
34 throw new UsuarioNoAutenticadoException(); |
24 | 35 if (string.IsNullOrWhiteSpace(evento.Ponente.Nombre)) |
12 | 36 throw new ValidationException(); |
1 | 37 |
15 | 38 if (_publicador != null) |
39 _publicador.Publicar(evento); | |
40 _eventosRepository.Save(evento); | |
24 | 41 _ponenteRepository.Save(ponente); |
4 | 42 } |
43 | |
21
43360bf09b1a
unificando criterio de parámetros en Agenda
nelo@MTEySS.neluz.int
parents:
18
diff
changeset
|
44 public void Recordar(Guid eventoId) |
1 | 45 { |
21
43360bf09b1a
unificando criterio de parámetros en Agenda
nelo@MTEySS.neluz.int
parents:
18
diff
changeset
|
46 var evento = _eventosRepository.Get(eventoId); |
1 | 47 if (_recordador != null) |
48 _recordador.Recordar(evento); | |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
49 } |
4 | 50 |
26 | 51 public void Proponer(string titulo, string ponenteNombre) |
4 | 52 { |
26 | 53 var ponente = GetPonente(ponenteNombre); |
54 var evento = new Evento {Titulo = titulo, Ponente = ponente}; | |
21
43360bf09b1a
unificando criterio de parámetros en Agenda
nelo@MTEySS.neluz.int
parents:
18
diff
changeset
|
55 |
12 | 56 if (string.IsNullOrWhiteSpace(evento.Titulo)) |
4 | 57 throw new ValidationException(); |
11
9d6b28a696d1
corrección en método que verifica la autenticación del usuario
nelo@MTEySS.neluz.int
parents:
9
diff
changeset
|
58 if (NoEstaAutenticado(_seguridad)) |
18
8ed4a806ebe0
corrección de excepeción lanzada si no hay usuario autenticado al proponer un evento
nelo@MTEySS.neluz.int
parents:
16
diff
changeset
|
59 throw new UsuarioNoAutenticadoException(); |
15 | 60 _eventosRepository.Save(evento); |
26 | 61 _ponenteRepository.Save(ponente); |
4 | 62 } |
63 | |
6
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
64 public IList<Evento> GetEventosPropuestos() |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
65 { |
15 | 66 return _eventosRepository.GetEventosSinFecha() ?? new List<Evento>(); |
6
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
67 } |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
68 |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
69 public IList<Evento> GetEventosPublicados() |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
70 { |
15 | 71 return _eventosRepository.GetEventosConFecha() ?? new List<Evento>(); |
6
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
72 } |
9
c90492faf268
Se implementa seguridad a través del constructor y no como parámetro
juanjose.montesdeocaarbos
parents:
8
diff
changeset
|
73 |
15 | 74 private static bool NoEstaAutenticado(ISeguridad seguridad) |
75 { | |
11
9d6b28a696d1
corrección en método que verifica la autenticación del usuario
nelo@MTEySS.neluz.int
parents:
9
diff
changeset
|
76 return seguridad == null || seguridad.GetPrincipal() == null || seguridad.GetPrincipal().Identity == null |
9d6b28a696d1
corrección en método que verifica la autenticación del usuario
nelo@MTEySS.neluz.int
parents:
9
diff
changeset
|
77 || string.IsNullOrWhiteSpace(seguridad.GetPrincipal().Identity.Name); |
9
c90492faf268
Se implementa seguridad a través del constructor y no como parámetro
juanjose.montesdeocaarbos
parents:
8
diff
changeset
|
78 } |
14 | 79 |
24 | 80 public void ModificarEvento(Guid id, string titulo, string ponenteNombre, DateTime? fecha) |
14 | 81 { |
15 | 82 var evento = _eventosRepository.Get(id); |
14 | 83 if (evento == null) |
84 throw new EventoNotFoundException(); | |
24 | 85 |
86 var ponente = GetPonente(ponenteNombre); | |
87 | |
14 | 88 evento.Titulo = titulo; |
89 evento.Ponente = ponente; | |
90 evento.Fecha = fecha; | |
91 } | |
11
9d6b28a696d1
corrección en método que verifica la autenticación del usuario
nelo@MTEySS.neluz.int
parents:
9
diff
changeset
|
92 |
26 | 93 public Evento GetEvento(Guid id) |
14 | 94 { |
15 | 95 return _eventosRepository.Get(id); |
14 | 96 } |
24 | 97 |
98 public void RegistrarPonente(string nombre, string mail, string twitter, string blog) | |
99 { | |
100 var ponente = new Ponente {Nombre = nombre, Mail = mail, Twitter = twitter, Blog = blog}; | |
101 _ponenteRepository.Save(ponente); | |
102 } | |
103 | |
104 private Ponente GetPonente(string nombre) | |
105 { | |
106 return _ponenteRepository.GetByNombre(nombre) ?? new Ponente { Nombre = nombre }; | |
107 } | |
108 | |
26 | 109 public void ModificarPropuesta(Guid id, string titulo, string ponenteNombre) |
110 { | |
111 ModificarEvento(id, titulo, ponenteNombre, null); | |
112 } | |
14 | 113 } |
114 | |
115 public class EventoNotFoundException : Exception | |
116 { | |
117 } | |
118 | |
119 public class UsuarioNoAutenticadoException : Exception | |
11
9d6b28a696d1
corrección en método que verifica la autenticación del usuario
nelo@MTEySS.neluz.int
parents:
9
diff
changeset
|
120 { |
9d6b28a696d1
corrección en método que verifica la autenticación del usuario
nelo@MTEySS.neluz.int
parents:
9
diff
changeset
|
121 } |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
122 } |