root/trunk/Wierszowki/Wierszowki.Web/Controllers/ReportController.cs @ 752

Wersja 752, 4.6 KB (wprowadzona przez marek, 17 years temu)

wiersz

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Web;
5using System.Web.Mvc;
6using System.Web.Mvc.Ajax;
7using Wierszowki.Core.Interfaces;
8using Wierszowki.Core.Linq;
9using Wierszowki.Models;
10
11namespace Wierszowki.Controllers
12{
13    [Authorize]
14    [HandleError]
15    public class ReportController : Controller
16    {
17        private readonly IRepository<MagazineItem> _repository;
18
19        private readonly WierszowkiDataContext _context;
20
21        public ReportController()
22        {
23            _context = new WierszowkiDataContext();
24            _repository = new LinqRepository<MagazineItem>();
25        }
26
27        public ReportController(IRepository<MagazineItem> repository, WierszowkiDataContext dataContext)
28        {
29            _repository = repository;
30            _context = dataContext;
31        }
32
33        public ActionResult Index()
34        {
35            var viewData = new ReportViewData
36                               {
37                                   Authors = _context.GetAuthors().OrderBy(a => a.FullName).ToList()
38                               };
39            return View(viewData);
40        }
41
42        public ActionResult All()
43        {
44            var items = _context.MagazineItems.ToList();
45            return View(items);
46        }
47
48        public ActionResult ToPrice()
49        {
50            var items = _repository.Find(m => m.Price <= 0).ToList();
51            return View("All", items);
52        }
53
54        public ActionResult Show(int year, int month, int employment)
55        {
56            var magazineItems = _context.FindItemsByYearMonthAndEmploymentType(year, month, employment);
57            return View(magazineItems);
58        }
59
60        public ActionResult AuthorCard(int year, int month, int author)
61        {
62            var magazineItems = _context.FindItemsByYearMonthAndAuthor(year, month, author);
63            if (magazineItems.Count() <= 0)
64                return RedirectToAction("AuthorCardNotFound", _context.Authors.SingleOrDefault(a => a.Id == author));
65           
66            var viewData = new AuthorCardViewData
67                               {
68                                   FullName = magazineItems[0].Author.FullName,
69                                   Date = magazineItems[0].Date,
70                                   MagazineItems = new Dictionary<string, List<MagazineItem>>()
71                               };
72            foreach (var magazineItem in magazineItems)
73            {
74                var key = magazineItem.Issue.Magazine.NickName;
75                if (!viewData.MagazineItems.ContainsKey(key))
76                {
77                    viewData.MagazineItems[key] = new List<MagazineItem>();
78                }
79                viewData.MagazineItems[key].Add(magazineItem);
80                viewData.Price += magazineItem.Price;
81                viewData.Bonus += magazineItem.Bonus;
82                viewData.Total += magazineItem.Price + magazineItem.Bonus;
83            }
84            return View(viewData);
85        }
86
87        public ActionResult AuthorCardNotFound(Author author)
88        {
89            return View(author);
90        }
91
92        public ActionResult Authors(int year, int month)
93        {
94            ViewData["ReportDate"] = new DateTime(year, month, 1);
95            var reports = _context.GetAuthorsReport(year, month);
96            return View(reports);
97        }
98
99        public ActionResult AuthorsByMagazines(int year, int month)
100        {
101            var viewData = new ReportViewData();
102            viewData.ReportDate = new DateTime(year, month, 1);
103            viewData.Authors = _context.GetAuthors();
104            viewData.Magazines = _context.GetMagazines();
105            viewData.ReportData = _context.GetAuthorsByMagzinesReport(year, month, viewData.Authors, viewData.Magazines);
106            return View(viewData);
107        }
108
109        public ActionResult AuthorsByMagazinesByEmployment(int year, int month, int? employment)
110        {
111            var employmentId = employment.HasValue ? employment.Value : 1;
112
113            var viewData = new ReportViewData();
114            viewData.ReportDate = new DateTime(year, month, 1);
115            viewData.Employment = _context.EmploymentTypes.SingleOrDefault(e => e.Id == employmentId);
116            viewData.Authors = _context.GetAuthors().Where(a => a.EmploymentType == viewData.Employment).ToList();
117            viewData.Magazines = _context.GetMagazines();
118            viewData.ReportData = _context.GetAuthorsByMagzinesReport(year, month, viewData.Authors, viewData.Magazines);
119            return View("AuthorsByMagazines", viewData);
120        }
121    }
122}
Notatka: Zobacz TracBrowser aby uzyskać więcej informacji.