comparison Agendas/trunk/src/Agendas.Web/Controllers/PropuestaController.cs @ 26:71b02443450a

UI de Propuestas de VANs
author nelo@MTEySS.neluz.int
date Tue, 15 Mar 2011 08:45:00 -0300
parents
children 29b8a8893ba3
comparison
equal deleted inserted replaced
25:e8d2be47a6b0 26:71b02443450a
1 using System;
2 using System.Linq;
3 using System.Web.Mvc;
4 using Agendas.Factories;
5 using Agendas.Web.Models;
6 using AltNetHispano.Agendas.Domain.Exceptions;
7
8 namespace Agendas.Web.Controllers
9 {
10 public class PropuestaController : Controller
11 {
12 public ActionResult Index()
13 {
14 var model = GetIndexModel();
15 return View(model);
16 }
17
18 private static PropuestaIndexModel GetIndexModel()
19 {
20 var agenda = AgendaFactory.GetAgenda();
21
22 return new PropuestaIndexModel
23 {
24 Propuestas = from e in agenda.GetEventosPropuestos()
25 select new PropuestaDto {Id = e.Id.ToString(), Titulo = e.Titulo, Ponente = e.Ponente.Nombre}
26 };
27 }
28
29 [Authorize]
30 public ActionResult New()
31 {
32 return View();
33 }
34
35 [HttpPost]
36 [Authorize]
37 public ActionResult New(PropuestaNewModel model)
38 {
39 if (ModelState.IsValid)
40 {
41 var agenda = AgendaFactory.GetAgenda();
42
43 try
44 {
45 agenda.Proponer(model.Titulo, model.Ponente);
46
47 return View("Index", GetIndexModel());
48 }
49 catch (ValidationException ex)
50 {
51 ModelState.AddModelError("error", ex.ToString());
52 }
53 }
54 return View(model);
55 }
56
57 [Authorize]
58 public ActionResult Edit(string id)
59 {
60 var agenda = AgendaFactory.GetAgenda();
61 var propuesta = agenda.GetEvento(new Guid(id));
62 if (propuesta != null)
63 {
64 var model = new PropuestaEditModel
65 {
66 Id = id,
67 Titulo = propuesta.Titulo,
68 Ponente = propuesta.Ponente != null ? propuesta.Ponente.Nombre : string.Empty
69 };
70 return View(model);
71 }
72 ModelState.AddModelError("error", "No se encontró el Propuesta que quiere modificar");
73 return View();
74 }
75
76 [HttpPost]
77 [Authorize]
78 public ActionResult Edit(PropuestaEditModel model)
79 {
80 if (ModelState.IsValid)
81 {
82 var agenda = AgendaFactory.GetAgenda();
83
84 try
85 {
86 agenda.ModificarPropuesta(new Guid(model.Id), model.Titulo, model.Ponente);
87
88 return View("Index", GetIndexModel());
89 }
90 catch (ValidationException ex)
91 {
92 ModelState.AddModelError("error", ex.ToString());
93 }
94 }
95 return View(model);
96 }
97 }
98 }