Mercurial > altnet-hispano
diff Agendas/trunk/src/Agendas.Domain/Evento.cs @ 140:3639803112c6
Refactoring de la relación entre Evento y Estado
author | nelopauselli |
---|---|
date | Fri, 29 Jul 2011 16:30:53 -0300 |
parents | 18e5a78186e4 |
children | 5c94b052d838 |
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Evento.cs Thu Jul 28 10:16:09 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Evento.cs Fri Jul 29 16:30:53 2011 -0300 @@ -1,7 +1,5 @@ using System; -using System.Collections; using System.Collections.Generic; -using AltNetHispano.Agendas.Domain.Exceptions; namespace AltNetHispano.Agendas.Domain { @@ -56,63 +54,20 @@ get { return _tracks; } } + private EventoState _estado; + /// <summary> /// Estado del evento en formato string (para persistencia a DB) /// </summary> - public virtual string Estado + public virtual EventoState Estado { - get - { - if (_eventoState != null) - return _eventoState.GetDescripcion(); - - return string.Empty; - } - set - { - if (value != Estado) - { - if (EventoPropuestoState.GetInstance().GetDescripcion().Equals(value)) - _eventoState = EventoPropuestoState.GetInstance(); - else if (EventoAgendadoState.GetInstance().GetDescripcion().Equals(value)) - _eventoState = EventoAgendadoState.GetInstance(); - else if (EventoConfirmadoState.GetInstance().GetDescripcion().Equals(value)) - _eventoState = EventoConfirmadoState.GetInstance(); - else if (EventoPublicadoState.GetInstance().GetDescripcion().Equals(value)) - _eventoState = EventoPublicadoState.GetInstance(); - else if (EventoCanceladoState.GetInstance().GetDescripcion().Equals(value)) - _eventoState = EventoCanceladoState.GetInstance(); - else if (EventoDescartadoState.GetInstance().GetDescripcion().Equals(value)) - _eventoState = EventoDescartadoState.GetInstance(); - else - throw new InvalidStateException(value); - } - } + get { return _estado ?? EventoNullState.GetInstance(); } + set { _estado = value; } } - private EventoState _eventoState; + //private EventoState _eventoState; private IList<Patrocinador> _patrocinadores; - /// <summary> - /// Obtiene una instancia de la clase que representa el estado del evento - /// </summary> - public virtual EventoState GetEstado() - { - if (_eventoState == null) - SetEstado(EventoNullState.GetInstance()); - - return _eventoState; - } - - /// <summary> - /// Asigna la instancia de la clase que representa el estado del evento - /// </summary> - /// <param name="eventoState">Instancia que representa el estado</param> - public virtual void SetEstado(EventoState eventoState) - { - _eventoState = eventoState; - } - public virtual TipoEvento Tipo { get; private set; } public virtual IEnumerable<Patrocinador> Patrocinadores @@ -149,7 +104,7 @@ public static Evento Proponer(string titulo, Persona persona, string urlInvitacion, TipoEvento tipo) { var evento = new Evento { Titulo = titulo, Ponente = persona, UrlInvitacion = urlInvitacion, Tipo = tipo }; - evento.GetEstado().Promover(evento, Accion.Proponer); + evento.Estado.Promover(evento, Accion.Proponer); return evento; } @@ -182,7 +137,7 @@ Ponente = persona; Fecha = fecha; UrlInvitacion = urlInvitacion; - this.GetEstado().Promover(this, Accion.Agendar); + this.Estado.Promover(this, Accion.Agendar); } public virtual void Actualizar(Persona persona, DateTime? fecha, string urlInvitacion) @@ -202,34 +157,34 @@ public virtual void Confirmar() { - this.GetEstado().Promover(this, Accion.Confirmar); + this.Estado.Promover(this, Accion.Confirmar); } public virtual void Publicar(short numeroOrden, string urlWiki) { this.NumeroOrden = numeroOrden; this.UrlWiki = urlWiki; - this.GetEstado().Promover(this, Accion.Publicar); + this.Estado.Promover(this, Accion.Publicar); } public virtual void Cancelar() { - GetEstado().Promover(this, Accion.Cancelar); + Estado.Promover(this, Accion.Cancelar); } public virtual void Descartar() { - GetEstado().Promover(this, Accion.Descartar); + Estado.Promover(this, Accion.Descartar); } public virtual void ReProponer() { - GetEstado().Promover(this, Accion.ReProponer); + Estado.Promover(this, Accion.ReProponer); } public virtual void ReAgendar() { - GetEstado().Promover(this, Accion.ReAgendar); + Estado.Promover(this, Accion.ReAgendar); } #endregion