public ActionResult Search(string txtDateFrom, string txtDateTo, string txtURLContains, string SelectedAgency, string Export, int? Page, string SortBy, string Order)
{
try
{
if (txtURLContains == "Enter Text")
txtURLContains = "";
if (SelectedAgency == null)
{
SelectedAgency = "DOL.Gov";
}
if (txtURLContains == null)
{
txtURLContains = "";
}
int resultsPerPage = 10;
if (txtDateFrom == null | txtDateTo == null)
{
txtDateTo = System.DateTime.Today.ToShortDateString();
txtDateFrom = System.DateTime.Today.Subtract(TimeSpan.FromDays(30)).ToShortDateString();
}
ReportsDomain _reportsDomain = new ReportsDomain(ConfigurationManager.ConnectionStrings["FeedbackScriptConnectionString"].ConnectionString);
bool mFromDateStatus = isDate(txtDateFrom);
bool mToDateStatus = isDate(txtDateTo);
if (mFromDateStatus == false)
{
txtDateFrom = System.DateTime.Today.Subtract(TimeSpan.FromDays(30)).ToShortDateString();
ModelState.AddModelError("FromDateValidation", "Invalid Date Range");
}
if (mToDateStatus == false)
{
txtDateTo = System.DateTime.Today.ToShortDateString();
ModelState.AddModelError("ToDateValidation", "Invalid Date Range");
}
txtURLContains = ReplaceBad(txtURLContains);
ViewData["txtDateFrom"] = txtDateFrom;
ViewData["txtDateTo"] = txtDateTo;
ViewData["urlContains"] = txtURLContains;
if (!ModelState.IsValid)
{
ViewData["AgencyList"] = new SelectList(new[]
{
new {Agency="Empty List",Val="Empty List"},
},
"Agency", "Agency", "Empty List");
return View();
}
else
{
if (Convert.ToDateTime(txtDateFrom) > Convert.ToDateTime(txtDateTo))
{
ModelState.AddModelError("FromDateValidation", "Invalid Date Range");
ModelState.AddModelError("ToDateValidation", "Invalid Date Range");
ViewData["AgencyList"] = new SelectList(new[]
{
new {Agency="Empty List",Val="Empty List"},
},
"Agency", "Agency", "Empty List");
return View();
}
}
var orderedResultsPerPage = _reportsDomain.GetSearch(txtDateFrom, txtDateTo, txtURLContains, SelectedAgency);
if (Export == string.Empty | Export == null)
{
if (!Page.HasValue || Page.Value < 1) { Page = 1; }
if (SortBy == "" || SortBy == null) { SortBy = "AgencyName"; }
if (Order == "" || Order == null) { Order = "Asc"; }
PaginationInfo pi = new PaginationInfo { CurrentPage = Page.Value, ResultPerPage = resultsPerPage, TotalCount = _reportsDomain.GetSearch(txtDateFrom,txtDateTo,txtURLContains,SelectedAgency).Count(), SortBy = SortBy, Order = Order, txtDateFrom = txtDateFrom,txtDateTo = txtDateTo,SelectedAgency = SelectedAgency,urlContains = txtURLContains};
ViewData["paging"] = pi;
switch (SortBy)
{
case "URLLinks":
orderedResultsPerPage = Order == "Asc" ? _reportsDomain.GetSearch(txtDateFrom, txtDateTo, txtURLContains, SelectedAgency).OrderBy(a => a.URL) : _reportsDomain.GetSearch(txtDateFrom, txtDateTo, txtURLContains, SelectedAgency).OrderByDescending(a => a.URL);
break;
case "AgencyName":
orderedResultsPerPage = Order == "Asc" ? _reportsDomain.GetSearch(txtDateFrom, txtDateTo, txtURLContains, SelectedAgency).OrderBy(a => a.Agency) : _reportsDomain.GetSearch(txtDateFrom, txtDateTo, txtURLContains, SelectedAgency).OrderByDescending(a => a.Agency);
break;
case "PositiveFeedback":
orderedResultsPerPage = Order == "Asc" ? _reportsDomain.GetSearch(txtDateFrom, txtDateTo, txtURLContains, SelectedAgency).OrderBy(a => a.Pfeedback) : _reportsDomain.GetSearch(txtDateFrom, txtDateTo, txtURLContains, SelectedAgency).OrderByDescending(a => a.Pfeedback);
break;
case "NumOfPosComments":
orderedResultsPerPage = Order == "Asc" ? _reportsDomain.GetSearch(txtDateFrom, txtDateTo, txtURLContains, SelectedAgency).OrderBy(a => a.NumOfPosComments) : _reportsDomain.GetSearch(txtDateFrom, txtDateTo, txtURLContains, SelectedAgency).OrderByDescending(a => a.NumOfPosComments);
break;
case "NumOfNegComments":
orderedResultsPerPage = Order == "Asc" ? _reportsDomain.GetSearch(txtDateFrom, txtDateTo, txtURLContains, SelectedAgency).OrderBy(a => a.NumOfNegComments) : _reportsDomain.GetSearch(txtDateFrom, txtDateTo, txtURLContains, SelectedAgency).OrderByDescending(a => a.NumOfNegComments);
break;
case "VolumeOfFeedback":
default:
orderedResultsPerPage = Order == "Asc" ? _reportsDomain.GetSearch(txtDateFrom, txtDateTo, txtURLContains, SelectedAgency).OrderBy(a => a.VolumeFeedBack) : _reportsDomain.GetSearch(txtDateFrom, txtDateTo, txtURLContains, SelectedAgency).OrderByDescending(a => a.VolumeFeedBack);
break;
}
ViewData["SortBy"] = SortBy;
ViewData["Order"] = Order;
ViewData["AgencyList"] = new SelectList(_reportsDomain.GetAgencyList(txtDateFrom,txtDateTo).ToList(), "Agency", "Agency", SelectedAgency);
if (_reportsDomain.GetSearch(txtDateFrom, txtDateTo, txtURLContains, SelectedAgency).Count() <= 0)
ModelState.AddModelError("RecordCount", "No results found for the specified search criteria");
return View(orderedResultsPerPage.Skip(resultsPerPage * (Page.Value - 1)).Take(resultsPerPage));
}
else
{
//ExportToExcelSearchPage(orderedResultsPerPage.ToList(), txtDateFrom.ToString(), txtDateTo.ToString());
ExportToExcelSearchPage(orderedResultsPerPage.ToList(), txtDateFrom.ToString(), txtDateTo.ToString(), txtURLContains, SelectedAgency);
return View(orderedResultsPerPage);
}
}
catch (Exception ex)
{
ViewData["ErrorMessage"] = ex.Message + ex.StackTrace;
return View("Error");
}
}