root/trunk/Wierszowki/Wierszowki.Web/Controllers/MagazineItemController.cs @ 842

Wersja 842, 8.1 KB (wprowadzona przez alina, 17 years temu)

fix #207, #193, #205

Line 
1using System;
2using System.Linq;
3using System.Web.Mvc;
4using Wierszowki.Core.Linq;
5using Wierszowki.Models;
6using Wierszowki.Services;
7using xVal.ServerSide;
8using System.Collections.Generic;
9using Wierszowki.Core.Interfaces;
10
11namespace Wierszowki.Controllers
12{
13    public class MagazineItemController : Controller
14    {
15        private readonly WierszowkiDataContext _context;
16        private readonly MagazineItemService _service;
17
18        public MagazineItemController()
19        {
20            _context = new WierszowkiDataContext();
21            _service = new MagazineItemService();
22        }
23
24        public ActionResult Index()
25        {
26            return RedirectToAction("Index", "Report");
27        }
28
29        [Authorize]
30        [AcceptVerbs(HttpVerbs.Get)]
31        [OutputCache(Duration = 10, VaryByParam = "none")]
32        public ActionResult Create()
33        {
34            var viewData = InitMagazineItemViewData();
35            return View(viewData);
36        }
37
38        [Authorize]
39        [AcceptVerbs(HttpVerbs.Post)]
40        public ActionResult Create(MagazineItem magazineItem)
41        {
42            try
43            {
44                _service.Create(magazineItem, ControllerContext.HttpContext.User.Identity.Name);
45                ModelState.Clear();
46            }
47            catch (RulesException ex)
48            {
49                ex.AddModelStateErrors(ModelState, "magazineItem");
50            }
51
52            if (ModelState.IsValid)
53            {
54                Info inf = InitInfo("1", 0, 0, 0);
55                var confirmViewData = new ConfirmViewData();
56                confirmViewData = InitConfirmViewData(_context.Authors.Single(a => a.Id == magazineItem.AuthorId), OperationType.Create, inf);
57                return View("Confirm", confirmViewData);
58            }
59            var viewData = InitMagazineItemViewData();
60            viewData.MagazineItem = magazineItem;
61
62            return View(viewData);
63        }
64
65        [Authorize]
66        public ActionResult Confirm(Author author)
67        {
68            return View(author);
69        }
70
71        [Authorize]
72        public ActionResult Edit(string id, string powrot, string month, string year, string user_id)
73        {
74            int id1 = 0;
75            int month1 = (month != null) ? Convert.ToInt32(month) : 0;
76            int year1 = (year != null) ? Convert.ToInt32(year) : 0;
77            int user1 = (user_id != null) ? Convert.ToInt32(user_id) : 0;
78            try
79            {
80                id1 = (id != null) ? Convert.ToInt32(id) : 0;
81            }
82            catch
83            {
84            }
85            var viewData = InitMagazineItemViewData();
86            var magazineItem = _service.Find(id1);
87
88            if (magazineItem == null)
89            {
90                Info inf = InitInfo(powrot, month1, year1, user1);
91                var confirmViewData = new ConfirmViewData();
92
93                if (id != "")     //nie znaleziono w bazie wierszowki o zadanym id
94                {
95                    confirmViewData = InitConfirmViewData(null, OperationType.WrongId, inf);
96                }
97                else              //nie podano numeru id
98                {
99                    confirmViewData = InitConfirmViewData(null, OperationType.NullId, null);
100                }
101                return View("Confirm", confirmViewData);
102            }
103            viewData.MagazineItem = magazineItem;
104            viewData.Magazine = magazineItem.Issue.Magazine;
105            viewData.Issue = magazineItem.Issue;
106            viewData.Info = InitInfo(powrot, month1, year1, user1);
107
108            var startDate = DateTime.Now.AddMonths(-3);
109            var endDate = DateTime.Now.AddMonths(1);
110            var issueList = _context.GetIssue().Where(i => i.Date >= startDate && i.Date <= endDate && i.MagazineId == magazineItem.Issue.MagazineId).OrderBy(i => i.Date).ToList();
111
112            int start_number = issueList[0].Number;
113            int AddId = 0;
114            if (magazineItem.Issue.Number < start_number)
115            {
116                viewData.SmallerMagazineNumber = 1;
117                AddId = magazineItem.Issue.Id;
118            }
119            viewData.IssueList = new SelectList(_context.FindIssuesByMagazineItemId(magazineItem.Issue.Id, AddId), "Id", "Number");
120            return View(viewData);
121        }
122        [Authorize]
123        [AcceptVerbs(HttpVerbs.Post)]
124        public ActionResult Update(MagazineItem magazineItem, Info info)
125        {
126            try
127            {
128                _service.Update(magazineItem, ControllerContext.HttpContext.User.Identity.Name);
129                ModelState.Clear();
130            }
131            catch (RulesException ex)
132            {
133                ex.AddModelStateErrors(ModelState, "magazineItem");
134            }
135
136            if (ModelState.IsValid)
137            {
138                var confirmViewData = new ConfirmViewData();
139                confirmViewData = InitConfirmViewData(_context.Authors.Single(a => a.Id == magazineItem.AuthorId), OperationType.Update, info);
140                return View("Confirm", confirmViewData);
141            }
142            var magazine = _service.Find(magazineItem.Id);
143            var viewData = InitMagazineItemViewData();
144            viewData.Info = info;//InitInfo(info.powrot, info.month, info.year, info.user_id);
145            viewData.MagazineItem = magazine;
146            return View("Edit", viewData);
147        }
148        private Info InitInfo(string p, int m, int y, int u)
149        {
150            Info inf = new Info();
151            inf.powrot = p;
152            inf.month = m;
153            inf.year = y;
154            inf.user_id = u;
155            return inf;
156        }
157        private MagazineItemViewData InitMagazineItemViewData()
158        {
159            var viewData = new MagazineItemViewData
160            {
161                MagazineItem = new MagazineItem(),
162                AuthorList = new SelectList(_context.Authors.OrderBy(a => a.LastName).ToList(), "Id", "FullName"),
163                MagazineList = new SelectList(_context.Magazines.ToList(), "Id", "NickName"),
164                IssueList = new SelectList(_context.FindIssuesByMagazineId(0, 0), "Id", "Name"),
165                ItemTypeList = new SelectList(_context.ItemTypes.ToList(), "Id", "Name"),
166                SmallerMagazineNumber = 0,
167                Info = new Info()
168            };
169            return viewData;
170        }
171        [Authorize]
172        public ActionResult Delete(string id, string powrot, string month, string year, string user_id)
173        {
174            int id1 = 0;
175            try
176            {
177                id1 = (id != null) ? Convert.ToInt32(id) : 0;
178            }
179            catch
180            {
181            }
182            var deleteViewData = new DeleteViewData();           
183            int month1 = (month != null) ? Convert.ToInt32(month) : 0;
184            int year1 = (year != null) ? Convert.ToInt32(year) : 0;
185            int user1 = (user_id != null) ? Convert.ToInt32(user_id) : 0;
186            deleteViewData.Info = InitInfo(powrot, month1, year1, user1);
187            return View("Delete", deleteViewData);
188        }
189        [Authorize]
190        [AcceptVerbs(HttpVerbs.Post)]
191        public ActionResult Delete(MagazineItem magazineItem, Info info)
192        {
193            var magazineItemToDelete = _service.Delete(magazineItem);
194            var confirmViewData = new ConfirmViewData();
195            if (magazineItemToDelete == null)
196            {
197                confirmViewData = InitConfirmViewData(null, OperationType.WrongId, info);
198            }
199            else
200            {
201                confirmViewData = InitConfirmViewData(magazineItemToDelete.Author, OperationType.Delete, info);
202            }
203            return View("Confirm", confirmViewData);
204        }
205        private ConfirmViewData InitConfirmViewData(Author author, OperationType c_type, Info inf)
206        {
207            var viewData = new ConfirmViewData
208            {
209                Author = author,
210                akcja = c_type,
211                info = inf
212            };
213            return viewData;
214        }
215    }
216}
Notatka: Zobacz TracBrowser aby uzyskać więcej informacji.