Event class for storage of each background event.
        public static BackgroundEvent BeaconEventStateFromString(string s)
        {
            if (string.IsNullOrEmpty(s))
            {
                return(null);
            }

            string[] ss = s.Split(new char[] { ',' });
            if (ss.Length < 3)
            {
                return(null);
            }

            BackgroundEvent be = new BackgroundEvent();

            be.BeaconId  = ss[0];
            be.LastEvent = (BeaconEventType)int.Parse(ss[1]);
            be.EventTime = DateTimeOffset.FromUnixTimeMilliseconds(long.Parse(ss[2]));
            return(be);
        }
        private bool IsValidEnterEvent(BackgroundEvent history, Beacon beacon, int outOfRangeDb)
        {
            if (history == null)
            {
                return true;
            }

            if(!SuppressBurst)
            {
                return history.LastEvent == BeaconEventType.Exit || !IsOutOfRange(outOfRangeDb, beacon) && history.EventTime.AddMilliseconds(AppSettings.BeaconExitTimeout) < DateTimeOffset.Now;
            }
            return !IsOutOfRange(outOfRangeDb, beacon) && history.EventTime.AddMilliseconds(AppSettings.BeaconExitTimeout) < DateTimeOffset.Now;
        }
        public static BackgroundEvent BeaconEventStateFromString(string s)
        {
            if (string.IsNullOrEmpty(s))
            {
                return null;
            }

            string[] ss = s.Split(new char[] { ',' });
            if (ss.Length < 3)
            {
                return null;
            }

            BackgroundEvent be = new BackgroundEvent();
            be.BeaconId = ss[0];
            be.LastEvent = (BeaconEventType)int.Parse(ss[1]);
            be.EventTime = DateTimeOffset.FromUnixTimeMilliseconds(long.Parse(ss[2]));
            return be;
        }
 public async Task<bool> SaveBeaconEventState(string pid, BeaconEventType enter)
 {
     LastEventState[pid] = new BackgroundEvent() {BeaconId = pid, EventTime = DateTimeOffset.Now, LastEvent = enter};
     return true;
 }