示例#1
0
        public void OnNext(T value)
        {
            if (ReferenceEquals(value, null))
            {
                throw new ArgumentNullException(nameof(T));
            }

            var item = new FlashObservationWrapper((FlashObservation)(object)value);

            if (ReferenceEquals(item, null))
            {
                throw new ArgumentNullException(nameof(item));
            }

            try
            {
                var coordinatesWrapper = new CoordinatesWrapper(item.ObservationPoint);

                AddCoordinatesToDatabase(coordinatesWrapper);

                var coordinatesFromDb = GetLastFromDatabase(coordinatesWrapper).Result;

                item.CoordinatesId = coordinatesFromDb.Id;

                AddObservationToDatabase(item);
            }
            catch (Exception ex)
            {
                OnError(ex);
            }
        }
示例#2
0
        private async Task <CoordinatesWrapper> GetLastFromDatabase(CoordinatesWrapper coordinates)
        {
            var item = await _dbContext.CoordinatesWrapper.LastOrDefaultAsync(x => x.X == coordinates.X && x.Y == coordinates.Y);

            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }

            return(item);
        }
示例#3
0
        private void InsertToDatabaseTable()
        {
            using (_dbContext)
            {
                foreach (var flash in _observations)
                {
                    var coordinatesWrapper = new CoordinatesWrapper(flash.ObservationPoint);

                    AddCoordinatesToDatabase(coordinatesWrapper);

                    var coordinatesFromDb = GetLastFromDatabase(coordinatesWrapper).Result;

                    var coordinatesId = flash.CoordinatesId;

                    coordinatesId = coordinatesFromDb.Id;

                    AddObservationToDatabase(flash);
                }
            }
        }
示例#4
0
        private void AddCoordinatesToDatabase(CoordinatesWrapper coordinates)
        {
            _dbContext.CoordinatesWrapper.Add(coordinates);

            _dbContext.SaveChanges();
        }