Mercurial > altnet-hispano
annotate 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 |
rev | line source |
---|---|
1 | 1 using System; |
2 | 2 using System.Collections.Generic; |
14 | 3 using System.Linq; |
4 | 4 using AltNetHispano.Agendas.Domain.Exceptions; |
15 | 5 using AltNetHispano.Agendas.Domain.Repositories; |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
6 |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
7 namespace AltNetHispano.Agendas.Domain |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
8 { |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
9 public class Agenda |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
10 { |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
11 private readonly IPublicador _publicador; |
1 | 12 private readonly IRecordador _recordador; |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
13 private readonly ISeguridad _seguridad; |
15 | 14 private readonly IEventoRepository _eventosRepository; |
2 | 15 |
15 | 16 public Agenda(IPublicador publicador, IRecordador recordador, ISeguridad seguridad, IEventoRepository eventosRepository) |
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; |
15 | 19 _eventosRepository = eventosRepository; |
1 | 20 _recordador = recordador; |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
21 _seguridad = seguridad; |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
22 } |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
23 |
3 | 24 public Guid Id { get; set; } |
25 | |
12 | 26 public void Publicar(string titulo, string ponente, DateTime? fecha) |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
27 { |
12 | 28 var evento = new Evento{Titulo=titulo, Ponente = ponente, Fecha = fecha}; |
29 | |
4 | 30 if (!evento.Fecha.HasValue) |
31 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
|
32 if (NoEstaAutenticado(_seguridad)) |
9d6b28a696d1
corrección en método que verifica la autenticación del usuario
nelo@MTEySS.neluz.int
parents:
9
diff
changeset
|
33 throw new UsuarioNoAutenticadoException(); |
12 | 34 if (string.IsNullOrWhiteSpace(evento.Ponente)) |
35 throw new ValidationException(); | |
1 | 36 |
15 | 37 if (_publicador != null) |
38 _publicador.Publicar(evento); | |
39 _eventosRepository.Save(evento); | |
4 | 40 } |
41 | |
1 | 42 public void Recordar(Evento evento) |
43 { | |
44 if (_recordador != null) | |
45 _recordador.Recordar(evento); | |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
46 } |
4 | 47 |
12 | 48 public void Proponer(Evento evento) |
4 | 49 { |
12 | 50 if (string.IsNullOrWhiteSpace(evento.Titulo)) |
4 | 51 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
|
52 if (NoEstaAutenticado(_seguridad)) |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
53 throw new ValidationException(); |
15 | 54 _eventosRepository.Save(evento); |
4 | 55 } |
56 | |
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
|
57 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
|
58 { |
15 | 59 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
|
60 } |
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
|
61 |
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
|
62 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
|
63 { |
15 | 64 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
|
65 } |
9
c90492faf268
Se implementa seguridad a través del constructor y no como parámetro
juanjose.montesdeocaarbos
parents:
8
diff
changeset
|
66 |
15 | 67 private static bool NoEstaAutenticado(ISeguridad seguridad) |
68 { | |
69 return false; | |
11
9d6b28a696d1
corrección en método que verifica la autenticación del usuario
nelo@MTEySS.neluz.int
parents:
9
diff
changeset
|
70 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
|
71 || 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
|
72 } |
14 | 73 |
74 public void ModificarEvento(Guid id, string titulo, string ponente, DateTime? fecha) | |
75 { | |
15 | 76 var evento = _eventosRepository.Get(id); |
14 | 77 if (evento == null) |
78 throw new EventoNotFoundException(); | |
79 evento.Titulo = titulo; | |
80 evento.Ponente = ponente; | |
81 evento.Fecha = fecha; | |
82 } | |
11
9d6b28a696d1
corrección en método que verifica la autenticación del usuario
nelo@MTEySS.neluz.int
parents:
9
diff
changeset
|
83 |
14 | 84 public Evento GetEventoPublicado(Guid id) |
85 { | |
15 | 86 return _eventosRepository.Get(id); |
14 | 87 } |
88 } | |
89 | |
90 public class EventoNotFoundException : Exception | |
91 { | |
92 } | |
93 | |
94 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
|
95 { |
9d6b28a696d1
corrección en método que verifica la autenticación del usuario
nelo@MTEySS.neluz.int
parents:
9
diff
changeset
|
96 } |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
97 } |