Пример #1
0
 public async Task InsertOrUpdateAddress(Address address)
 {
     switch (address.ObjectState)
     {
         case ObjectState.Unchanged:
             break;
         case ObjectState.Added:
             _addressRepository.InsertOrUpdate(address);
             _addressRepository.SaveChanges();
             await CreateMatrixForNewAddress(address.Id);
             break;
         case ObjectState.Modified:
             _addressRepository.InsertOrUpdate(address);
             _addressRepository.SaveChanges();
             await UpdateRelatedMatrixEntries(address.Id);
             break;
         case ObjectState.Deleted:
             _addressRepository.Remove(address);
             _addressRepository.SaveChanges();
             RemoveRelatedMatrixEntries(address.Id);
             break;
         default:
             break;
     }
     _addressRepository.SaveChanges();
     _matrixRepository.SaveChanges();
 }
        public async Task AddNewAddressAndUpdateMatrix()
        {
            using (var matrixManager = new MatrixManager())
            {
                var newAddress = new Address()
                {
                    FirstLine = "someplace",
                    SecondLine = "over the rainbow",
                    PostCode = "EC4N 8BH",
                    City = "London",
                    Country = "United Kingdom",
                    IsArchived = false,
                    ObjectState = ObjectState.Added
                };

                await matrixManager.InsertOrUpdateAddress(newAddress);


                Address retrieved;
                IEnumerable<MatrixEntry> matrix;

                using (var context = new RpDbContext())
                {
                    retrieved = context.Addresses.FirstOrDefault(a => a.Id == newAddress.Id);

                    matrix = context.MatrixEntries.Where(me => me.OriginId == retrieved.Id || me.DestinationId == retrieved.Id).ToList();

                    Assert.IsTrue(retrieved != null);
                    Assert.IsTrue(matrix.Count() > 0);

                    context.Addresses.Remove(retrieved);

                    context.MatrixEntries.RemoveRange(matrix);

                    context.SaveChanges();
                }
            }
        }
 public void CreateOrUpdateAddress(int accountId, Address address)
 {
     throw new NotImplementedException();
 }
 public void RemoveAddress(int accountId, Address address)
 {
     throw new NotImplementedException();
 }
Пример #5
0
        private async Task<int> GetUpdatedMatrixEntryValue(Address origin, Address destinatoin)
        {
            var parameters = new DistanceMatrixParameters();
            parameters.Origins.Add(origin.ToString());
            parameters.Destinations.Add(destinatoin.ToString());

            ServiceResponse<int> response;
            try
            {
                response = await _matrixApi.GetAddressInfoAsync(parameters, InfoType.Duration);
                if (response.Success)
                {
                    return response.Value;
                }
            }
            catch (Exception)
            {
                throw;
            }
            throw new Exception("Could not get service response");
        }