Exemplo n.º 1
0
        public async Task <IActionResult> GetUnitEvents(int unitId)
        {
            var unitEvents = new List <UnitEventJson>();

            if (!await _authorizationService.CanUserViewUnitAsync(UserId, unitId))
            {
                Unauthorized();
            }

            var department = await _departmentsService.GetDepartmentByIdAsync(DepartmentId, false);

            var events = await _unitsService.GetAllStatesForUnitAsync(unitId);

            foreach (var e in events)
            {
                var unitEvent = new UnitEventJson();
                unitEvent.EventId   = e.UnitStateId;
                unitEvent.UnitId    = e.UnitId;
                unitEvent.UnitName  = e.Unit.Name;
                unitEvent.State     = StringHelpers.GetDescription(((UnitStateTypes)e.State));
                unitEvent.Timestamp = e.Timestamp.TimeConverterToString(department);
                unitEvent.Note      = e.Note;

                if (((UnitStateTypes)e.State) == UnitStateTypes.Enroute)
                {
                    if (e.DestinationId.HasValue)
                    {
                        var station = await _departmentGroupsService.GetGroupByIdAsync(e.DestinationId.Value, false);

                        if (station != null)
                        {
                            unitEvent.DestinationName = station.Name;
                        }
                        else
                        {
                            unitEvent.DestinationName = "Station";
                        }
                    }
                    else
                    {
                        unitEvent.DestinationName = "Station";
                    }
                }
                else if (((UnitStateTypes)e.State) == UnitStateTypes.Responding || ((UnitStateTypes)e.State) == UnitStateTypes.Committed ||
                         ((UnitStateTypes)e.State) == UnitStateTypes.OnScene || ((UnitStateTypes)e.State) == UnitStateTypes.Staging ||
                         ((UnitStateTypes)e.State) == UnitStateTypes.Released || ((UnitStateTypes)e.State) == UnitStateTypes.Cancelled)
                {
                    if (e.DestinationId.HasValue)
                    {
                        var call = await _callsService.GetCallByIdAsync(e.DestinationId.Value, false);

                        if (call != null)
                        {
                            unitEvent.DestinationName = call.Name;
                        }
                        else
                        {
                            unitEvent.DestinationName = "Scene";
                        }
                    }
                }

                if (e.LocalTimestamp.HasValue)
                {
                    unitEvent.LocalTimestamp = e.LocalTimestamp.Value.ToString();
                }

                if (e.Latitude.HasValue)
                {
                    unitEvent.Latitude = e.Latitude.Value.ToString();
                }

                if (e.Longitude.HasValue)
                {
                    unitEvent.Longitude = e.Longitude.Value.ToString();
                }

                if (e.Accuracy.HasValue)
                {
                    unitEvent.Accuracy = e.Accuracy.Value.ToString();
                }

                if (e.Altitude.HasValue)
                {
                    unitEvent.Altitude = e.Altitude.Value.ToString();
                }

                if (e.AltitudeAccuracy.HasValue)
                {
                    unitEvent.AltitudeAccuracy = e.AltitudeAccuracy.Value.ToString();
                }

                if (e.Speed.HasValue)
                {
                    unitEvent.Speed = e.Speed.Value.ToString();
                }

                if (e.Heading.HasValue)
                {
                    unitEvent.Heading = e.Heading.Value.ToString();
                }

                unitEvents.Add(unitEvent);
            }

            return(Json(unitEvents));
        }