Improved filtering implemented.
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user