public virtual async Task <Contact> GetContactByIdAsync(string contactId) { if (contactId == null) { throw new ArgumentNullException(nameof(contactId)); } Contact result = null; var cacheKey = CacheKey.With(GetType(), "GetContactByIdAsync", contactId); var dto = await _memoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) => { var contactDto = await _customerApi.GetContactByIdAsync(contactId); if (contactDto != null) { cacheEntry.AddExpirationToken(CustomerCacheRegion.CreateChangeToken(contactDto.Id)); cacheEntry.AddExpirationToken(_apiChangesWatcher.CreateChangeToken()); } return(contactDto); }); if (dto != null) { result = dto.ToContact(); if (!dto.Organizations.IsNullOrEmpty()) { //Load contact organization result.Organization = await GetOrganizationByIdAsync(dto.Organizations.FirstOrDefault()); } } return(result); }
public virtual async Task <Contact> GetContactByIdAsync(string contactId) { Contact result = null; var cacheKey = CacheKey.With(GetType(), "GetContactByIdAsync", contactId); var dto = await _memoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) => { var contactDto = await _customerApi.GetContactByIdAsync(contactId); if (contactDto != null) { cacheEntry.AddExpirationToken(CustomerCacheRegion.CreateChangeToken(contactDto.Id)); } return(contactDto); }); if (dto != null) { result = dto.ToContact(); result.Orders = LazyLoadCustomerOrders(result); result.QuoteRequests = LazyLoadCustomerQuotes(result); result.Subscriptions = LazyLoadCustomerSubscriptions(result); } return(result); }