/// <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);
            }
        }
Exemple #3
0
        /// <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);
        }