root/branches/Emisje/Wierszowki/Wierszowki.Web/Controllers/MagazineItemController.cs @ 796

Wersja 796, 4.0 KB (wprowadzona przez marek, 17 years temu)

re #195 - merged with latest trunk

Line 
1using System;
2using System.Linq;
3using System.Web.Mvc;
4using Wierszowki.Core.Linq;
5using Wierszowki.Models;
6using Wierszowki.Services;
7using xVal.ServerSide;
8
9namespace Wierszowki.Controllers
10{
11    public class MagazineItemController : Controller
12    {
13        private readonly WierszowkiDataContext _context;
14        private readonly MagazineItemService _service;
15
16        public MagazineItemController()
17        {
18            _context = new WierszowkiDataContext();
19            _service = new MagazineItemService();
20        }
21
22        public ActionResult Index()
23        {
24            return RedirectToAction("Index", "Report");
25        }
26
27        [Authorize]
28        [AcceptVerbs(HttpVerbs.Get)]
29        [OutputCache(Duration = 10, VaryByParam = "none")]
30        public ActionResult Create()
31        {
32            var viewData = InitMagazineItemViewData();
33            return View(viewData);
34        }
35
36        [Authorize]
37        [AcceptVerbs(HttpVerbs.Post)]
38        public ActionResult Create(MagazineItem magazineItem)
39        {
40            try
41            {
42                _service.Create(magazineItem, ControllerContext.HttpContext.User.Identity.Name);
43                ModelState.Clear();
44            }
45            catch (RulesException ex)
46            {
47                ex.AddModelStateErrors(ModelState, "magazineItem");
48            }
49
50            if (ModelState.IsValid)
51            {
52                return RedirectToAction("Confirm", _context.Authors.Single(a => a.Id == magazineItem.AuthorId));
53            }
54
55            var viewData = InitMagazineItemViewData();
56            viewData.MagazineItem = magazineItem;
57            return View(viewData);
58        }
59
60        [Authorize]
61        public ActionResult Confirm(Author author)
62        {
63            return View(author);
64        }
65
66        [Authorize]
67        public ActionResult Edit(int id)
68        {
69            var viewData = InitMagazineItemViewData();
70            var magazineItem = _service.Find(id);
71            viewData.MagazineItem = magazineItem;
72            viewData.Magazine = magazineItem.Issue.Magazine;
73            viewData.Issue = magazineItem.Issue;
74            viewData.IssueList = new SelectList(_context.FindIssuesByMagazineItemId(magazineItem.Issue.Id), "Id", "Number");
75            return View(viewData);
76        }
77
78        [Authorize]
79        [AcceptVerbs(HttpVerbs.Post)]
80        public ActionResult Update(MagazineItem magazineItem)
81        {
82            try
83            {
84                //var service = new MagazineItemService();
85                _service.Update(magazineItem, ControllerContext.HttpContext.User.Identity.Name);
86                ModelState.Clear();
87            }
88            catch (RulesException ex)
89            {
90                ex.AddModelStateErrors(ModelState, "magazineItem");
91            }
92
93            if (ModelState.IsValid)
94            {
95                var author = _context.Authors.Single(a => a.Id == magazineItem.AuthorId);
96
97                return RedirectToAction("Confirm", author);
98            }
99
100            var viewData = InitMagazineItemViewData();
101            viewData.MagazineItem = magazineItem;
102            return View(viewData);
103        }
104
105        private MagazineItemViewData InitMagazineItemViewData()
106        {
107            var viewData = new MagazineItemViewData
108                               {
109                                   MagazineItem = new MagazineItem(),
110                                   AuthorList = new SelectList(_context.Authors.ToList(), "Id", "FullName"),
111                                   MagazineList = new SelectList(_context.Magazines.ToList(), "Id", "NickName"),
112                                   IssueList = new SelectList(_context.FindIssuesByMagazineId(0), "Id", "Name"),
113                                   ItemTypeList = new SelectList(_context.ItemTypes.ToList(), "Id", "Name")
114                               };
115            return viewData;
116        }
117    }
118}
Notatka: Zobacz TracBrowser aby uzyskać więcej informacji.