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

Wersja 785, 4.8 KB (wprowadzona przez marek, 17 years temu)

re #194

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(int year, int month, int user)
43        {
44            var items = _repository.Find(m => m.Date.Month == month && m.Date.Year == year && m.CreatedBy == user)
45                                   .OrderByDescending(m => m.UpdatedOn).ToList();
46            return View(items);
47        }
48
49        public ActionResult ToPrice()
50        {
51            var items = _repository.Find(m => m.Price <= 0).ToList();
52            return View("All", items);
53        }
54
55        public ActionResult Show(int year, int month, int employment)
56        {
57            var magazineItems = _context.FindItemsByYearMonthAndEmploymentType(year, month, employment);
58            return View(magazineItems);
59        }
60
61        public ActionResult AuthorCard(int year, int month, int author)
62        {
63            var magazineItems = _context.FindItemsByYearMonthAndAuthor(year, month, author);
64            if (magazineItems.Count() <= 0)
65                return RedirectToAction("AuthorCardNotFound", _context.Authors.SingleOrDefault(a => a.Id == author));
66           
67            var viewData = new AuthorCardViewData
68                               {
69                                   FullName = magazineItems[0].Author.FullName,
70                                   Date = magazineItems[0].Date,
71                                   MagazineItems = new Dictionary<string, List<MagazineItem>>()
72                               };
73            foreach (var magazineItem in magazineItems)
74            {
75                var key = magazineItem.Issue.Magazine.NickName;
76                if (!viewData.MagazineItems.ContainsKey(key))
77                {
78                    viewData.MagazineItems[key] = new List<MagazineItem>();
79                }
80                viewData.MagazineItems[key].Add(magazineItem);
81                viewData.Price += magazineItem.Price;
82                viewData.Bonus += magazineItem.Bonus;
83                viewData.Total += magazineItem.Price + magazineItem.Bonus;
84            }
85            return View(viewData);
86        }
87
88        public ActionResult AuthorCardNotFound(Author author)
89        {
90            return View(author);
91        }
92
93        public ActionResult Authors(int year, int month)
94        {
95            ViewData["ReportDate"] = new DateTime(year, month, 1);
96            var reports = _context.GetAuthorsReport(year, month);
97            return View(reports);
98        }
99
100        public ActionResult AuthorsByMagazines(int year, int month)
101        {
102            var viewData = new ReportViewData();
103            viewData.ReportDate = new DateTime(year, month, 1);
104            viewData.Authors = _context.GetAuthors();
105            viewData.Magazines = _context.GetMagazines();
106            viewData.ReportData = _context.GetAuthorsByMagzinesReport(year, month, viewData.Authors, viewData.Magazines);
107            return View(viewData);
108        }
109
110        public ActionResult AuthorsByMagazinesByEmployment(int year, int month, int? employment)
111        {
112            var employmentId = employment.HasValue ? employment.Value : 1;
113
114            var viewData = new ReportViewData();
115            viewData.ReportDate = new DateTime(year, month, 1);
116            viewData.Employment = _context.EmploymentTypes.SingleOrDefault(e => e.Id == employmentId);
117            viewData.Authors = _context.GetAuthors().Where(a => a.EmploymentType == viewData.Employment).ToList();
118            viewData.Magazines = _context.GetMagazines();
119            viewData.ReportData = _context.GetAuthorsByMagzinesReport(year, month, viewData.Authors, viewData.Magazines);
120            return View("AuthorsByMagazines", viewData);
121        }
122    }
123}
Notatka: Zobacz TracBrowser aby uzyskać więcej informacji.