private async Task <Dictionary <Guid, Point> > ReadStorage(Dictionary <string, Tag> tags) { if (await _storageClient.ExistsAsync(_storagePath)) { var pointsString = await _storageClient.ReadAllAsync(_storagePath); var pointsDataContractList = pointsString == string.Empty ? new PointsStorageDataContract() : JsonConvert.DeserializeObject <PointsStorageDataContract>(pointsString); var duplicatePoints = pointsDataContractList .GroupBy(point => point.Id) .Where(g => g.Count() > 1); if (duplicatePoints.Any()) { throw new InvalidOperationException( $"Duplicate point ids in config: {string.Join(", ", duplicatePoints)}"); } return(pointsDataContractList.ToDictionary( point => point.Id, point => Point.FromDataContract(point, tags))); } else { return(new Dictionary <Guid, Point>()); } }