Example #1
0
        /// <summary>
        /// Executes the activity.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <returns>
        /// A <see cref="BuildVersionDetails"/> instance representing the generated version.
        /// </returns>
        protected override BuildVersionDetails Execute(CodeActivityContext context)
        {
            // Validate required input properties.
            var connectionString = DatabaseConnectionString.Get(context);

            if (string.IsNullOrWhiteSpace(connectionString))
            {
                throw new InvalidOperationException("The DatabaseConnectionString property is required and cannot be null, empty or whitespace.");
            }

            var projectName = ProjectName.Get(context);

            if (string.IsNullOrWhiteSpace(projectName))
            {
                throw new InvalidOperationException("The ProjectName property is required and cannot be null, empty or whitespace.");
            }

            var projectConfigName = ProjectConfigName.Get(context);

            if (string.IsNullOrWhiteSpace(projectConfigName))
            {
                throw new InvalidOperationException("The ProjectConfigName property is required and cannot be null, empty or whitespace.");
            }

            var buildDetail         = context.GetExtension <IBuildDetail>();
            var buildDefinitionName = buildDetail.BuildDefinition.Name;
            var commandLog          = new CodeActivityContextCommandLog(context);
            var lockTimeoutSeconds  = LockTimeoutSeconds.Get(context);
            var requestedBy         = buildDetail.RequestedBy;
            var teamProject         = buildDetail.TeamProject;

            var command =
                new CreateVersionCommand
            {
                BuildDefinitionName = buildDefinitionName,
                CommandLog          = commandLog,
                ConnectionString    = connectionString,
                LockTimeoutSeconds  = lockTimeoutSeconds,
                ProjectConfigName   = projectConfigName,
                ProjectName         = projectName,
                RequestedBy         = requestedBy,
                TeamProjectName     = teamProject
            };

            var versionDetails = command.Execute();

            // Execute optional features.
            SetBuildNumber(context, buildDetail, versionDetails);
            SetDropLocation(context, buildDetail, versionDetails, projectName);

            // Save any changes to the build detail instance.
            buildDetail.Save();

            // Map the IVersionDetails instance to an instance of BuildVersionDetails.
            var buildVersionDetails = BuildVersionDetails.FromIVersionDetails(versionDetails);

            // Return the result.
            return(buildVersionDetails);
        }
        protected override void Execute(CodeActivityContext context)
        {
            //var inputData = InputCreditData.Get(context);

            List <string> listApprovedCreditStatus = new List <string>
            {
                "Approved", "Disbursed", "Disbursing", "Disbursing&Repaying", "Effective", "Fully Disbursed", "Fully Repaid", "Repaid", "Repaying", "Signed"
            };

            WebUtility webUtility   = new WebUtility(ApiEndpoint);
            var        scoreRequest = new
            {
                Inputs = new Dictionary <string, List <Dictionary <string, string> > >()
                {
                    {
                        "input1",
                        new List <Dictionary <string, string> >()
                        {
                            new Dictionary <string, string>()
                            {
                                {
                                    "Region", Region.ToString().Replace("_", " ")
                                },
                                {
                                    "Country", Country.Get(context)
                                },
                                {
                                    "Borrower", Borrower.Get(context)
                                },
                                {
                                    "Project Name", ProjectName.Get(context)
                                },
                                {
                                    "Original Principal Amount", PrincipalAmount.Get(context).ToString()
                                },
                                {
                                    "Credit Status", ""
                                }
                            }
                        }
                    },
                },
                GlobalParameters = new Dictionary <string, string>()
                {
                }
            };

            try
            {
                string  jsonStringInput = JsonConvert.SerializeObject(scoreRequest);
                var     responseOutput  = Task.Run(async() => await webUtility.PostAsync(bodyAsJsonString: jsonStringInput, token: ApiKey));
                JObject jsonResponse    = JObject.Parse(responseOutput.Result);

                string predictedStatus = jsonResponse.SelectToken("$..output1[0]")["Scored Labels"].ToString();
                string grantStatus     = "";
                if (listApprovedCreditStatus.Contains(predictedStatus))
                {
                    grantStatus = GrantStatus.Approved.ToString();
                }
                else
                {
                    grantStatus = GrantStatus.Rejected.ToString();
                }

                Outcome.Set(context, grantStatus);
            }
            catch (Exception ex)
            {
                throw new System.Exception($"Actual Exception: {ex.InnerException}\nPossible cause: {apiHostingPlanPrompt}");
            }
        }