Exemple #1
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var analog = ( CheckInStateAnalog )serializer.Deserialize(reader, typeof(CheckInStateAnalog));

            var localkey     = analog.LocalKey;
            var memoryAnalog = CheckInStateSessionManager.Get(localkey);

            if (memoryAnalog != null)
            {
                //We have the state in memory
                analog = memoryAnalog;
            }
            else
            {
                //We have to recreate the state from our data
                HydrateStatus(analog.CheckIn);
            }

            var state = new CheckInState(analog.DeviceId, analog.CheckinTypeId, analog.ConfiguredGroupTypes);

            state.CheckInType     = new CheckinType(analog.CheckinTypeId ?? 0);
            state.CheckIn         = analog.CheckIn;
            state.ManagerLoggedIn = analog.ManagerLoggedIn;
            state.Messages        = analog.Messages;
            return(state);
        }
Exemple #2
0
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            CheckInState state;

            if (value is CheckInState)
            {
                state = ( CheckInState )value;
            }
            else
            {
                return;
            }

            var localKey = Guid.NewGuid().ToString();

            var local = new CheckInStateAnalog
            {
                LocalKey             = localKey,
                CheckIn              = state.CheckIn,
                CheckinTypeId        = state.CheckinTypeId,
                ConfiguredGroupTypes = state.ConfiguredGroupTypes,
                DeviceId             = state.DeviceId,
                ManagerLoggedIn      = state.ManagerLoggedIn,
                Messages             = state.Messages,
                ExpiresDateTime      = Rock.RockDateTime.Now.AddMinutes(20)
            };

            CheckInStateSessionManager.Set(local);

            var stored = new CheckInStateAnalog()
            {
                LocalKey             = localKey,
                CheckIn              = DehydrateStatus(state.CheckIn),
                CheckinTypeId        = state.CheckinTypeId,
                ConfiguredGroupTypes = state.ConfiguredGroupTypes,
                DeviceId             = state.DeviceId,
                ManagerLoggedIn      = state.ManagerLoggedIn,
                Messages             = state.Messages,
                ExpiresDateTime      = Rock.RockDateTime.Now.AddMinutes(20)
            };

            serializer.Serialize(writer, stored);
        }