Mercurial > altnet-hispano
comparison Agendas/trunk/src/Agendas.Domain/Evento.cs @ 74:bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
(https://www.assembla.com/spaces/altnet-hispano/wiki/Estados_de_un_evento)
author | nelopauselli |
---|---|
date | Mon, 23 May 2011 20:13:37 -0300 |
parents | 76567a0d1e44 |
children | 96d7609f2e08 |
comparison
equal
deleted
inserted
replaced
73:76567a0d1e44 | 74:bc46e7426c80 |
---|---|
3 | 3 |
4 namespace AltNetHispano.Agendas.Domain | 4 namespace AltNetHispano.Agendas.Domain |
5 { | 5 { |
6 public class Evento : Identificable | 6 public class Evento : Identificable |
7 { | 7 { |
8 private readonly IList<Track> _tracks; | |
9 private IList<string> _enlaces; | |
10 | |
11 public static Evento Proponer(string titulo, Ponente ponente) | |
12 { | |
13 var evento = new Evento { Titulo = titulo, Ponente = ponente }; | |
14 evento.AddTracks(new Track(Accion.Proponer)); | |
15 | |
16 return evento; | |
17 } | |
18 | |
19 public static Evento Publicar(string titulo, Ponente ponente, DateTime fecha, string urlInvitacion) | |
20 { | |
21 var evento = new Evento { Titulo = titulo }; | |
22 evento.Publicar(ponente, fecha, urlInvitacion); | |
23 | |
24 return evento; | |
25 } | |
26 | |
27 protected Evento() | 8 protected Evento() |
28 { | 9 { |
29 _enlaces = new List<string>(); | |
30 _tracks = new List<Track>(); | 10 _tracks = new List<Track>(); |
31 } | 11 } |
32 | 12 |
13 #region Propiedades del Evento | |
14 | |
15 private readonly IList<Track> _tracks; | |
16 private Ponente _ponente; | |
17 | |
18 /// <summary> | |
19 /// Título del evento | |
20 /// </summary> | |
33 public virtual string Titulo { get; private set; } | 21 public virtual string Titulo { get; private set; } |
22 | |
23 /// <summary> | |
24 /// Fecha para la que se encuentra agendado el evento | |
25 /// </summary> | |
34 public virtual DateTime? Fecha { get; private set; } | 26 public virtual DateTime? Fecha { get; private set; } |
35 | 27 |
36 /// <summary> | 28 /// <summary> |
37 /// Url con la invitacion realizada por el ponente (en la mayoria de los casos va a ser un link al thread de la lista de correo) | 29 /// Url con la invitacion realizada por el ponente (en la mayoria de los casos va a ser un link al thread de la lista de correo) |
38 /// </summary> | 30 /// </summary> |
46 /// <summary> | 38 /// <summary> |
47 /// Numero de orden en el historico de reuniones virtuales | 39 /// Numero de orden en el historico de reuniones virtuales |
48 /// </summary> | 40 /// </summary> |
49 public virtual short NumeroOrden { get; private set; } | 41 public virtual short NumeroOrden { get; private set; } |
50 | 42 |
51 private Ponente _ponente; | 43 /// <summary> |
44 /// Ponente o responsable del evento | |
45 /// </summary> | |
52 public virtual Ponente Ponente | 46 public virtual Ponente Ponente |
53 { | 47 { |
54 get { return _ponente; } | 48 get { return _ponente; } |
55 private set | 49 private set |
56 { | 50 { |
60 value.AddEvento(this); | 54 value.AddEvento(this); |
61 _ponente = value; | 55 _ponente = value; |
62 } | 56 } |
63 } | 57 } |
64 | 58 |
59 /// <summary> | |
60 /// Track de cambios que ha sufrido el evento | |
61 /// </summary> | |
65 public virtual IEnumerable<Track> Tracks | 62 public virtual IEnumerable<Track> Tracks |
66 { | 63 { |
67 get { return _tracks; } | 64 get { return _tracks; } |
65 } | |
66 | |
67 #endregion | |
68 | |
69 #region Acciones sobre el evento | |
70 | |
71 /// <summary> | |
72 /// Propone un evento | |
73 /// </summary> | |
74 /// <param name="titulo">Título del evento propuesto</param> | |
75 /// <param name="ponente">Ponente para evento propuesto</param> | |
76 /// <returns></returns> | |
77 public static Evento Proponer(string titulo, Ponente ponente) | |
78 { | |
79 var evento = new Evento { Titulo = titulo, Ponente = ponente }; | |
80 evento.AddTracks(new Track(Accion.Proponer)); | |
81 | |
82 return evento; | |
83 } | |
84 | |
85 /// <summary> | |
86 /// Agenda un evento que no estaba propuesto | |
87 /// </summary> | |
88 /// <param name="titulo">Título del evento a agendar</param> | |
89 /// <param name="ponente">Ponente para el evento</param> | |
90 /// <param name="fecha">Fecha de realización del evento</param> | |
91 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> | |
92 /// <returns></returns> | |
93 public static Evento Agendar(string titulo, Ponente ponente, DateTime fecha, string urlInvitacion) | |
94 { | |
95 var evento = new Evento { Titulo = titulo }; | |
96 evento.Agendar(ponente, fecha, urlInvitacion); | |
97 | |
98 return evento; | |
99 } | |
100 | |
101 /// <summary> | |
102 /// Agenda el evento actual | |
103 /// </summary> | |
104 /// <param name="ponente">Ponente para el evento</param> | |
105 /// <param name="fecha">Fecha de realización del evento</param> | |
106 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> | |
107 public virtual void Agendar(Ponente ponente, DateTime? fecha, string urlInvitacion) | |
108 { | |
109 Ponente = ponente; | |
110 Fecha = fecha; | |
111 UrlInvitacion = urlInvitacion; | |
112 AddTracks(new Track(Accion.Agendar)); | |
68 } | 113 } |
69 | 114 |
70 public virtual void Actualizar(Ponente ponente, DateTime? fecha) | 115 public virtual void Actualizar(Ponente ponente, DateTime? fecha) |
71 { | 116 { |
72 Ponente = ponente; | 117 Ponente = ponente; |
79 { | 124 { |
80 Titulo = titulo; | 125 Titulo = titulo; |
81 AddTracks(new Track(Accion.CambiarTitulo)); | 126 AddTracks(new Track(Accion.CambiarTitulo)); |
82 } | 127 } |
83 | 128 |
84 public virtual void Publicar(Ponente ponente, DateTime? fecha, string urlInvitacion) | 129 #endregion |
85 { | |
86 Ponente = ponente; | |
87 Fecha = fecha; | |
88 UrlInvitacion = urlInvitacion; | |
89 AddTracks(new Track(Accion.Publicar)); | |
90 } | |
91 | 130 |
92 private void AddTracks(Track track) | 131 private void AddTracks(Track track) |
93 { | 132 { |
94 _tracks.Add(track); | 133 _tracks.Add(track); |
95 } | 134 } |