public static RtppmData ParsePPMData(dynamic data) { var ppmData = new RtppmData(); ppmData.Timestamp = UnixTsToDateTime((double)data.snapshotTStamp); foreach (var natSector in data.NationalPage.Sector) { ppmData.Sectors.Add(ParsePPMNationalRecord(natSector)); } ppmData.NationalPPM = ParsePPMOperatorRecord(data.NationalPage.NationalPPM); foreach (var opSector in data.OperatorPage) { PPMRecord record = ParsePPMOperatorRecord(opSector.Operator); try { if (opSector.OprServiceGrp != null) { if (opSector.OprServiceGrp is JArray) { foreach (var opServiceGroup in opSector.OprServiceGrp) { record.ServiceGroups.Add(ParsePPMServiceGroupRecord(opServiceGroup)); } } else { record.ServiceGroups.Add(ParsePPMServiceGroupRecord(opSector.OprServiceGrp)); } } } catch { } ppmData.Operators.Add(record); } return ppmData; }
public void CachePPMData(RtppmData data) { if (data == null) return; Trace.TraceInformation("Saving PPM Data for {0}", data.Timestamp); if (data.NationalPPM != null) { var nationalPPMId = _sectors .Where(s => s.OperatorCode == null) .Where(s => s.SectorCode == null) .Select(s => s.PPMSectorId) .SingleOrDefault(); if (nationalPPMId != null && nationalPPMId != Guid.Empty) { SavePPMData(data.NationalPPM, nationalPPMId, data.Timestamp); } else { Trace.TraceError("PPM: Could not find National PPM in Database"); } } if (data.Sectors != null) { foreach (var nationalSector in data.Sectors) { var id = _sectors .Where(s => s.OperatorCode == null) .Where(s => s.SectorCode == nationalSector.Code) .Select(s => s.PPMSectorId) .SingleOrDefault(); if (id != null && id != Guid.Empty) { SavePPMData(nationalSector, id, data.Timestamp); } else { Trace.TraceError("PPM: Could not find Sector {0} in Database", nationalSector.Code); } } } if (data.Operators != null) { foreach (var toc in data.Operators) { var id = _sectors .Where(s => Convert.ToByte(s.OperatorCode) == Convert.ToByte(toc.Code)) .Where(s => s.SectorCode == null) .Select(s => s.PPMSectorId) .SingleOrDefault(); if (id != null && id != Guid.Empty) { SavePPMData(toc, id, data.Timestamp); } else { Trace.TraceError("PPM: Could not find TOC {0} in Database", toc.Code); } foreach (var tocSector in toc.ServiceGroups) { var sectorId = _sectors .Where(s => Convert.ToByte(s.OperatorCode) == Convert.ToByte(toc.Code)) .Where(s => s.SectorCode != null) .Where(s => s.SectorCode.Equals(tocSector.Code, StringComparison.InvariantCultureIgnoreCase)) .Where(s => s.Description.Equals(tocSector.Name, StringComparison.InvariantCultureIgnoreCase)) .Select(s => s.PPMSectorId) .SingleOrDefault(); if (sectorId != null && sectorId != Guid.Empty) { SavePPMData(tocSector, sectorId, data.Timestamp); } else { Trace.TraceError("PPM: Could not find TOC {0} Sector {1}-{2} in Database", toc.Code, tocSector.Name, tocSector.Code); } } } } }