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(); }
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"); }