public async Task <IActionResult> GenerateReport(IFormCollection form) { var eventIds = new List <int>(); foreach (var key in form.Keys) { if (key.ToString().StartsWith("selectEvent_")) { var eventId = int.Parse(key.ToString().Replace("selectEvent_", "")); eventIds.Add(eventId); } } var model = new UnitEventsReportView(); model.Rows = new List <UnitEventJson>(); model.Department = await _departmentsService.GetDepartmentByIdAsync(DepartmentId, false); foreach (var eventId in eventIds) { var eventJson = new UnitEventJson(); var eventRecord = await _unitsService.GetUnitStateByIdAsync(eventId); model.RunOn = DateTime.UtcNow.TimeConverter(model.Department); eventJson.UnitName = eventRecord.Unit.Name; eventJson.State = StringHelpers.GetDescription(((UnitStateTypes)eventRecord.State)); eventJson.Timestamp = eventRecord.Timestamp.TimeConverterToString(model.Department).ToString(); eventJson.Note = eventRecord.Note; if (((UnitStateTypes)eventRecord.State) == UnitStateTypes.Enroute) { if (eventRecord.DestinationId.HasValue) { var station = await _departmentGroupsService.GetGroupByIdAsync(eventRecord.DestinationId.Value, false); if (station != null) { eventJson.DestinationName = station.Name; } else { eventJson.DestinationName = "Station"; } } else { eventJson.DestinationName = "Station"; } } else if (((UnitStateTypes)eventRecord.State) == UnitStateTypes.Responding || ((UnitStateTypes)eventRecord.State) == UnitStateTypes.Committed || ((UnitStateTypes)eventRecord.State) == UnitStateTypes.OnScene || ((UnitStateTypes)eventRecord.State) == UnitStateTypes.Staging || ((UnitStateTypes)eventRecord.State) == UnitStateTypes.Released || ((UnitStateTypes)eventRecord.State) == UnitStateTypes.Cancelled) { if (eventRecord.DestinationId.HasValue) { var call = await _callsService.GetCallByIdAsync(eventRecord.DestinationId.Value, false); if (call != null) { eventJson.DestinationName = call.Name; } else { eventJson.DestinationName = "Scene"; } } } if (eventRecord.LocalTimestamp.HasValue) { eventJson.LocalTimestamp = eventRecord.LocalTimestamp.Value.ToString(); } if (eventRecord.Latitude.HasValue) { eventJson.Latitude = eventRecord.Latitude.Value.ToString(); } if (eventRecord.Longitude.HasValue) { eventJson.Longitude = eventRecord.Longitude.Value.ToString(); } model.Rows.Add(eventJson); } return(View("~/Areas/User/Views/Reports/UnitEventsReport.cshtml", model)); }