view Agendas/trunk/src/Agendas.Domain/EventoPropuestoState.cs @ 133:6f1041301797

Se agregan los estados Cancelado y Descartado con las acciones Cancelar, Reagendar, Descartar, Reproponer, según ticket 146. Falta solucionar problema con flujo, ver más información en el ticket de assembla. http://www.assembla.com/spaces/altnet-hispano/tickets/146-implementar-estado-descartar-y-cancelar-de-eventos
author alabra
date Sun, 10 Jul 2011 23:59:19 -0400
parents 53bcd338542b
children 3639803112c6
line wrap: on
line source

using System;
using AltNetHispano.Agendas.Domain.Exceptions;

namespace AltNetHispano.Agendas.Domain
{
  public class EventoPropuestoState : EventoState
  {
    private EventoPropuestoState()
    {
    }

    private static readonly EventoState _instance = new EventoPropuestoState();
    public static EventoState GetInstance()
    {
      return _instance;
    }

    private const string Descripcion = "Propuesto";

    public override void Promover(Evento evento, Accion accion)
    {
        switch (accion)
        {
            case Accion.Agendar:
                evento.SetEstado(EventoAgendadoState.GetInstance());
                evento.AddTrack(new Track(evento, Accion.Agendar));
                break;
            case Accion.Descartar:
                evento.SetEstado(EventoDescartadoState.GetInstance());
                evento.AddTrack(new Track(evento, Accion.Descartar));
                break;
            default:
                throw new AccionNoSoportadaException(this.GetType(), accion);
        }
    }

    public override string GetDescripcion()
    {
      return Descripcion;
    }

  	public override bool PuedePromover(Accion accion)
  	{
  		return accion == Accion.Agendar || accion == Accion.Descartar;
  	}
  }
}