root/branches/Emisje/Wierszowki/Wierszowki.Web/Controllers/ReportController.cs @ 838

Wersja 838, 5.0 KB (wprowadzona przez marek, 17 years temu)

re #195 - merged with latest trunk

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