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

Wersja 847, 8.8 KB (wprowadzona przez alina, 17 years temu)

re #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 magazine = _service.Find(magazineItem.Id);
60            var viewData = InitMagazineItemViewData();
61            viewData.MagazineItem = magazineItem;
62            if (magazineItem.IssueId != 0)
63            {
64                viewData.Issue = _context.Issues.Single(i => i.Id == magazineItem.IssueId);
65                viewData.Magazine = viewData.Issue.Magazine;
66                viewData.IssueList = new SelectList(_context.FindIssuesByMagazineItemId(magazineItem.IssueId, 0), "Id", "Number");
67            }
68            return View(viewData);
69        }
70
71        [Authorize]
72        public ActionResult Confirm(Author author)
73        {
74            return View(author);
75        }
76
77        [Authorize]
78        public ActionResult Edit(string id, string powrot, string month, string year, string user_id)
79        {
80            int id1 = 0;
81            int month1 = (month != null) ? Convert.ToInt32(month) : 0;
82            int year1 = (year != null) ? Convert.ToInt32(year) : 0;
83            int user1 = (user_id != null) ? Convert.ToInt32(user_id) : 0;
84            try
85            {
86                id1 = (id != null) ? Convert.ToInt32(id) : 0;
87            }
88            catch
89            {
90            }
91            var viewData = InitMagazineItemViewData();
92            var magazineItem = _service.Find(id1);
93
94            if (magazineItem == null)
95            {
96                Info inf = InitInfo(powrot, month1, year1, user1);
97                var confirmViewData = new ConfirmViewData();
98
99                if (id != "")     //nie znaleziono w bazie wierszowki o zadanym id
100                {
101                    confirmViewData = InitConfirmViewData(null, OperationType.WrongId, inf);
102                }
103                else              //nie podano numeru id
104                {
105                    confirmViewData = InitConfirmViewData(null, OperationType.NullId, null);
106                }
107                return View("Confirm", confirmViewData);
108            }
109            viewData.MagazineItem = magazineItem;
110            viewData.Magazine = magazineItem.Issue.Magazine;
111            viewData.Issue = magazineItem.Issue;
112            viewData.Info = InitInfo(powrot, month1, year1, user1);
113
114            var startDate = DateTime.Now.AddMonths(-3);
115            var endDate = DateTime.Now.AddMonths(1);
116            var issueList = _context.GetIssue().Where(i => i.Date >= startDate && i.Date <= endDate && i.MagazineId == magazineItem.Issue.MagazineId).OrderBy(i => i.Date).ToList();
117
118            int start_number = issueList[0].Number;
119            int AddId = 0;
120            if (magazineItem.Issue.Number < start_number)
121            {
122                viewData.SmallerMagazineNumber = 1;
123                AddId = magazineItem.Issue.Id;
124            }
125            viewData.IssueList = new SelectList(_context.FindIssuesByMagazineItemId(magazineItem.Issue.Id, AddId), "Id", "Number");
126            return View(viewData);
127        }
128        [Authorize]
129        [AcceptVerbs(HttpVerbs.Post)]
130        public ActionResult Update(MagazineItem magazineItem, Info info)
131        {
132            try
133            {
134                _service.Update(magazineItem, ControllerContext.HttpContext.User.Identity.Name);
135                ModelState.Clear();
136            }
137            catch (RulesException ex)
138            {
139                ex.AddModelStateErrors(ModelState, "magazineItem");
140            }
141
142            if (ModelState.IsValid)
143            {
144                var confirmViewData = new ConfirmViewData();
145                confirmViewData = InitConfirmViewData(_context.Authors.Single(a => a.Id == magazineItem.AuthorId), OperationType.Update, info);
146                return View("Confirm", confirmViewData);
147            }
148            var magazine = _service.Find(magazineItem.Id);
149            var viewData = InitMagazineItemViewData();
150            viewData.Info = info;
151            viewData.MagazineItem = magazine;
152            if (magazineItem.IssueId != 0)
153            {
154                viewData.Issue = _context.Issues.Single(i => i.Id == magazine.IssueId);
155                viewData.Magazine = magazine.Issue.Magazine;
156                viewData.IssueList = new SelectList(_context.FindIssuesByMagazineItemId(magazine.Issue.Id, 0), "Id", "Number");
157            }
158            return View("Edit", viewData);
159        }
160        private Info InitInfo(string p, int m, int y, int u)
161        {
162            Info inf = new Info();
163            inf.powrot = p;
164            inf.month = m;
165            inf.year = y;
166            inf.user_id = u;
167            return inf;
168        }
169        private MagazineItemViewData InitMagazineItemViewData()
170        {
171            var viewData = new MagazineItemViewData
172            {
173                MagazineItem = new MagazineItem(),
174                AuthorList = new SelectList(_context.Authors.OrderBy(a => a.LastName).ToList(), "Id", "FullName"),
175                MagazineList = new SelectList(_context.Magazines.ToList(), "Id", "NickName"),
176                IssueList = new SelectList(_context.FindIssuesByMagazineId(0, 0), "Id", "Name"),
177                ItemTypeList = new SelectList(_context.ItemTypes.ToList(), "Id", "Name"),
178                SmallerMagazineNumber = 0,
179                Info = new Info()
180            };
181            return viewData;
182        }
183        [Authorize]
184        public ActionResult Delete(string id, string powrot, string month, string year, string user_id)
185        {
186            int id1 = 0;
187            try
188            {
189                id1 = (id != null) ? Convert.ToInt32(id) : 0;
190            }
191            catch
192            {
193            }
194            var deleteViewData = new DeleteViewData();           
195            int month1 = (month != null) ? Convert.ToInt32(month) : 0;
196            int year1 = (year != null) ? Convert.ToInt32(year) : 0;
197            int user1 = (user_id != null) ? Convert.ToInt32(user_id) : 0;
198            deleteViewData.Info = InitInfo(powrot, month1, year1, user1);
199            return View("Delete", deleteViewData);
200        }
201        [Authorize]
202        [AcceptVerbs(HttpVerbs.Post)]
203        public ActionResult Delete(MagazineItem magazineItem, Info info)
204        {
205            var magazineItemToDelete = _service.Delete(magazineItem);
206            var confirmViewData = new ConfirmViewData();
207            if (magazineItemToDelete == null)
208            {
209                confirmViewData = InitConfirmViewData(null, OperationType.WrongId, info);
210            }
211            else
212            {
213                confirmViewData = InitConfirmViewData(magazineItemToDelete.Author, OperationType.Delete, info);
214            }
215            return View("Confirm", confirmViewData);
216        }
217        private ConfirmViewData InitConfirmViewData(Author author, OperationType c_type, Info inf)
218        {
219            var viewData = new ConfirmViewData
220            {
221                Author = author,
222                akcja = c_type,
223                info = inf
224            };
225            return viewData;
226        }
227    }
228}
Notatka: Zobacz TracBrowser aby uzyskać więcej informacji.