Improved filtering implemented.

This commit is contained in:
2014-05-16 18:23:18 -04:00
parent b2d57a9e5f
commit fe0bc4e9ff
14 changed files with 425 additions and 133 deletions
+26 -33
View File
@@ -19,33 +19,36 @@ namespace MileageTraker.Web.Controllers
{
public ViewResult Index(LogQueryViewModel query)
{
var logs = DataService.GetLogs();
var validLogYearMonths = DataService.GetValidLogMonths();
var validLogYears = DataService.GetValidLogYears().ToList();
if (!validLogYears.Any())
if (!validLogYearMonths.Any()) // this means no logs in DB
return View("Empty");
if (!query.Year.HasValue)
query.Year = validLogYears.FirstOrDefault();
var validLogMonths = DataService.GetValidLogMonths(query.Year.Value).ToList();
if (!query.Month.HasValue)
query.Month = validLogMonths.FirstOrDefault();
// default parameter processing
if (!query.HasParameters())
{
query.Year = validLogYearMonths.First().Year;
query.Month = validLogYearMonths.First().Month;
query.MonthRange = 1;
}
if (query.Year.HasValue && !query.Month.HasValue)
{
var validLogMonths = validLogYearMonths.Where(dt => dt.Year == query.Year).ToList();
query.Month = validLogMonths.Min(dt => dt.Month);
query.MonthRange = validLogMonths.Max(dt => dt.Month) - query.Month + 1;
}
var filteredLogs =
from log in DataService.GetLogIndexViewModels(DataService.FilterLogs(logs, query))
orderby log.Created descending
select log;
var logs = DataService.GetLogs();
var viewModel =
new LogResultsViewModel
{
Logs = filteredLogs.ToList(),
Years = validLogYears,
Months = validLogMonths,
SelectedYear = query.Year.Value,
SelectedMonth = query.Month.Value,
SelectedLogType = query.LogType.ToString()
};
var filteredLogs =
(from log in DataService.GetLogIndexViewModels(DataService.FilterLogs(logs, query))
orderby log.Created descending
select log).ToList();
if (!filteredLogs.Any())
return View("Empty");
var viewModel = new LogResultsViewModel(filteredLogs, query, CustomExtensions.YearMonthList(validLogYearMonths));
Session.Add("LogPage", Request.Url.PathAndQuery);
@@ -61,11 +64,7 @@ namespace MileageTraker.Web.Controllers
DataService.FilterLogs(logs, query)
).ToList();
var name = string.Format(
"MileageLogs{0}-{1}{2}",
query.Year,
query.Month,
query.LogType.HasValue ? "-" + query.LogType.Value.GetDisplayShortName() : "");
var name = string.Format("MileageLogs_{0}", query);
var export = ExcelWriter<LogIndexViewModel>.WriteXls(filteredLogs, name, name);
return File(export, "application/ms-excel", name + ".xls");
@@ -229,12 +228,6 @@ namespace MileageTraker.Web.Controllers
return RedirectToAction("Index");
}
public JsonResult GetValidLogMonths(int year)
{
var validLogMonths = DataService.GetValidLogMonths(year);
return Json(validLogMonths, JsonRequestBehavior.AllowGet);
}
public PartialViewResult DetailsPartial(int id)
{
var log = DataService.GetLog(id);