annotate Agendas/trunk/src/Agendas.Web/Controllers/EventoController.cs @ 212:6944c54f834f

Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
author juanjose.montesdeocaarbos
date Fri, 26 Aug 2011 21:54:36 -0300
parents 607384590bf8
children c4c60e034103
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;
475be11edf56 Ajuste en los nombre de los assemblies y namespaces
nelo@MTEySS.neluz.int
parents: 27
diff changeset
6 using AltNetHispano.Agendas.Web.Models;
25
e8d2be47a6b0 Cambios de nombre en Portal.Web (Agenda x Evento)
nelo@MTEySS.neluz.int
parents:
diff changeset
7
34
475be11edf56 Ajuste en los nombre de los assemblies y namespaces
nelo@MTEySS.neluz.int
parents: 27
diff changeset
8 namespace AltNetHispano.Agendas.Web.Controllers
25
e8d2be47a6b0 Cambios de nombre en Portal.Web (Agenda x Evento)
nelo@MTEySS.neluz.int
parents:
diff changeset
9 {
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents: 141
diff changeset
10 public class EventoController : Controller
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
11 {
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
12 public ActionResult Index()
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
13 {
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
14 var agenda = AgendaFactory.GetAgenda();
106
80c22175c9b5 agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents: 97
diff changeset
15
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
16 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
17 {
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 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
19 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
20 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
21 {
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 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
23 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
24 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
25 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
26 ? 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
27 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
28 : 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
29 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
30 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
31 ? 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
32 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
33 : 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
34 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
35 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
36 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
37 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
38 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
39 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
40 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
41 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
42 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
43 }
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 };
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
45 return View(model);
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
46 }
25
e8d2be47a6b0 Cambios de nombre en Portal.Web (Agenda x Evento)
nelo@MTEySS.neluz.int
parents:
diff changeset
47
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
48 [CustomAuthorize(Roles = Roles.Administrador)]
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
49 public ActionResult Nuevo()
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
50 {
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
51 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
52 return View("Defaulteditor", model);
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
53 }
25
e8d2be47a6b0 Cambios de nombre en Portal.Web (Agenda x Evento)
nelo@MTEySS.neluz.int
parents:
diff changeset
54
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
55 [HttpPost]
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
56 [CustomAuthorize(Roles = Roles.Administrador)]
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
57 public ActionResult Nuevo(EventoNewModel model)
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
58 {
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
59 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
60 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
61 (agenda, m) => agenda.Agendar(m.Titulo, m.Ponente, GenerarFechaInicio(m.Fecha, m.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
62 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
63 (TipoEvento) m.TipoEvento),
2d02adb79322 Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents: 183
diff changeset
64 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
65 model);
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
66 }
25
e8d2be47a6b0 Cambios de nombre en Portal.Web (Agenda x Evento)
nelo@MTEySS.neluz.int
parents:
diff changeset
67
183
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
68 [CustomAuthorize(Roles = Roles.Administrador)]
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
69 public ActionResult Confirmar(string id)
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
70 {
212
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
71 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
72 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
73
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
74 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
75 {
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
76 Id = id,
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
77 Titulo = evento.Titulo/*,
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
78 Mensaje = "Recuerde agendar los eventos en http://twuffer.com/ u otro servicio similar."*/
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
79 };
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
80 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
81 }
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 [HttpPost]
6944c54f834f Ticket 175: Se cambia el mensaje por una pantalla de confirmación, que sugiere los textos.
juanjose.montesdeocaarbos
parents: 208
diff changeset
84 [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
85 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
86 {
183
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
87 return
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
88 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
89 (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
90 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
91 model);
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
92 }
116
53bcd338542b acciones de confirmar y publicar desde la UI
Nelo@Kenia.neluz.int
parents: 106
diff changeset
93
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
94 [CustomAuthorize(Roles = Roles.Administrador)]
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
95 public ActionResult Publicar(string id)
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
96 {
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
97 var agenda = AgendaFactory.GetAgenda();
162
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
98 var evento = agenda.GetEvento(new Guid(id));
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
99
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
100 var model = new EventoPublicarModel
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
101 {
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
102 Id = id,
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
103 Titulo = evento.Titulo,
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
104 NroOrden = 0, //TODO: Obtener el último y sumarle uno.
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
105 UrlWiki = evento.UrlWiki,
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
106 DuracionReal = new TimeSpan(0, 0, 0)
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
107 };
166
fae2feae499e Usando DefaultEditor para Publicar
nelopauselli
parents: 162
diff changeset
108 return View("Defaulteditor", model);
162
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
109 }
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
110
162
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
111 [HttpPost]
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
112 [CustomAuthorize(Roles = Roles.Administrador)]
162
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
113 public ActionResult Publicar(EventoPublicarModel model)
557c386fcecc Ticket 153: UI de Publicar.
juanjose.montesdeocaarbos
parents: 155
diff changeset
114 {
183
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
115 return
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
116 GenericAction(
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
117 (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
118 m => View("Defaulteditor", m),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
119 model);
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
120 }
116
53bcd338542b acciones de confirmar y publicar desde la UI
Nelo@Kenia.neluz.int
parents: 106
diff changeset
121
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
122 [CustomAuthorize(Roles = Roles.Administrador)]
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
123 public ActionResult Modificar(string id)
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
124 {
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
125 var agenda = AgendaFactory.GetAgenda();
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
126 var evento = agenda.GetEvento(new Guid(id));
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
127
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
128 var model = new EventoEditModel
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
129 {
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
130 Id = id,
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
131 Titulo = evento.Titulo,
145
e6e6bfb1da9e En la edición de un evento (nuevo, propuesta, modificación), el ponente se selecciona desde un combo.
Nelo@Guinea.neluz.int
parents: 144
diff changeset
132 Ponente = evento.Ponente != null ? evento.Ponente.Id : Guid.Empty,
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
133 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
134 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
135 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
136 UrlInvitacion = evento.UrlInvitacion
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
137 };
155
23aaf98b8377 Generalizando editores en EditorDefault basando los textos en recursos
Nelo@Guinea.neluz.int
parents: 145
diff changeset
138 return View("Defaulteditor", model);
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
139 }
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
140
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
141 [HttpPost]
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
142 [CustomAuthorize(Roles = Roles.Administrador)]
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
143 public ActionResult Modificar(EventoEditModel model)
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
144 {
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
145 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
146 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
147 (agenda, 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
148 agenda.ModificarEvento(new Guid(m.Id), m.Titulo, m.Ponente, GenerarFechaInicio(m.Fecha, m.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
149 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
150 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
151 model);
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
152 }
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
153
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
154 [CustomAuthorize(Roles = Roles.Administrador)]
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
155 public ActionResult Agendar(string id)
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
156 {
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
157 var agenda = AgendaFactory.GetAgenda();
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
158 var evento = agenda.GetEvento(new Guid(id));
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
159
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
160 var model = new EventoAgendarModel
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
161 {
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
162 Id = id,
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
163 Titulo = evento.Titulo,
145
e6e6bfb1da9e En la edición de un evento (nuevo, propuesta, modificación), el ponente se selecciona desde un combo.
Nelo@Guinea.neluz.int
parents: 144
diff changeset
164 Ponente = evento.Ponente != null ? evento.Ponente.Id : Guid.Empty,
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
165 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
166 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
167 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
168 UrlInvitacion = evento.UrlInvitacion
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
169 };
155
23aaf98b8377 Generalizando editores en EditorDefault basando los textos en recursos
Nelo@Guinea.neluz.int
parents: 145
diff changeset
170 return View("Defaulteditor", model);
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
171 }
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 [HttpPost]
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
174 [CustomAuthorize(Roles = Roles.Administrador)]
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
175 public ActionResult Agendar(EventoAgendarModel model)
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
176 {
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
177 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
178 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
179 (agenda, 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
180 agenda.ModificarEvento(new Guid(m.Id), m.Titulo, m.Ponente, GenerarFechaInicio(m.Fecha, m.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
181 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
182 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
183 model);
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
184 }
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
185
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
186 [CustomAuthorize(Roles = Roles.Administrador)]
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
187 public ActionResult Proponer()
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
188 {
155
23aaf98b8377 Generalizando editores en EditorDefault basando los textos en recursos
Nelo@Guinea.neluz.int
parents: 145
diff changeset
189 var model = new PropuestaNewModel();
23aaf98b8377 Generalizando editores en EditorDefault basando los textos en recursos
Nelo@Guinea.neluz.int
parents: 145
diff changeset
190 return View("Defaulteditor", model);
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
191 }
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 [HttpPost]
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
194 [CustomAuthorize(Roles = Roles.Administrador)]
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
195 public ActionResult Proponer(PropuestaNewModel model)
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
196 {
183
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
197 return
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
198 GenericAction(
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
199 (agenda, m) => agenda.Proponer(m.Titulo, m.Ponente, m.UrlInvitacion, (TipoEvento)m.TipoEvento),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
200 m => View("Defaulteditor", m),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
201 model);
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
202 }
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 [CustomAuthorize(Roles = Roles.Administrador)]
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
205 public ActionResult Cancelar(string id)
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
206 {
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
207 return
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
208 GenericAction(
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
209 (agenda, m) => agenda.Cancelar(m),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
210 m => View("Index", m),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
211 new Guid(id));
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
212 }
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 [CustomAuthorize(Roles = Roles.Administrador)]
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
215 public ActionResult Descartar(string id)
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
216 {
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
217 return
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
218 GenericAction(
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
219 (agenda, m) => agenda.Descartar(m),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
220 m => View("Index", m),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
221 new Guid(id));
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
222 }
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 [CustomAuthorize(Roles = Roles.Administrador)]
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
225 public ActionResult ReAgendar(string id)
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
226 {
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
227 return
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
228 GenericAction(
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
229 (agenda, m) => agenda.ReAgendar(m),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
230 m => View("Index", m),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
231 new Guid(id));
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
232 }
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 [CustomAuthorize(Roles = Roles.Administrador)]
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
235 public ActionResult ReProponer(string id)
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
236 {
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
237 return
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
238 GenericAction(
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
239 (agenda, m) => agenda.ReProponer(m),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
240 m => View("Index", m),
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
241 new Guid(id));
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
242 }
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 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
245 {
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
246 if (ModelState.IsValid)
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
247 {
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
248 var agenda = AgendaFactory.GetAgenda();
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
249
183
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
250 var r = action.Invoke(agenda, model);
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
251 if (r.Succeful)
167
ea85bd893247 Ajustes menores de UI
nelopauselli
parents: 166
diff changeset
252 {
183
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
253 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
254 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
255 this.AddWarning(log.WarningMessage);
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
256 return RedirectToAction("Index");
167
ea85bd893247 Ajustes menores de UI
nelopauselli
parents: 166
diff changeset
257 }
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
258 ModelState.AddModelError(string.Empty, r.Message);
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
259 }
183
212c664db5aa Generalización del manejo de las acciones sobre eventos
nelopauselli
parents: 182
diff changeset
260 return actionresultOnFail.Invoke(model);
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
261 }
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 177
diff changeset
262
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
263 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
264 {
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 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
266 ? 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
267 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
268 : (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
269 }
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 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
271 {
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 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
273 ? 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
274 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
275 : (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
276 }
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 117
diff changeset
277
117
7ef7e4bb71f6 manejo de mensajes al usuario
Nelo@Kenia.neluz.int
parents: 116
diff changeset
278 }
25
e8d2be47a6b0 Cambios de nombre en Portal.Web (Agenda x Evento)
nelo@MTEySS.neluz.int
parents:
diff changeset
279 }