private async Task RaiseAdvertConfirmedEvent(AdvertConfirmModel model) { var snsTopicUrn = _configuration.GetValue <string>("AdvertApiSnsTopic"); var dbContext = await _advertServiceStore.GetById(model.Id); using (var client = new AmazonSimpleNotificationServiceClient(Amazon.RegionEndpoint.USEast1)) { var message = new AdvertConfirmedMessages { Id = model.Id, Title = dbContext.Title }; var messageJson = JsonConvert.SerializeObject(message); await client.PublishAsync(snsTopicUrn, messageJson); } }
public async Task <IActionResult> Confirm(AdvertConfirmModel model) { try { await _advertServiceStore.Confirm(model); await RaiseAdvertConfirmedEvent(model); } catch (KeyNotFoundException) { return(new NotFoundResult()); } catch (Exception ex) { return(StatusCode(500, ex.Message)); } return(new OkResult()); }
public async Task Confirm(AdvertConfirmModel model) { using (var _client = new AmazonDynamoDBClient(Amazon.RegionEndpoint.USEast1)) { using (var _context = new DynamoDBContext(_client)) { var advert = await _context.LoadAsync <AdvertDynamoDBModel>(model.Id); if (advert == null) { throw new KeyNotFoundException($"Record is not found for corresponding ID = {advert.Id}"); } if (model.Status == AdvertStatus.Active) { advert.Status = AdvertStatus.Active; await _context.SaveAsync(advert); } else { await _context.DeleteAsync <AdvertDynamoDBModel>(advert); } } } }