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