public async Task Consume(ConsumeContext <IEventClusterCloseRequested> context) { try { _logger.LogDebug($"EventClusterCloseRequestedConsumer: Retrieved close message for event cluster '{context.Message.EventClusterId}'"); EventClusterCloseModel closeEvent = new EventClusterCloseModel() { EventClusterId = context.Message.EventClusterId, ClosureDate = context.Message.ClosureDate, EndDate = context.Message.EndDate }; var eventCluster = await _eventClusterRestService.CloseEventCluster(closeEvent); if (eventCluster != null && eventCluster.EventClusterId != Guid.Empty) { //Push message to Service bus queue _logger.LogDebug($"EventClusterCloseRequestedConsumer: Event closed successfully."); await context.Publish(new EventClusterClosedEvent() { EventCluster = eventCluster }); return; } _logger.LogError("EventClusterCloseRequestedConsumer: The event cluster could not be closed."); throw new Exception("The event cluster could not be closed."); } catch (Exception e) { _logger.LogError($"EventClusterCloseRequestedConsumer: {e.Message}"); throw e; } }
/// <summary> /// Close an Event Cluster /// </summary> /// <param name="eventObj">EventClusterCloseModel</param> /// <returns>EventClusterModel</returns> public async Task <EventClusterModel> CloseEventCluster(EventClusterCloseModel eventObj) { EventClusterDAO eventCluster = await _repoEventClusters.GetItemAsync(eventObj.EventClusterId); eventCluster.ClosureDate = eventObj.ClosureDate; eventCluster.EndDate = eventObj.EndDate; try { await _repoEventClusters.UpdateItemAsync(eventCluster); } catch (DocumentClientException e) { //Update concurrency issue, retrying if (e.StatusCode == HttpStatusCode.PreconditionFailed) { await CloseEventCluster(eventObj); } throw e; } var output = _mapper.Map <EventClusterModel>(eventCluster); output.Events = output.Events.Take(3); return(output); }
protected EventClusterModel MockEventClusterClose(EventClusterCloseModel model) { if (model == null) { return(null); } if (model.EventClusterId == Guid.Empty) { return(new EventClusterModel()); } return(new EventClusterModel() { EventClusterId = model.EventClusterId != Guid.Empty ? model.EventClusterId : Guid.Empty }); }
public async Task <EventClusterModel> CloseEventCluster(EventClusterCloseModel eventObj) { RestRequest request = await PrepareQuery("EventClusters/Close", Method.PUT); request.AddParameter("application/json", JsonConvert.SerializeObject(eventObj), ParameterType.RequestBody); var queryResult = await _client.ExecuteTaskAsync <EventClusterModel>(request); if (queryResult.IsSuccessful) { return(queryResult.Data); } else { _logger.LogError($"CloseEventCluster: Error while closing an event cluster: {queryResult.StatusCode}"); } return(null); }
public async Task <IActionResult> CloseEventCluster([FromBody] EventClusterCloseModel eventObj) { var result = await _eventDataManager.CloseEventCluster(eventObj); return(Ok(result)); }