public static RegisteredCredential From(EthEventDTO eventDto) { var ret = new RegisteredCredential() { IsRevoked = false, HashId = eventDto.IndexedParameters[0].Value, CitizenAddress = eventDto.NonIndexedParameters[0].Value, SubjectHashId = eventDto.NonIndexedParameters[1].Value, StartDate = DateTimeOffset.FromUnixTimeMilliseconds(long.Parse(eventDto.NonIndexedParameters[2].Value)).DateTime.ToUniversalTime(), CredentialCreation = DateTimeOffset.FromUnixTimeMilliseconds(long.Parse(eventDto.NonIndexedParameters[3].Value)).DateTime.ToUniversalTime(), Sex = Enum.Parse <Sex>(eventDto.NonIndexedParameters[4].Value), Age = short.Parse(eventDto.NonIndexedParameters[5].Value), CredentialType = Enum.Parse <CredentialType>(eventDto.NonIndexedParameters[7].Value), Reason = Enum.Parse <InterruptionReason>(eventDto.NonIndexedParameters[8].Value) }; var hasher = new Geohasher(); var hash = Hex.HexToString(eventDto.NonIndexedParameters[6].Value); var decoded = hasher.Decode(hash); ret.Location = new Point(decoded.Item2, decoded.Item1); ret.Lat = ret.Location.Coordinate.X; ret.Lon = ret.Location.Coordinate.Y; SetSymptoms(ret, eventDto.NonIndexedParameters[9].Value); return(ret); }
private static void SetSymptoms(RegisteredCredential ret, string hex) { if (ret.CredentialType != CredentialType.Symptoms) { return; } var byteR = Hex.HexToBinary(hex).ToCharArray(); if (byteR[0] == '0') { ret.HasNoSymptoms = true; return; } else { ret.HasSymptoms = true; } if (byteR[1] == '1') { ret.HasFever = true; } if (byteR[2] == '1') { ret.HasCought = true; } if (byteR[3] == '1') { ret.HasBreathingIssues = true; } if (byteR[4] == '1') { ret.HasLossSmell = true; } if (byteR[5] == '1') { ret.HasHeadache = true; } if (byteR[6] == '1') { ret.HasMusclePain = true; } if (byteR[7] == '1') { ret.HasSoreThroat = true; } }