annotate Agendas/trunk/src/Agendas.Web/Controllers/PersonaController.cs @ 180:222362c29416

UI para asignación de roles
author nelopauselli
date Mon, 08 Aug 2011 16:42:52 -0300
parents 1deccd6c3cb2
children a36a76bd6ec3
rev   line source
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
1 using System;
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
2 using System.Linq;
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
3 using System.Web.Mvc;
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 157
diff changeset
4 using AltNetHispano.Agendas.Domain;
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
5 using AltNetHispano.Agendas.Factories;
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
6 using AltNetHispano.Agendas.Web.Models;
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
7
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
8 namespace AltNetHispano.Agendas.Web.Controllers
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
9 {
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
10 public class PersonaController : Controller
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
11 {
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
12 public ActionResult Index()
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
13 {
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
14 var personas = AgendaFactory.GetPersonaService();
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
15
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
16 var model = new PersonaIndexModel {Items = from p in personas.GetAll() select new PersonaDto{Id=p.Id, Nombre = p.Nombre}};
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
17
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
18 return View(model);
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
19 }
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
20
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 157
diff changeset
21 [CustomAuthorize(Roles = Roles.Administrador)]
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 157
diff changeset
22 public ActionResult Nueva()
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
23 {
155
23aaf98b8377 Generalizando editores en EditorDefault basando los textos en recursos
Nelo@Guinea.neluz.int
parents: 144
diff changeset
24 var model = new PersonaNewModel();
23aaf98b8377 Generalizando editores en EditorDefault basando los textos en recursos
Nelo@Guinea.neluz.int
parents: 144
diff changeset
25 return View("Defaulteditor", model);
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
26 }
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
27
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
28 [HttpPost]
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 157
diff changeset
29 [CustomAuthorize(Roles = Roles.Administrador)]
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
30 public ActionResult Nueva(PersonaNewModel model)
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
31 {
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
32 if (ModelState.IsValid)
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
33 {
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
34 var personas = AgendaFactory.GetPersonaService();
180
222362c29416 UI para asignación de roles
nelopauselli
parents: 179
diff changeset
35 var r = personas.Add(model.Nombre, model.Twitter, model.EMail,model.Blog, model.Roles);
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
36 if (r.Succeful)
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
37 {
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
38 this.AddNotification("Los datos fueron guardados");
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
39 return RedirectToAction("Index");
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
40 }
157
f17252543cbf Agregando la url del blog a los datos de la persona
Nelo@Guinea.neluz.int
parents: 155
diff changeset
41 this.AddError(r.Message);
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
42 }
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
43
155
23aaf98b8377 Generalizando editores en EditorDefault basando los textos en recursos
Nelo@Guinea.neluz.int
parents: 144
diff changeset
44 return View("Defaulteditor", model);
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
45 }
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
46
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 157
diff changeset
47 [CustomAuthorize(Roles = Roles.Administrador)]
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 157
diff changeset
48 public ActionResult Modificar(string id)
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
49 {
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
50 var personas = AgendaFactory.GetPersonaService();
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
51
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
52 var persona = personas.GetById(new Guid(id));
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
53 if (persona==null)
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
54 {
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
55 this.AddError("No se encontró la persona que intenta modificar");
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
56 return RedirectToAction("Index");
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
57 }
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
58
157
f17252543cbf Agregando la url del blog a los datos de la persona
Nelo@Guinea.neluz.int
parents: 155
diff changeset
59 var model = new PersonaEditModel
f17252543cbf Agregando la url del blog a los datos de la persona
Nelo@Guinea.neluz.int
parents: 155
diff changeset
60 {
f17252543cbf Agregando la url del blog a los datos de la persona
Nelo@Guinea.neluz.int
parents: 155
diff changeset
61 Id = persona.Id.ToString(),
f17252543cbf Agregando la url del blog a los datos de la persona
Nelo@Guinea.neluz.int
parents: 155
diff changeset
62 Nombre = persona.Nombre,
f17252543cbf Agregando la url del blog a los datos de la persona
Nelo@Guinea.neluz.int
parents: 155
diff changeset
63 Twitter = persona.Twitter,
f17252543cbf Agregando la url del blog a los datos de la persona
Nelo@Guinea.neluz.int
parents: 155
diff changeset
64 EMail = persona.Mail,
180
222362c29416 UI para asignación de roles
nelopauselli
parents: 179
diff changeset
65 Blog = persona.Blog,
222362c29416 UI para asignación de roles
nelopauselli
parents: 179
diff changeset
66 Roles = persona.Roles.ToArray()
157
f17252543cbf Agregando la url del blog a los datos de la persona
Nelo@Guinea.neluz.int
parents: 155
diff changeset
67 };
155
23aaf98b8377 Generalizando editores en EditorDefault basando los textos en recursos
Nelo@Guinea.neluz.int
parents: 144
diff changeset
68
23aaf98b8377 Generalizando editores en EditorDefault basando los textos en recursos
Nelo@Guinea.neluz.int
parents: 144
diff changeset
69 return View("Defaulteditor", model);
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
70 }
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
71
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
72 [HttpPost]
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 157
diff changeset
73 [CustomAuthorize(Roles = Roles.Administrador)]
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 157
diff changeset
74 public ActionResult Modificar(PersonaEditModel model)
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
75 {
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
76 if (ModelState.IsValid)
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
77 {
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
78 var personas = AgendaFactory.GetPersonaService();
180
222362c29416 UI para asignación de roles
nelopauselli
parents: 179
diff changeset
79 var r = personas.Update(new Guid(model.Id), model.Nombre, model.Twitter, model.EMail, model.Blog, model.Roles);
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
80 if (r.Succeful)
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
81 {
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
82 this.AddNotification("Los datos fueron guardados");
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
83 return RedirectToAction("Index");
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
84 }
157
f17252543cbf Agregando la url del blog a los datos de la persona
Nelo@Guinea.neluz.int
parents: 155
diff changeset
85 this.AddError(r.Message);
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
86 }
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
87
155
23aaf98b8377 Generalizando editores en EditorDefault basando los textos en recursos
Nelo@Guinea.neluz.int
parents: 144
diff changeset
88 return View("Defaulteditor", model);
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
89 }
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
90 }
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
91 }