/// <summary> /// Executes the specified workflow. /// </summary> /// <param name="rockContext">The rock context.</param> /// <param name="action">The action.</param> /// <param name="entity">The entity.</param> /// <param name="errorMessages">The error messages.</param> /// <returns></returns> public override bool Execute(RockContext rockContext, WorkflowAction action, Object entity, out List <string> errorMessages) { errorMessages = new List <string>(); string providerGuid = GetAttributeValue(action, "Provider"); if (!string.IsNullOrWhiteSpace(providerGuid)) { var provider = BackgroundCheckContainer.GetComponent(providerGuid); if (provider != null) { var personAttribute = AttributeCache.Read(GetAttributeValue(action, "PersonAttribute").AsGuid()); var ssnAttribute = AttributeCache.Read(GetAttributeValue(action, "SSNAttribute").AsGuid()); var requestTypeAttribute = AttributeCache.Read(GetAttributeValue(action, "RequestTypeAttribute").AsGuid()); var billingCodeAttribute = AttributeCache.Read(GetAttributeValue(action, "BillingCodeAttribute").AsGuid()); return(provider.SendRequest(rockContext, action.Activity.Workflow, personAttribute, ssnAttribute, requestTypeAttribute, billingCodeAttribute, out errorMessages)); } else { errorMessages.Add("Invalid Background Check Provider!"); } } else { errorMessages.Add("Invalid Background Check Provider Guid!"); } return(false); }
/// <summary> /// Raises the <see cref="E:System.Web.UI.Control.Load" /> event. /// </summary> /// <param name="e">The <see cref="T:System.EventArgs" /> object that contains the event data.</param> protected override void OnLoad(EventArgs e) { base.OnLoad(e); RockContext rockContext = new RockContext(); EntityTypeService entityTypeService = new EntityTypeService(rockContext); var assembly = typeof(org.secc.Trak1.BackgroundCheck.Trak1).AssemblyQualifiedName; var entity = entityTypeService.Queryable().Where(et => et.AssemblyName == assembly).FirstOrDefault(); var providerGuid = entity.Guid; var provider = BackgroundCheckContainer.GetComponent(providerGuid.ToString()); var trak1 = (org.secc.Trak1.BackgroundCheck.Trak1)provider; var packages = trak1.GetPackageList(); foreach (var package in packages) { PanelWidget panelWidget = new PanelWidget() { Title = package.PackageName, Expanded = true }; phPackages.Controls.Add(panelWidget); var sb = new StringBuilder(); sb.Append("<ul>"); sb.AppendFormat("<li>Price: {0}</li>", package.PackagePrice); sb.AppendFormat("<li>Description: {0}</li>", package.PackageDescription); sb.Append("<li><b>Components:</b></li>"); sb.Append("<ul>"); foreach (var component in package.Components) { sb.AppendFormat("<li><b>{0}</b></li>", component.ComponentName); sb.AppendFormat("<li>Description: {0}</li>", component.ComponentDescription); if (component.RequiredFields.Any()) { sb.Append("<li><b>Required Fields:</b></li>"); sb.Append("<ul>"); foreach (var requiredField in component.RequiredFields) { sb.AppendFormat("<li>Name: {0}</li>", requiredField.Name); sb.Append("<ul>"); sb.AppendFormat("<li>Type: {0}</li>", requiredField.Type); sb.AppendFormat("<li>Length: {0}</li>", requiredField.Length); sb.AppendFormat("<li>Description: {0}</li>", requiredField.Description); sb.Append("</ul>"); } sb.Append("</ul>"); } } sb.Append("</ul>"); sb.Append("</ul>"); LiteralControl ltInfo = new LiteralControl { Text = sb.ToString() }; panelWidget.Controls.Add(ltInfo); } }
/// <summary> /// Executes the specified workflow. /// </summary> /// <param name="rockContext">The rock context.</param> /// <param name="action">The action.</param> /// <param name="entity">The entity.</param> /// <param name="errorMessages">The error messages.</param> /// <returns></returns> public override bool Execute(RockContext rockContext, WorkflowAction action, Object entity, out List <string> errorMessages) { errorMessages = new List <string>(); string providerGuid = GetAttributeValue(action, "Provider"); if (!string.IsNullOrWhiteSpace(providerGuid)) { var provider = BackgroundCheckContainer.GetComponent(providerGuid); if (provider != null) { BackgroundCheckService backgroundCheckService = new BackgroundCheckService(rockContext); var backgroundCheck = backgroundCheckService.Queryable().Where(b => b.WorkflowId == action.Activity.Workflow.Id).FirstOrDefault(); if (backgroundCheck == null) { //If for some reason a background check entity isn't available //Add a log and set the report Status To Error. //This allows the workflow to handle issues gracefully action.AddLogEntry("No valid background check exists for this workflow", true); SetWorkflowAttributeValue(action, GetAttributeValue(action, "ReportStatus").AsGuid(), "Error"); return(true); } var transactionId = backgroundCheck.RequestId; var statusURL = provider.GetAttributeValue("StatusURL"); var subscriberCode = Encryption.DecryptString(provider.GetAttributeValue("SubscriberCode")); var companyCode = Encryption.DecryptString(provider.GetAttributeValue("CompanyCode")); Trak1ReportStatus status = null; var resource = string.Format("/{0}/{1}/{2}", subscriberCode, companyCode, transactionId); using (var client = new HttpClient(new HttpClientHandler())) { client.BaseAddress = new Uri(statusURL + resource); var clientResponse = client.GetAsync("").Result.Content.ReadAsStringAsync().Result; status = JsonConvert.DeserializeObject <Trak1ReportStatus>(clientResponse); } SetWorkflowAttributeValue(action, GetAttributeValue(action, "ReportStatus").AsGuid(), status.ReportStatus); backgroundCheck.Status = status.ReportStatus; SetWorkflowAttributeValue(action, GetAttributeValue(action, "HitColor").AsGuid(), status.HitColor); backgroundCheck.RecordFound = status.HitColor == "Green"; var reportURL = provider.GetAttributeValue("ReportURL"); Trak1Report response = null; using (var client = new HttpClient(new HttpClientHandler())) { client.BaseAddress = new Uri(reportURL + resource); var clientResponse = client.GetAsync("").Result.Content.ReadAsStringAsync().Result; response = JsonConvert.DeserializeObject <Trak1Report>(clientResponse); } SetWorkflowAttributeValue(action, GetAttributeValue(action, "ReportUrl").AsGuid(), response.ReportUrl); backgroundCheck.ResponseDate = Rock.RockDateTime.Now; backgroundCheck.ResponseData = response.ReportUrl; return(true); } else { errorMessages.Add("Invalid Background Check Provider!"); } } else { errorMessages.Add("Invalid Background Check Provider Guid!"); } return(false); }