private int SetOnsiteRemote(LogsReportViewModel vm) { int OnsiteRemote = 0; if (vm.OnSite) { OnsiteRemote += 1; //binary 0001 } if (vm.Remote) { OnsiteRemote += 2; //binary 0010 } return(OnsiteRemote); }
private string BuildUriWithoutPage(LogsReportViewModel vm) { string StartDateString = vm.StartDate.ToShortDateString(); string EndDateString = vm.EndDate.AddDays(1).ToShortDateString(); int OnsiteRemote = SetOnsiteRemote(vm); int Reasons = SetReasons(vm); string uri = WebAPI + "LogBookReport?"; uri += "locationId=" + vm.LocationId; uri += "&commentSearch=" + vm.CommentSearch; uri += "&startDate=" + StartDateString; uri += "&endDate=" + EndDateString; uri += "&userSearch=" + vm.UserSearch; uri += "&OnsiteRemote=" + OnsiteRemote; uri += "&reasons=" + Reasons; return(uri); }
private int SetReasons(LogsReportViewModel vm) { int Reasons = 0; foreach (var reason in vm.ReasonForResponses) { if (reason.Id == 1) { Reasons += reason.Id; } else { Reasons += 2 << (reason.Id - 2); //set bits } } return(Reasons); }
public FileResult FileDownload(LogsReportViewModel vm) { string startDateFileName = vm.StartDate.ToString("yyyyMMdd"); string endDateFileName = vm.EndDate.ToString("yyyyMMdd"); string fileZipName = "ELogBook" + vm.LocationId + "_" + startDateFileName + "to" + endDateFileName + ".csv"; byte[] fileToSave = new byte[] {}; var logBookView = new LogBookView(); vm.LogsView.PageNumber = 1; string uri = BuildUriWithoutPage(vm); uri += "&pageRows=" + FileMaxRows; uri += "&pageNumber=" + vm.LogsView.PageNumber; if ((vm.EndDate.Ticks - vm.StartDate.Ticks) > 0) { logBookView = GetLogBookView(uri); var records = logBookView.Logs; fileToSave = Business.Exporter.GetLogFile(records); } return(File(fileToSave, "csv", fileZipName)); //// javascript download prefers text; haven't tested binary yet. //// works for chrome so far. not IE //using (var memStream = new MemoryStream()) //{ // using (var ziparchive = new ZipArchive(memStream, ZipArchiveMode.Create, true)) // { // var entry1 = ziparchive.CreateEntry(fileZipName, CompressionLevel.Optimal); // using (var entryStream = entry1.Open()) // { // entryStream.Write(fileToSave, 0, fileToSave.Length); // } // } // return File(memStream.ToArray(), "downloaded/csv", fileZipName); //} }
public ActionResult RunReport(LogsReportViewModel vm) { var logBookView = new LogBookView(); if (vm.LogsView.PageNumber == 0) { vm.LogsView.PageNumber = 1; } if (vm.ReportPageNumber == 0) { vm.ReportPageNumber = 1; } string uri = BuildUriWithoutPage(vm); uri += "&pageRows=" + PageRows; uri += "&pageNumber=" + vm.ReportPageNumber; //if (ModelState.IsValid) //don't do ModelState.IsValid ==> ReasonForResponses will always be invalid if ((vm.EndDate.Ticks - vm.StartDate.Ticks) > 0) { logBookView = GetLogBookView(uri); vm.LogsView = logBookView; //logViewModel.Logs; if (logBookView != null) { return(PartialView("ReportResult", vm)); } else { return(Content("Server error for Reports. Please contact administrator.")); } } else { return(Content("Please make sure End Date is before Start Date")); } }
// GET: LogsReport public ActionResult Index() { var vm = new LogsReportViewModel(); using (var client = new HttpClient()) { string uri = WebAPI + "ReasonsForResponse"; var response = client.GetAsync(uri).Result; if (response.IsSuccessStatusCode) { var content = response.Content.ReadAsStringAsync().Result; JavaScriptSerializer JSserializer = new JavaScriptSerializer(); //deserialize to your class var reasonsForResponse = JSserializer.Deserialize <List <ReasonForResponseView> >(content); vm.ReasonForResponses = reasonsForResponse; } else //web api sent error response { return(Content("Server error getting the Reasons For Responses filter. Please contact administrator.")); } } return(View(vm)); }