public MingleWorkflowResponse startMingleWorkflow(MingleWorkflowRequest mingleWorkflowRequest) { return(this.integrationService.StartMingleWorkflow(mingleWorkflowRequest)); }
public MingleWorkflowResponse StartMingleWorkflow(MingleWorkflowRequest req) { var uriBuilder = new UriBuilder(this._tokenObject.IonApiUrl + "/Mingle/SocialService.Svc/User/Detail"); NLogLogger.Trace(uriBuilder.Uri.ToString(), "StartMingleWorkflow ionApiUrl"); NLogLogger.Trace(this._bearerToken, "StartMingleWorkflow bearerToken"); if (this._bearerToken == null) { var error = new Errorlist() { Severity = 1, Code = 400 }; var errorResponse = new MingleWorkflowResponse() { ErrorList = new[] { error }, Status = 0 }; NLogLogger.Error("bearertoken not harvested from request header", "StartMingleWorkflow"); return(errorResponse); } var bearerTokenObject = JsonConvert.DeserializeObject <BearerTokenObject>(this._bearerToken); if (this._progressConfiguration.InforOverrideHttps) { ServicePointManager.ServerCertificateValidationCallback += ValidateRemoteCertificate; } ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12; //get ming.le user guid string userGuid = null; var webHeaderCollection = new WebHeaderCollection { { "Authorization", $"Bearer {bearerTokenObject.access_token}" }, { "Accept", "application/json" }, { "Content-Type", "application/json" } }; var responseObject = MakeWebCall.DoWebCallString <MingleUserDetailResponse>(uriBuilder.Uri, false, string.Empty, webHeaderCollection, out var inError, NLogLogger); if (!inError) { if (responseObject.UserDetailList.Length == 1) { userGuid = responseObject.UserDetailList[0].UserGUID; var emailParam = new Startparameter { Name = "EmailAddr", SerializedValue = responseObject.UserDetailList[0].Email }; req.StartParameters = (req.StartParameters ?? Enumerable.Empty <Startparameter>()).Concat(Enumerable.Repeat(emailParam, 1)).ToArray(); } } else { var error = new Errorlist() { Severity = 1, Code = 500, Message = "User Details Error" }; var errorResponse = new MingleWorkflowResponse() { ErrorList = new[] { error }, Status = 0 }; NLogLogger.Error($"Error retrieving UserGUID"); return(errorResponse); } //get customer details, add to payload var customerNumber = req.StartParameters.SingleOrDefault(item => item.Name == "CustomerNumber"); if (customerNumber != null) { var arscRepository = new ArscRepository(this._connection); var arsc = arscRepository.Get(0, int.Parse(customerNumber.SerializedValue), false, 1, ""); var custNameParam = new Startparameter { Name = "CustomerName", SerializedValue = arsc.name }; req.StartParameters = (req.StartParameters ?? Enumerable.Empty <Startparameter>()).Concat(Enumerable.Repeat(custNameParam, 1)).ToArray(); } webHeaderCollection = new WebHeaderCollection { { "Accept", "application/json" }, { "Content-Type", "application/json" } }; uriBuilder = new UriBuilder(uriBuilder.Uri + $"/Mingle/IONDataService.Svc/User/{userGuid}/Workflow/Start"); var returnObject = MakeWebCall.DoWebCallString <MingleWorkflowResponse>(uriBuilder.Uri, true, JsonConvert.SerializeObject(req), webHeaderCollection, out inError, NLogLogger); if (inError) { var error = new Errorlist() { Severity = 1, Code = 500, Message = "User Details Error" }; var errorResponse = new MingleWorkflowResponse() { ErrorList = new[] { error }, Status = 0 }; NLogLogger.Error($"Error starting workflow"); return(errorResponse); } return(returnObject); }