public IActionResult GetContactsByTag(string tag) { var listOfContacts = _contactListRepository.GetContactsByTag(tag); if (listOfContacts == null) { return(NoContent()); } var result = new List <ContactDto>(); var tagDto = new TagDto(); var numberDto = new NumberDto(); var emailDto = new EmailDto(); foreach (var contact in listOfContacts) { result.Add( new ContactDto { Id = contact.Id, FirstName = contact.FirstName, LastName = contact.LastName, Address = contact.Address, Bookmarked = contact.Bookmarked, Emails = emailDto.ListToDtos(contact.Emails), Numbers = numberDto.ListToDtos(contact.Numbers), Tags = tagDto.ListToDtos(contact.Tags) } ); } return(Ok(result)); }
public async Task <ActionResult <NumberDto> > Post(NumberDto dto) { if (dto == null || dto.Number < 0) { return(BadRequest()); } _logger.LogDebug($"{nameof(Post)} mesasage number {dto.Number}, Id {dto.Id} received "); #region Test Retry //int x = 800; //if (dto.Number >= x) // return Problem($"fake error for value {dto.Number}"); #endregion _semaphore.Wait(); var dtos = _cacheProvider.GetFromCache <List <NumberDto> >(cacheKey); if (dtos == null) { dtos = new List <NumberDto>(); } dtos.Insert(0, dto); _cacheProvider.SetCache(cacheKey, dtos); _semaphore.Release(); return(dto); }
private async void OnNumberGenerated(object sender, NumberGeneratedEventArgs e) { try { _logger.LogDebug($"{nameof(OnNumberGenerated)}: {e.Number}"); var repo = new RandomNumber(e.Number); _repository.Add(repo); if (await _repository.SaveChangesAsync()) { _logger.LogDebug($"{nameof(OnNumberGenerated)}: {e.Number} saved to DB"); } else { _logger.LogWarning($"Failed to save to DB {nameof(OnNumberGenerated)}"); } if (e.Number > 800) { CancellationToken cts = new CancellationTokenSource().Token; //post to endpoint var dto = new NumberDto { Id = repo.RandomNumberId, Number = repo.Number, CreatedAt = repo.CreatedAt }; var json = JsonConvert.SerializeObject(dto); var data = new StringContent(json, Encoding.UTF8, "application/json"); var response = await _clientLocal.PostAsync("api/numbers", data, cts).ConfigureAwait(false); if (response.IsSuccessStatusCode) { //may be log } else { _logger.LogDebug($"StatusCode {response.StatusCode.ToString()} during posting message {dto.ToString()}"); return; } } } catch (Exception ex) { _logger.LogError(ex, $"Error in {nameof(OnNumberGenerated)}"); } }