public async Task <StartActivityResponse> StartActivity(StartActivityRequest activityRequest) { var result = new StartActivityResponse(); try { _bamActivityLogger.Debug($"Starting Stage Activity - {JsonConvert.SerializeObject(activityRequest)}"); activityRequest.Validate(); _client.DefaultRequestHeaders.AddOrReplace(Constants.Headers.BusinessProcess, activityRequest.BusinessProcess); _client.DefaultRequestHeaders.AddOrReplace(Constants.Headers.BusinessTransaction, activityRequest.BusinessTransaction); _client.DefaultRequestHeaders.AddOrReplace(Constants.Headers.CurrentStage, activityRequest.CurrentStage); _client.DefaultRequestHeaders.AddOrReplace(Constants.Headers.MainActivityId, activityRequest.MainActivityId.ToString()); _client.DefaultRequestHeaders.AddOrReplace(Constants.Headers.PreviousStage, activityRequest.PreviousStage); _client.DefaultRequestHeaders.AddOrReplace(Constants.Headers.ArchiveMessage, Convert.ToString(activityRequest.IsArchiveEnabled)); _client.DefaultRequestHeaders.AddOrReplace(Constants.Headers.BatchId, activityRequest.BatchId); _client.DefaultRequestHeaders.AddOrReplace(Constants.Headers.ResourceId, activityRequest.ResourceId); if (activityRequest.MessageHeader == null) { activityRequest.MessageHeader = "{\"Content-Type\":\"application/json\"}"; } if (activityRequest.MessageBody == null) { activityRequest.MessageBody = "{}"; } if (string.IsNullOrEmpty(activityRequest.PreviousStage)) { activityRequest.PreviousStage = "."; } var header = JsonConvert.DeserializeObject <Dictionary <string, string> >(activityRequest.MessageHeader); header["Content-Type"] = "application/json"; var activityContent = new ActivityContent { MessageBody = activityRequest.MessageBody, MessageHeader = activityRequest.MessageHeader }; var uri = $"{_url}/api/{Constants.Operations.StartActivity}"; var data = new StringContent(JsonConvert.SerializeObject(activityContent), Encoding.UTF8, "application/json"); var response = await _client.PostAsync(uri, data); if (response.IsSuccessStatusCode) { result = JsonConvert.DeserializeObject <StartActivityResponse>(response.Content.ReadAsStringAsync().Result); } } catch (Exception ex) { _bamActivityLogger.Error(ex.Message); } return(result); }
public static bool IsValid(this StartActivityResponse activityResponse) { if (activityResponse.MainActivityId != Guid.Empty && activityResponse.StageActivityId != Guid.Empty) { return(true); } return(false); }