annotate Agendas/trunk/src/Agendas.Web/Controllers/PersonaController.cs @ 179:1deccd6c3cb2

Aplicando seguridad x roles en sitio web
author nelopauselli
date Mon, 08 Aug 2011 15:24:26 -0300
parents f17252543cbf
children 222362c29416
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();
157
f17252543cbf Agregando la url del blog a los datos de la persona
Nelo@Guinea.neluz.int
parents: 155
diff changeset
35 var r = personas.Add(model.Nombre, model.Twitter, model.EMail,model.Blog);
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,
f17252543cbf Agregando la url del blog a los datos de la persona
Nelo@Guinea.neluz.int
parents: 155
diff changeset
65 Blog = persona.Blog
f17252543cbf Agregando la url del blog a los datos de la persona
Nelo@Guinea.neluz.int
parents: 155
diff changeset
66 };
155
23aaf98b8377 Generalizando editores en EditorDefault basando los textos en recursos
Nelo@Guinea.neluz.int
parents: 144
diff changeset
67
23aaf98b8377 Generalizando editores en EditorDefault basando los textos en recursos
Nelo@Guinea.neluz.int
parents: 144
diff changeset
68 return View("Defaulteditor", model);
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
69 }
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 [HttpPost]
179
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 157
diff changeset
72 [CustomAuthorize(Roles = Roles.Administrador)]
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 157
diff changeset
73 public ActionResult Modificar(PersonaEditModel model)
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
74 {
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
75 if (ModelState.IsValid)
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
76 {
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
77 var personas = AgendaFactory.GetPersonaService();
157
f17252543cbf Agregando la url del blog a los datos de la persona
Nelo@Guinea.neluz.int
parents: 155
diff changeset
78 var r = personas.Update(new Guid(model.Id), model.Nombre, model.Twitter, model.EMail, model.Blog);
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
79 if (r.Succeful)
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
80 {
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
81 this.AddNotification("Los datos fueron guardados");
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
82 return RedirectToAction("Index");
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
83 }
157
f17252543cbf Agregando la url del blog a los datos de la persona
Nelo@Guinea.neluz.int
parents: 155
diff changeset
84 this.AddError(r.Message);
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
85 }
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
86
155
23aaf98b8377 Generalizando editores en EditorDefault basando los textos en recursos
Nelo@Guinea.neluz.int
parents: 144
diff changeset
87 return View("Defaulteditor", model);
144
a2b14da4902f Alta y modificación de ponentes (personas)
Nelo@Guinea.neluz.int
parents:
diff changeset
88 }
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 }