annotate Agendas/trunk/src/Agendas.Web/Controllers/EventoController.cs @ 279:1e889a2e45c5

#125: ABM de patrocinadores.
author juanjose.montesdeocaarbos
date Thu, 22 Dec 2011 10:04:08 -0300
parents c61954d24c8c
children 79942e030118
rev   line source
25
e8d2be47a6b0 Cambios de nombre en Portal.Web (Agenda x Evento)
nelo@MTEySS.neluz.int
parents:
diff changeset
1 using System;
e8d2be47a6b0 Cambios de nombre en Portal.Web (Agenda x Evento)
nelo@MTEySS.neluz.int
parents:
diff changeset
2 using System.Linq;
e8d2be47a6b0 Cambios de nombre en Portal.Web (Agenda x Evento)
nelo@MTEySS.neluz.int
parents:
diff changeset
3 using System.Web.Mvc;
106
80c22175c9b5 agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents: 97
diff changeset
4 using AltNetHispano.Agendas.Domain;
34
475be11edf56 Ajuste en los nombre de los assemblies y namespaces
nelo@MTEySS.neluz.int
parents: 27
diff changeset
5 using AltNetHispano.Agendas.Factories;
217
c4c60e034103 sugerencia de recordatorios
nelopauselli
parents: 212
diff changeset
6 using AltNetHispano.Agendas.Twitter;
34
475be11edf56 Ajuste en los nombre de los assemblies y namespaces
nelo@MTEySS.neluz.int
parents: 27
diff changeset
7 using AltNetHispano.Agendas.Web.Models;
25
e8d2be47a6b0 Cambios de nombre en Portal.Web (Agenda x Evento)
nelo@MTEySS.neluz.int
parents:
diff changeset
8
34
475be11edf56 Ajuste en los nombre de los assemblies y namespaces
nelo@MTEySS.neluz.int
parents: 27
diff changeset
9 namespace AltNetHispano.Agendas.Web.Controllers
25
e8d2be47a6b0 Cambios de nombre en Portal.Web (Agenda x Evento)
nelo@MTEySS.neluz.int
parents:
diff changeset
10 {
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents: 141
diff changeset
11 public class EventoController : Controller
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
12 {
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
13 public ActionResult Index()
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
14 {
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
15 var agenda = AgendaFactory.GetAgenda();
106
80c22175c9b5 agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents: 97
diff changeset
16
185
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
17 var model = new EventoIndexModel
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
18 {
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
19 ProximosEventos = from e in agenda.GetEventosActivos()
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
20 orderby e.FechaInicio
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
21 select new EventoDto
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
22 {
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
23 Id = e.Id.ToString(),
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
24 Titulo = e.Titulo,
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
25 Fecha =
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
26 e.FechaInicio.HasValue
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
27 ? e.FechaInicio.Value.ToShortDateString() + " " +
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
28 e.FechaInicio.Value.ToShortTimeString()
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
29 : string.Empty,
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
30 Duracion =
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
31 e.FechaInicio.HasValue && e.FechaTermino.HasValue
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
32 ? e.FechaTermino.Value.Subtract(e.FechaInicio.Value).
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
33 ToString("c")
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
34 : string.Empty,
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
35 Estado = e.Estado.Descripcion,
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
36 PuedeAgendar = e.Estado.PuedePromover(Accion.Agendar),
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
37 PuedeModificar = e.Estado.PuedePromover(Accion.Modificar),
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
38 PuedeConfirmar = e.Estado.PuedePromover(Accion.Confirmar),
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
39 PuedePublicar = e.Estado.PuedePromover(Accion.Publicar),
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
40 PuedeCancelar = e.Estado.PuedePromover(Accion.Cancelar),
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
41 PuedeDescartar = e.Estado.PuedePromover(Accion.Descartar),
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
42 PuedeReAgendar = e.Estado.PuedePromover(Accion.ReAgendar),
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
43 PuedeReProponer = e.Estado.PuedePromover(Accion.ReProponer)
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
44 }
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
45 };
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
46 return View(model);
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
47 }
25
e8d2be47a6b0 Cambios de nombre en Portal.Web (Agenda x Evento)
nelo@MTEySS.neluz.int
parents:
diff changeset
48
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
49 [CustomAuthorize(Roles = Roles.Administrador)]
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
50 public ActionResult Nuevo()
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
51 {
185
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
52 var model = new EventoNewModel { Fecha = DateTime.Now, Duracion = new TimeSpan(2, 0, 0), Hora = new TimeSpan(18, 0, 0) };
155
23aaf98b8377 Generalizando editores en EditorDefault basando los textos en recursos
Nelo@Guinea.neluz.int
parents: 145
diff changeset
53 return View("Defaulteditor", model);
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
54 }
25
e8d2be47a6b0 Cambios de nombre en Portal.Web (Agenda x Evento)
nelo@MTEySS.neluz.int
parents:
diff changeset
55
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
56 [HttpPost]
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
57 [CustomAuthorize(Roles = Roles.Administrador)]
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
58 public ActionResult Nuevo(EventoNewModel model)
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
59 {
185
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
60 return
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
61 GenericAction(
235
c61954d24c8c Quitando ponente principal y utilizando siempre la lista de ponentes
nelopauselli
parents: 225
diff changeset
62 (agenda, m) => agenda.Agendar(m.Titulo, model.Ponentes, GenerarFechaInicio(m.Fecha, m.Hora),
185
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
63 GenerarFechaTermino(m.Fecha, m.Hora, m.Duracion), m.UrlInvitacion,
235
c61954d24c8c Quitando ponente principal y utilizando siempre la lista de ponentes
nelopauselli
parents: 225
diff changeset
64 (TipoEvento) m.TipoEvento),
185
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
65 m => View("Defaulteditor", m),
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
66 model);
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
67 }
25
e8d2be47a6b0 Cambios de nombre en Portal.Web (Agenda x Evento)
nelo@MTEySS.neluz.int
parents:
diff changeset
68
183
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
69 [CustomAuthorize(Roles = Roles.Administrador)]
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
70 public ActionResult Confirmar(string id)
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
71 {
212
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
72 var agenda = AgendaFactory.GetAgenda();
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
73 var evento = agenda.GetEvento(new Guid(id));
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
74
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
75 var model = new EventoConfirmModel
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
76 {
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
77 Id = id,
217
c4c60e034103 sugerencia de recordatorios
nelopauselli
parents: 212
diff changeset
78 Titulo = evento.Titulo,
c4c60e034103 sugerencia de recordatorios
nelopauselli
parents: 212
diff changeset
79 Recordatorios = new Recordatorios(evento)
212
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
80 };
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
81 return View("Defaulteditor", model);
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
82 }
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
83
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
84 [HttpPost]
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
85 [CustomAuthorize(Roles = Roles.Administrador)]
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
86 public ActionResult Confirmar(EventoConfirmModel model)
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
87 {
183
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
88 return
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
89 GenericAction(
212
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
90 (agenda, m) => agenda.Confirmar(new Guid(m.Id)),
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
91 m => View("Defaulteditor", m),
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
92 model);
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
93 }
116
53bcd338542b acciones de confirmar y publicar desde la UI
Nelo@Kenia.neluz.int
parents: 106
diff changeset
94
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
95 [CustomAuthorize(Roles = Roles.Administrador)]
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
96 public ActionResult Publicar(string id)
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
97 {
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
98 var agenda = AgendaFactory.GetAgenda();
162
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
99 var evento = agenda.GetEvento(new Guid(id));
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
100
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
101 var model = new EventoPublicarModel
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
102 {
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
103 Id = id,
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
104 Titulo = evento.Titulo,
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
105 NroOrden = 0, //TODO: Obtener el último y sumarle uno.
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
106 UrlWiki = evento.UrlWiki,
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
107 DuracionReal = new TimeSpan(0, 0, 0)
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
108 };
166
fae2feae499e Usando DefaultEditor para Publicar
nelopauselli
parents: 162
diff changeset
109 return View("Defaulteditor", model);
162
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
110 }
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
111
162
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
112 [HttpPost]
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
113 [CustomAuthorize(Roles = Roles.Administrador)]
162
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
114 public ActionResult Publicar(EventoPublicarModel model)
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
115 {
183
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
116 return
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
117 GenericAction(
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
118 (agenda, m) => agenda.Publicar(new Guid(m.Id), m.NroOrden, m.UrlWiki, m.DuracionReal),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
119 m => View("Defaulteditor", m),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
120 model);
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
121 }
116
53bcd338542b acciones de confirmar y publicar desde la UI
Nelo@Kenia.neluz.int
parents: 106
diff changeset
122
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
123 [CustomAuthorize(Roles = Roles.Administrador)]
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
124 public ActionResult Modificar(string id)
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
125 {
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
126 var agenda = AgendaFactory.GetAgenda();
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
127 var evento = agenda.GetEvento(new Guid(id));
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
128
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
129 var model = new EventoEditModel
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
130 {
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
131 Id = id,
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
132 Titulo = evento.Titulo,
235
c61954d24c8c Quitando ponente principal y utilizando siempre la lista de ponentes
nelopauselli
parents: 225
diff changeset
133 Ponentes = evento.Ponentes.Select(p=>p.Id),
185
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
134 Fecha = evento.FechaInicio,
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
135 Hora = evento.FechaInicio != null ? evento.FechaInicio.Value.TimeOfDay : (TimeSpan?)null,
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
136 Duracion = evento.FechaInicio!=null && evento.FechaTermino!=null ? evento.FechaTermino.Value.Subtract(evento.FechaInicio.Value) : (TimeSpan?) null,
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
137 UrlInvitacion = evento.UrlInvitacion
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
138 };
155
23aaf98b8377 Generalizando editores en EditorDefault basando los textos en recursos
Nelo@Guinea.neluz.int
parents: 145
diff changeset
139 return View("Defaulteditor", model);
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
140 }
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
141
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
142 [HttpPost]
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
143 [CustomAuthorize(Roles = Roles.Administrador)]
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
144 public ActionResult Modificar(EventoEditModel model)
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
145 {
185
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
146 return
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
147 GenericAction(
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
148 (agenda, m) =>
235
c61954d24c8c Quitando ponente principal y utilizando siempre la lista de ponentes
nelopauselli
parents: 225
diff changeset
149 agenda.ModificarEvento(new Guid(m.Id), m.Titulo, m.Ponentes, GenerarFechaInicio(m.Fecha, m.Hora),
185
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
150 GenerarFechaTermino(m.Fecha, m.Hora, m.Duracion), m.UrlInvitacion),
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
151 m => View("Defaulteditor", m),
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
152 model);
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
153 }
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
154
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
155 [CustomAuthorize(Roles = Roles.Administrador)]
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
156 public ActionResult Agendar(string id)
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
157 {
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
158 var agenda = AgendaFactory.GetAgenda();
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
159 var evento = agenda.GetEvento(new Guid(id));
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
160
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
161 var model = new EventoAgendarModel
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
162 {
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
163 Id = id,
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
164 Titulo = evento.Titulo,
235
c61954d24c8c Quitando ponente principal y utilizando siempre la lista de ponentes
nelopauselli
parents: 225
diff changeset
165 Ponentes = evento.Ponentes.Select(p=>p.Id),
185
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
166 Fecha = evento.FechaInicio,
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
167 Hora = evento.FechaInicio != null ? evento.FechaInicio.Value.TimeOfDay : (TimeSpan?)null,
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
168 Duracion = evento.FechaInicio != null && evento.FechaTermino != null ? evento.FechaTermino.Value.Subtract(evento.FechaInicio.Value) : (TimeSpan?)null,
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
169 UrlInvitacion = evento.UrlInvitacion
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
170 };
155
23aaf98b8377 Generalizando editores en EditorDefault basando los textos en recursos
Nelo@Guinea.neluz.int
parents: 145
diff changeset
171 return View("Defaulteditor", model);
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
172 }
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
173
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
174 [HttpPost]
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
175 [CustomAuthorize(Roles = Roles.Administrador)]
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
176 public ActionResult Agendar(EventoAgendarModel model)
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
177 {
185
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
178 return
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
179 GenericAction(
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
180 (agenda, m) =>
235
c61954d24c8c Quitando ponente principal y utilizando siempre la lista de ponentes
nelopauselli
parents: 225
diff changeset
181 agenda.ModificarEvento(new Guid(m.Id), m.Titulo, m.Ponentes, GenerarFechaInicio(m.Fecha, m.Hora),
185
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
182 GenerarFechaTermino(m.Fecha, m.Hora, m.Duracion), m.UrlInvitacion),
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
183 m => View("Defaulteditor", m),
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
184 model);
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
185 }
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
186
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
187 [CustomAuthorize(Roles = Roles.Administrador)]
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
188 public ActionResult Proponer()
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
189 {
155
23aaf98b8377 Generalizando editores en EditorDefault basando los textos en recursos
Nelo@Guinea.neluz.int
parents: 145
diff changeset
190 var model = new PropuestaNewModel();
23aaf98b8377 Generalizando editores en EditorDefault basando los textos en recursos
Nelo@Guinea.neluz.int
parents: 145
diff changeset
191 return View("Defaulteditor", model);
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
192 }
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
193
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
194 [HttpPost]
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
195 [CustomAuthorize(Roles = Roles.Administrador)]
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
196 public ActionResult Proponer(PropuestaNewModel model)
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
197 {
183
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
198 return
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
199 GenericAction(
235
c61954d24c8c Quitando ponente principal y utilizando siempre la lista de ponentes
nelopauselli
parents: 225
diff changeset
200 (agenda, m) => agenda.Proponer(m.Titulo, m.Ponentes, m.UrlInvitacion, (TipoEvento)m.TipoEvento),
183
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
201 m => View("Defaulteditor", m),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
202 model);
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
203 }
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
204
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
205 [CustomAuthorize(Roles = Roles.Administrador)]
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
206 public ActionResult Cancelar(string id)
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
207 {
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
208 return
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
209 GenericAction(
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
210 (agenda, m) => agenda.Cancelar(m),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
211 m => View("Index", m),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
212 new Guid(id));
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
213 }
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
214
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
215 [CustomAuthorize(Roles = Roles.Administrador)]
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
216 public ActionResult Descartar(string id)
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
217 {
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
218 return
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
219 GenericAction(
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
220 (agenda, m) => agenda.Descartar(m),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
221 m => View("Index", m),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
222 new Guid(id));
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
223 }
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
224
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
225 [CustomAuthorize(Roles = Roles.Administrador)]
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
226 public ActionResult ReAgendar(string id)
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
227 {
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
228 return
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
229 GenericAction(
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
230 (agenda, m) => agenda.ReAgendar(m),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
231 m => View("Index", m),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
232 new Guid(id));
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
233 }
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
234
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
235 [CustomAuthorize(Roles = Roles.Administrador)]
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
236 public ActionResult ReProponer(string id)
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
237 {
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
238 return
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
239 GenericAction(
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
240 (agenda, m) => agenda.ReProponer(m),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
241 m => View("Index", m),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
242 new Guid(id));
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
243 }
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
244
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
245 private ActionResult GenericAction<TModel>(Func<Agenda, TModel, EventoResultado> action, Func<TModel, ActionResult> actionresultOnFail, TModel model)
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
246 {
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
247 if (ModelState.IsValid)
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
248 {
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
249 var agenda = AgendaFactory.GetAgenda();
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
250
183
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
251 var r = action.Invoke(agenda, model);
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
252 if (r.Succeful)
167
ea85bd893247 Ajustes menores de UI
nelopauselli
parents: 166
diff changeset
253 {
183
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
254 this.AddNotification(r.Message);
182
beeb48ddb44a Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents: 179
diff changeset
255 foreach (var log in r.Warnings)
beeb48ddb44a Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents: 179
diff changeset
256 this.AddWarning(log.WarningMessage);
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
257 return RedirectToAction("Index");
167
ea85bd893247 Ajustes menores de UI
nelopauselli
parents: 166
diff changeset
258 }
208
607384590bf8 Mejorando el mensaje de error que se muestra cuando hay un error de validación del lado del servidor
nelopauselli
parents: 185
diff changeset
259 ModelState.AddModelError(string.Empty, r.Message);
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
260 }
183
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
261 return actionresultOnFail.Invoke(model);
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
262 }
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
263
185
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
264 private DateTime? GenerarFechaInicio(DateTime? fecha, TimeSpan? hora)
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
265 {
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
266 return fecha.HasValue && hora.HasValue
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
267 ? new DateTime(fecha.Value.Year, fecha.Value.Month, fecha.Value.Day, hora.Value.Hours,
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
268 hora.Value.Minutes, hora.Value.Seconds, DateTimeKind.Utc)
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
269 : (DateTime?) null;
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
270 }
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
271 private DateTime? GenerarFechaTermino(DateTime? fecha, TimeSpan? hora, TimeSpan? duracion)
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
272 {
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
273 return fecha.HasValue && hora.HasValue && duracion.HasValue
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
274 ? new DateTime(fecha.Value.Year, fecha.Value.Month, fecha.Value.Day, hora.Value.Hours,
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
275 hora.Value.Minutes, hora.Value.Seconds, DateTimeKind.Utc).Add(duracion.Value)
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
276 : (DateTime?) null;
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
277 }
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
278
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
279 }
25
e8d2be47a6b0 Cambios de nombre en Portal.Web (Agenda x Evento)
nelo@MTEySS.neluz.int
parents:
diff changeset
280 }