public async Task <MirrorStatus> RefreshCachedPOI(int poiId) { var mirrorStatus = await Task.Run <MirrorStatus>(() => { var dataModel = new OCMEntities(); var poiModel = dataModel.ChargePoints.FirstOrDefault(p => p.ID == poiId); var poiCollection = database.GetCollection <POIMongoDB>("poi"); var query = Query.EQ("ID", poiId); var removeResult = poiCollection.Remove(query); System.Diagnostics.Debug.WriteLine("POIs removed from cache [" + poiId + "]:" + removeResult.DocumentsAffected); if (poiModel != null) { var cachePOI = POIMongoDB.FromChargePoint(OCM.API.Common.Model.Extensions.ChargePoint.FromDataModel(poiModel)); if (cachePOI.AddressInfo != null) { cachePOI.SpatialPosition = new GeoJsonPoint <GeoJson2DGeographicCoordinates>(new GeoJson2DGeographicCoordinates(cachePOI.AddressInfo.Longitude, cachePOI.AddressInfo.Latitude)); } poiCollection.Insert <POIMongoDB>(cachePOI); } else { //poi not present in master DB, we've removed it from cache } long numPOIInMasterDB = dataModel.ChargePoints.LongCount(); return(RefreshMirrorStatus(poiCollection.Count(), 1, numPOIInMasterDB)); }); return(mirrorStatus); }
public static POIMongoDB FromChargePoint(OCM.API.Common.Model.ChargePoint cp, POIMongoDB poi = null) { if (poi == null) { poi = new POIMongoDB(); } poi.AddressInfo = cp.AddressInfo; poi.Chargers = cp.Chargers; poi.Connections = cp.Connections; poi.DataProvider = cp.DataProvider; poi.DataProviderID = cp.DataProviderID; poi.DataProvidersReference = cp.DataProvidersReference; poi.DataQualityLevel = cp.DataQualityLevel; if (cp.DateCreated != null) { poi.DateCreated = (DateTime?)DateTime.SpecifyKind(cp.DateCreated.Value, DateTimeKind.Utc); } if (cp.DateLastConfirmed != null) { poi.DateLastConfirmed = (DateTime?)DateTime.SpecifyKind(cp.DateLastConfirmed.Value, DateTimeKind.Utc); } if (cp.DateLastStatusUpdate != null) { poi.DateLastStatusUpdate = (DateTime?)DateTime.SpecifyKind(cp.DateLastStatusUpdate.Value, DateTimeKind.Utc); } if (cp.DatePlanned != null) { poi.DatePlanned = (DateTime?)DateTime.SpecifyKind(cp.DatePlanned.Value, DateTimeKind.Utc); } poi.GeneralComments = cp.GeneralComments; poi.ID = cp.ID; poi.MediaItems = cp.MediaItems; poi.MetadataTags = cp.MetadataTags; poi.MetadataValues = cp.MetadataValues; poi.NumberOfPoints = cp.NumberOfPoints; poi.NumberOfPoints = cp.NumberOfPoints; poi.OperatorID = cp.OperatorID; poi.OperatorInfo = cp.OperatorInfo; poi.OperatorsReference = cp.OperatorsReference; poi.ParentChargePointID = cp.ParentChargePointID; poi.StatusType = cp.StatusType; poi.StatusTypeID = cp.StatusTypeID; poi.SubmissionStatus = cp.SubmissionStatus; poi.SubmissionStatusTypeID = cp.SubmissionStatusTypeID; poi.UsageCost = cp.UsageCost; poi.UsageType = cp.UsageType; poi.UsageTypeID = cp.UsageTypeID; poi.UserComments = cp.UserComments; poi.LevelOfDetail = cp.LevelOfDetail; poi.UUID = cp.UUID; return(poi); }
public void InsertAllPOI(List <OCM.API.Common.Model.ChargePoint> poiList, MongoCollection <POIMongoDB> poiCollection) { var mongoDBPoiList = new List <POIMongoDB>(); foreach (var poi in poiList) { var newPoi = POIMongoDB.FromChargePoint(poi); if (newPoi.AddressInfo != null) { newPoi.SpatialPosition = new GeoJsonPoint <GeoJson2DGeographicCoordinates>(new GeoJson2DGeographicCoordinates(newPoi.AddressInfo.Longitude, newPoi.AddressInfo.Latitude)); } mongoDBPoiList.Add(newPoi); } poiCollection.InsertBatch(mongoDBPoiList); }
public void InsertAllPOI(List <OCM.API.Common.Model.ChargePoint> poiList, MongoCollection <POIMongoDB> poiCollection) { using (server.RequestStart(database)) { foreach (var poi in poiList) { var newPoi = POIMongoDB.FromChargePoint(poi); if (newPoi.AddressInfo != null) { newPoi.SpatialPosition = new GeoJsonPoint <GeoJson2DGeographicCoordinates>(new GeoJson2DGeographicCoordinates(newPoi.AddressInfo.Longitude, newPoi.AddressInfo.Latitude)); } poiCollection.Insert(newPoi); } } }