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); }
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); }