Example #1
0
        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));
        }