annotate Agendas/trunk/src/Agendas.Domain/EventoPropuestoState.cs @ 146:3ca9fb66d397

Habilitando la modificación de eventos propuestos o agendados
author Nelo@Guinea.neluz.int
date Mon, 01 Aug 2011 11:42:50 -0300
parents 3639803112c6
children
rev   line source
116
53bcd338542b acciones de confirmar y publicar desde la UI
Nelo@Kenia.neluz.int
parents: 104
diff changeset
1 using System;
53bcd338542b acciones de confirmar y publicar desde la UI
Nelo@Kenia.neluz.int
parents: 104
diff changeset
2 using AltNetHispano.Agendas.Domain.Exceptions;
101
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents:
diff changeset
3
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents:
diff changeset
4 namespace AltNetHispano.Agendas.Domain
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents:
diff changeset
5 {
140
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
6 public class EventoPropuestoState : EventoState
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
7 {
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
8 protected EventoPropuestoState()
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
9 {
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
10 }
104
c5034884c7d7 refactor para que los estados sean singletons
jorge.rowies
parents: 103
diff changeset
11
140
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
12 private static readonly EventoState _instance = new EventoPropuestoState();
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
13 public static EventoState GetInstance()
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
14 {
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
15 return _instance;
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
16 }
101
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents:
diff changeset
17
140
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
18 public override void Promover(Evento evento, Accion accion)
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
19 {
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
20 switch (accion)
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
21 {
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
22 case Accion.Agendar:
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
23 evento.Estado = EventoAgendadoState.GetInstance();
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
24 evento.AddTrack(new Track(evento, Accion.Agendar));
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
25 break;
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
26 case Accion.Descartar:
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
27 evento.Estado = EventoDescartadoState.GetInstance();
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
28 evento.AddTrack(new Track(evento, Accion.Descartar));
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
29 break;
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
30 default:
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
31 throw new AccionNoSoportadaException(this.GetType(), accion);
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
32 }
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
33 }
103
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
34
140
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
35 public override string Descripcion
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
36 {
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
37 get { return "Propuesto"; }
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
38 }
116
53bcd338542b acciones de confirmar y publicar desde la UI
Nelo@Kenia.neluz.int
parents: 104
diff changeset
39
140
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
40 public override bool PuedePromover(Accion accion)
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
41 {
146
3ca9fb66d397 Habilitando la modificación de eventos propuestos o agendados
Nelo@Guinea.neluz.int
parents: 140
diff changeset
42 return accion == Accion.Agendar || accion == Accion.Descartar || accion==Accion.Modificar;
140
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
43 }
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 133
diff changeset
44 }
101
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents:
diff changeset
45 }