예제 #1
0
        /// <summary>
        /// A simple function that takes a string and does a ToUpper
        /// </summary>
        /// <param name="input"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task FunctionHandler(SaasafrasAppTableCreateRequest input, ILambdaContext context)
        {
            var apiKey           = System.Environment.GetEnvironmentVariable("API_KEY");
            var baseUrl          = System.Environment.GetEnvironmentVariable("BASE_URL");
            var connectionString = System.Environment.GetEnvironmentVariable("PODIO_DB_CONNECTION_STRING");

            var client = new BbcServiceClient(baseUrl, apiKey);
            SaasafrasTokenProvider token = new SaasafrasTokenProvider(input.solutionId, input.version, client);

            //var podio = new PodioCore.Podio(token);

            System.Console.WriteLine($"Entered function...");
            ILambdaSerializer serializer = new Amazon.Lambda.Serialization.Json.JsonSerializer();

            using (var _mysql = new MySqlQueryHandler(connectionString ?? "server=mpactprodata.czsyc7qltifw.us-east-2.rds.amazonaws.com;uid=admin;pwd=perilousDeity;database=podioTest"))
            {
                if (input.spaceName != "Contacts")
                {
                    await _mysql.CreatePodioAppView(input.solutionId, input.version, input.spaceName, input.appName);

                    await _mysql.CreatePodioAppTable(input.solutionId, input.version, input.spaceName, input.appName);
                }
                else
                {
                    await _mysql.CreatePodioContactsTable();

                    var http = new System.Net.Http.HttpClient();
                    http.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("OAuth2", token.TokenData.AccessToken);
                    http.BaseAddress = new Uri("https://api.podio.com/");
                    int limit  = 50;
                    int offset = 0;
                    int count  = 0;
                    do
                    {
                        var content = await http.GetStringAsync($"contact?offset={offset}&limit={limit}");

                        var contacts = Newtonsoft.Json.JsonConvert.DeserializeObject <List <PodioContact> >(content);
                        foreach (var contact in contacts)
                        {
                            await _mysql.AddContact(
                                contact.ProfileId,
                                contact.UserId,
                                contact.Name,
                                (contact.Email?.Length ?? 0) > 0?contact.Email[0] : "",
                                (contact.Address?.Length ?? 0) > 0?contact.Address[0] : "",
                                contact.City,
                                contact.State,
                                contact.Zip,
                                contact.Type,
                                (contact.Phone?.Length ?? 0) > 0?contact.Phone[0] : ""
                                );
                        }
                        count   = contacts.Count;
                        offset += limit;
                    }while (count >= limit);
                }
            }
        }
예제 #2
0
        //creates ehome dictionary item
        public override async System.Threading.Tasks.Task InnerHandler(RoutedPodioEvent e, ILambdaContext lambda_ctx)
        {
            lambda_ctx.Logger.LogLine($"Lambda_ctx: {lambda_ctx.Identity}");
            System.Environment.SetEnvironmentVariable("PODIO_PROXY_URL", Config.PODIO_PROXY_URL);
            System.Environment.SetEnvironmentVariable("BBC_SERVICE_URL", Config.BBC_SERVICE_URL);
            System.Environment.SetEnvironmentVariable("BBC_SERVICE_API_KEY", Config.BBC_SERVICE_API_KEY);

            string url          = Config.LOCKER_URL;
            string key          = Config.BBC_SERVICE_API_KEY;
            var    functionName = "mpactproEhomeCreateDictItemFunction";
            var    uniqueId     = e.podioEvent.type; //this is using the ehome id for now since we dont have a unique item id
            var    client       = new BbcServiceClient(url, key);
            var    lockValue    = await client.LockFunction(functionName, uniqueId);

            if (string.IsNullOrEmpty(lockValue))
            {
                lambda_ctx.Logger.LogLine($"Failed to acquire lock for {functionName} and id {uniqueId}");
                return;
            }
            try
            {
                var factory     = new AuditedPodioClientFactory(e.appId, e.version, e.clientId, e.currentEnvironment.environmentId);
                var podioClient = factory.Client();

                //eHome landing dictionary
                EhomeDictionary dict = new EhomeDictionary();
                _deployedSpacesEhome = dict.Dictionary;
                var  ehomeId   = e.podioEvent.type; //TODO: update if key gets assigned to a new property
                var  appId     = 20806986;          //will always be the same
                Item ehomeItem = new Item();

                void setField(string fieldName, string fieldValue)
                {
                    var fieldId       = GetFieldIdEhome($"*eHome America Landing Space|eHome America Profile Dictionary|{fieldName}");
                    var textItemField = ehomeItem.Field <TextItemField>(fieldId);

                    textItemField.Value = fieldValue;
                }

                setField("Client ID", e.clientId);
                setField("Environment ID", e.currentEnvironment.environmentId);
                setField("eHome Profile ID", ehomeId);

                await podioClient.CreateItem(ehomeItem, appId, true);

                lambda_ctx.Logger.LogLine("eHome dict item has ben created!");
            }
            catch (Exception ex)
            {
                lambda_ctx.Logger.LogLine($"The function {functionName} failed");
                lambda_ctx.Logger.LogLine($"Exception: {ex}");
            }
            finally
            {
                await client.UnlockFunction(functionName, uniqueId, lockValue);
            }
        }
예제 #3
0
        public override async System.Threading.Tasks.Task InnerHandler(RoutedPodioEvent e, ILambdaContext lambda_ctx)
        {
            lambda_ctx.Logger.LogLine("EHome Data Status = Push 2");
            lambda_ctx.Logger.LogLine($"Podio Routed Event Version and AppId: {e.version}, {e.appId}");
            lambda_ctx.Logger.LogLine($"Lambda_ctx: {lambda_ctx.Identity}");
            System.Environment.SetEnvironmentVariable("PODIO_PROXY_URL", Config.PODIO_PROXY_URL);
            System.Environment.SetEnvironmentVariable("BBC_SERVICE_URL", Config.BBC_SERVICE_URL);
            System.Environment.SetEnvironmentVariable("BBC_SERVICE_API_KEY", Config.BBC_SERVICE_API_KEY);

            string url  = Config.LOCKER_URL;
            string url2 = Config.BBC_SERVICE_URL;
            string key  = Config.BBC_SERVICE_API_KEY;
            // eHome Landing Dictionary
            EhomeDictionary dict = new EhomeDictionary();

            _deployedSpacesEhome = dict.Dictionary;
            // Authenticate
            if (e.appId != null)
            {
                lambda_ctx.Logger.LogLine($"AppId: |{e.appId}|");
            }
            if (e.version != null)
            {
                lambda_ctx.Logger.LogLine($"Version: |{e.version}|");
            }
            if (e.clientId != null)
            {
                lambda_ctx.Logger.LogLine($"clientId |{e.clientId}|");
            }
            var app         = "mpactprobeta";
            var version     = "3.0";
            var level       = "admin";
            var factory     = new AuditedPodioClientFactory(app, version, level, level);
            var podioClient = factory.Client();

            // Get revision from Podio update
            var revision = await podioClient.GetRevisionDifference(Convert.ToInt32(e.podioEvent.item_id), e.currentItem.CurrentRevision.Revision - 1, e.currentItem.CurrentRevision.Revision);

            var fieldId = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|eHome Data Status");

            // If eHome Data Status was updated to Push 2
            if (e.currentItem.Field <CategoryItemField>(fieldId).Options.First().Text == "Push 2" && revision.First().FieldId == fieldId)
            {
                var functionName = "mpactproEhomeAmericaInboundPush2Function";
                var uniqueId     = e.currentItem.ItemId.ToString();
                var client       = new BbcServiceClient(url, key);
                var lockValue    = await client.LockFunction(functionName, uniqueId);

                try
                {
                    if (string.IsNullOrEmpty(lockValue))
                    {
                        lambda_ctx.Logger.LogLine($"Failed to acquire lock for {functionName} and id {uniqueId}");
                        return;
                    }
                    lambda_ctx.Logger.LogLine($"Lock Value: {lockValue}");

                    var appId = GetFieldIdEhome("*eHome America Landing Space|eHome America Profile Dictionary");
                    fieldId = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Podio ID");

                    // Search eHome America Profile Dictionary for client's Podio ID
                    var searchService = new PodioCore.Services.SearchService(podioClient);
                    var eHomeProfileDictionarySearch = await searchService.SearchInApp(appId, e.currentItem.Field <TextItemField>(fieldId).Value);

                    // Get item from eHome Dictionary
                    var ehomeProfileDictionaryGetItem = await podioClient.GetItem(eHomeProfileDictionarySearch.First().Id);

                    fieldId = GetFieldIdEhome("*eHome America Landing Space|eHome America Profile Dictionary|Environment ID");
                    var envId = ehomeProfileDictionaryGetItem.Field <TextItemField>(fieldId).Value;
                    fieldId = GetFieldIdEhome("*eHome America Landing Space|eHome America Profile Dictionary|Client ID");
                    var clientId = ehomeProfileDictionaryGetItem.Field <TextItemField>(fieldId).Value;
                    lambda_ctx.Logger.LogLine($"clientId: {clientId}");
                    lambda_ctx.Logger.LogLine($"envId: {envId}");

                    // Create service and Get deployments
                    lambda_ctx.Logger.LogLine($"Url: {url2}");

                    var bbcservice = new BbcServiceClient(url2, key);
                    var envs       = await bbcservice.GetEnvironment(clientId, envId);

                    //var deployments = await bbcservice.GetDeployments(clientId, envId);//, "mpactprobeta");
                    var deployment = envs.deployments.First(); // TODO: find better way of getting app than first()
                    _deployedSpaces = deployment.deployedSpaces;

                    // Creation of eHome America Lead && setting all of the fields !
                    lambda_ctx.Logger.LogLine($"Creating eHome Item");
                    var ehomeItem = new Item();

                    fieldId = GetFieldId("3. Home Purchase|eHome America Lead|Are you a Veteran?");
                    var catField = ehomeItem.Field <CategoryItemField>(fieldId);
                    fieldId = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Veteran");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value == "Yes")
                    {
                        catField.OptionText = e.currentItem.Field <TextItemField>(fieldId).Value;
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "No")
                    {
                        catField.OptionText = e.currentItem.Field <TextItemField>(fieldId).Value;
                    }
                    else
                    {
                        catField.OptionText = "Not Available";
                    }

                    fieldId  = GetFieldId("3. Home Purchase|eHome America Lead|Are you active Military?");
                    catField = ehomeItem.Field <CategoryItemField>(fieldId);
                    fieldId  = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Active Military");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value == "Yes")
                    {
                        catField.OptionText = e.currentItem.Field <TextItemField>(fieldId).Value;
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "No")
                    {
                        catField.OptionText = e.currentItem.Field <TextItemField>(fieldId).Value;
                    }
                    else
                    {
                        catField.OptionText = "Not Available";
                    }

                    fieldId  = GetFieldId("3. Home Purchase|eHome America Lead|English Proficiency Level");
                    catField = ehomeItem.Field <CategoryItemField>(fieldId);
                    fieldId  = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|English Speaking");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value == "Household is Limited English Proficient")
                    {
                        catField.OptionText = "a. Household is Limited English Proficient";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "Household is not Limited English Proficient")
                    {
                        catField.OptionText = "b . Household is not Limited English Proficient";
                    }
                    else
                    {
                        catField.OptionText = "c. Chose not to respond";
                    }

                    fieldId  = GetFieldId("3. Home Purchase|eHome America Lead|Current Household");
                    catField = ehomeItem.Field <CategoryItemField>(fieldId);
                    fieldId  = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Current Household Type");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value == "Rent")
                    {
                        catField.OptionText = "1.  Rent";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "Homeless")
                    {
                        catField.OptionText = "2.  Homeless";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "Not Paying Rent")
                    {
                        catField.OptionText = "4.  Not Paying Rent";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "Homeowner with Mortage Paid Off")
                    {
                        catField.OptionText = "5.  Homeowner with Mortage Paid Off";
                    }

                    fieldId  = GetFieldId("3. Home Purchase|eHome America Lead|Disability");
                    catField = ehomeItem.Field <CategoryItemField>(fieldId);
                    fieldId  = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Disability");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value == "Yes")
                    {
                        catField.OptionText = "Yes";
                    }
                    else
                    {
                        catField.OptionText = "No";
                    }

                    fieldId  = GetFieldId("3. Home Purchase|eHome America Lead|Ethnicity");
                    catField = ehomeItem.Field <CategoryItemField>(fieldId);
                    fieldId  = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Ethnicity");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value == "Hispanic")
                    {
                        catField.OptionText = "a.  Hispanic";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "Not Hispanic")
                    {
                        catField.OptionText = "b.  Not Hispanic";
                    }
                    else
                    {
                        catField.OptionText = "c.  Chose not to respond";
                    }

                    fieldId  = GetFieldId("3. Home Purchase|eHome America Lead|Gender");
                    catField = ehomeItem.Field <CategoryItemField>(fieldId);
                    fieldId  = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Gender");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value == "Male")
                    {
                        catField.OptionText = "Male";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "Female")
                    {
                        catField.OptionText = "Female";
                    }

                    fieldId  = GetFieldId("3. Home Purchase|eHome America Lead|Have you met with a lender about getting a home loan?");
                    catField = ehomeItem.Field <CategoryItemField>(fieldId);
                    fieldId  = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Met Lender");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value == "Yes")
                    {
                        catField.OptionText = "Yes";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "No")
                    {
                        catField.OptionText = "No";
                    }

                    fieldId  = GetFieldId("3. Home Purchase|eHome America Lead|Highest Level of Education");
                    catField = ehomeItem.Field <CategoryItemField>(fieldId);
                    fieldId  = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Highest Level of Education");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value == "Below High School Diploma")
                    {
                        catField.OptionText = "1. Below High School Diploma";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "High School Diploma or Equivalent")
                    {
                        catField.OptionText = "2. High School Diploma or Equivalent";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "Two-Year College")
                    {
                        catField.OptionText = "3. Two-Year College";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "Bachelors Degree")
                    {
                        catField.OptionText = "4. Bachelors Degree";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "Masters Degree")
                    {
                        catField.OptionText = "5. Masters Degree";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "Above Masters Degree")
                    {
                        catField.OptionText = "6. Above Masters Degree";
                    }

                    fieldId  = GetFieldId("3. Home Purchase|eHome America Lead|Household Type");
                    catField = ehomeItem.Field <CategoryItemField>(fieldId);
                    fieldId  = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Household Type");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value == "Female headed single parent household")
                    {
                        catField.OptionText = "1. Female headed single parent household";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "Male headed single parent household")
                    {
                        catField.OptionText = "2. Male headed single parent household";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "Single adult")
                    {
                        catField.OptionText = "3. Single adult";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "Two or more unrelated adults")
                    {
                        catField.OptionText = "4. Two or more unrelated adults";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "Married with children")
                    {
                        catField.OptionText = "5. Married with children";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "Married without children")
                    {
                        catField.OptionText = "6. Married without children";
                    }
                    else
                    {
                        catField.OptionText = "7. Other";
                    }

                    fieldId  = GetFieldId("3. Home Purchase|eHome America Lead|Marital Status");
                    catField = ehomeItem.Field <CategoryItemField>(fieldId);
                    fieldId  = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Marital Status");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value == "Single")
                    {
                        catField.OptionText = "Single";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "Married")
                    {
                        catField.OptionText = "Married";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "Divorced")
                    {
                        catField.OptionText = "Divorced";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "Separated")
                    {
                        catField.OptionText = "Separated";
                    }
                    else if (e.currentItem.Field <TextItemField>(fieldId).Value == "Widowed")
                    {
                        catField.OptionText = "Widowed";
                    }

                    fieldId  = GetFieldId("3. Home Purchase|eHome America Lead|Race");
                    catField = ehomeItem.Field <CategoryItemField>(fieldId);
                    fieldId  = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Race");
                    switch (e.currentItem.Field <TextItemField>(fieldId).Value)
                    {
                    case "American Indian/Alaskan Native":
                        catField.OptionText = "a. American Indian/Alaskan Native";
                        break;

                    case "Asian":
                        catField.OptionText = "b. Asian";
                        break;

                    case "Black or African American":
                        catField.OptionText = "c. Black or African American";
                        break;

                    case "Native Hawaiian or Other Pacific Islander":
                        catField.OptionText = "d. Native Hawaiian or Other Pacific Islander";
                        break;

                    case "White":
                        catField.OptionText = "e. White";
                        break;

                    case "American Indian or Alaska Native and White":
                        catField.OptionText = "f. American Indian or Alaska Native and White";
                        break;

                    case "Asian and White":
                        catField.OptionText = "g. Asian and White";
                        break;

                    case "Black or African American and White":
                        catField.OptionText = "h. Black or African American and White";
                        break;

                    case "American Indian or Alaska Native and Black or African American":
                        catField.OptionText = "i. American Indian or Alaska Native and Black or African American";
                        break;

                    case "Other multiple race":
                    case "Other":
                        catField.OptionText = "j. Other multiple race";
                        break;

                    default:
                        catField.OptionText = "k. Chose not to respond";
                        break;
                    }

                    fieldId  = GetFieldId("3. Home Purchase|eHome America Lead|U.S. Citizen");
                    catField = ehomeItem.Field <CategoryItemField>(fieldId);
                    fieldId  = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|U.S. Citizen");
                    switch (e.currentItem.Field <TextItemField>(fieldId).Value)
                    {
                    case "Yes":
                        catField.OptionText = "4 - Myself and parents and grandparents were all born inside US";
                        break;

                    case "No":
                        catField.OptionText = "3 - I was born outside the US";
                        break;
                    }

                    fieldId  = GetFieldId("3. Home Purchase|eHome America Lead|I am taking this course to:");
                    catField = ehomeItem.Field <CategoryItemField>(fieldId);
                    fieldId  = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Course Reason");
                    switch (e.currentItem.Field <TextItemField>(fieldId).Value)
                    {
                    case "Meet my lender's qualifications":
                        catField.OptionText = "Meet my lender's qualifications";
                        break;

                    case "Become more educated about the homebuying process":
                        catField.OptionText = "Become more educated about the homebuying process";
                        break;

                    case "Determing if owning a home is the right decision":
                        catField.OptionText = "Determing if owning a home is the right decision";
                        break;

                    case "Learn how much I can spend on purchasing a home":
                        catField.OptionText = "Learn how much I can spend on purchasing a home";
                        break;

                    default:
                        catField.OptionText = "Meet my lender's qualifications";
                        break;
                    }

                    fieldId  = GetFieldId("3. Home Purchase|eHome America Lead|Loan Type");
                    catField = ehomeItem.Field <CategoryItemField>(fieldId);
                    fieldId  = GetFieldId("3. Home Purchase|eHome America Lead|Rural Area Status");
                    var ruralStatus = ehomeItem.Field <CategoryItemField>(fieldId);
                    fieldId = GetFieldId("3. Home Purchase|eHome America Lead|Education Client Type");
                    var educationClientType = ehomeItem.Field <CategoryItemField>(fieldId);
                    fieldId = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Loan Type");
                    switch (e.currentItem.Field <TextItemField>(fieldId).Value)
                    {
                    case "Conventional":
                        catField.OptionText            = "Conventional";
                        ruralStatus.OptionText         = "a. Household lives in a rural area";
                        educationClientType.OptionText = "Facilitated Education";
                        break;

                    case "FHA":
                        catField.OptionText            = "FHA";
                        ruralStatus.OptionText         = "a. Household lives in a rural area";
                        educationClientType.OptionText = "Facilitated Education";
                        break;

                    case "USDA":
                        catField.OptionText            = "USDA";
                        ruralStatus.OptionText         = "b. Household does not live in a rural area";
                        educationClientType.OptionText = "USDA Follow-Up";
                        break;

                    case "Neighborhood Stabilization Program (NSP)":
                        catField.OptionText            = "Neighborhood Stabilization Program (NSP)";
                        ruralStatus.OptionText         = "a. Household lives in a rural area";
                        educationClientType.OptionText = "Facilitated Education";
                        break;

                    case "Down Payment Assistance":
                        catField.OptionText            = "Down Payment Assistance";
                        ruralStatus.OptionText         = "a. Household lives in a rural area";
                        educationClientType.OptionText = "Facilitated Education";
                        break;

                    default:
                        catField.OptionText            = "Other";
                        ruralStatus.OptionText         = "a. Household lives in a rural area";
                        educationClientType.OptionText = "Facilitated Education";
                        break;
                    }

                    fieldId  = GetFieldId("3. Home Purchase|eHome America Lead|How did you hear about eHome America?");
                    catField = ehomeItem.Field <CategoryItemField>(fieldId);
                    fieldId  = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Hear About eHome");
                    switch (e.currentItem.Field <TextItemField>(fieldId).Value)
                    {
                    case "Advertisement":
                        catField.OptionText = "Advertisement";
                        break;

                    case "Housing Counseling Agency":
                        catField.OptionText = "Housing Counseling Agency";
                        break;

                    case "Lender":
                        catField.OptionText = "Lender";
                        break;

                    case "Real Estate Professional":
                        catField.OptionText = "Real Estate Professional";
                        break;

                    case "Website":
                        catField.OptionText = "Website";
                        break;

                    case "Word of Mouth":
                        catField.OptionText = "Word of Mouth";
                        break;

                    case "Zillow":
                        catField.OptionText = "Zillow";
                        break;

                    case "Downpaymentresource.com":
                        catField.OptionText = "Downpaymentresource.com";
                        break;

                    default:
                        catField.OptionText = "Other";
                        break;
                    }

                    fieldId  = GetFieldId("3. Home Purchase|eHome America Lead|Are you a First-Time Homebuyer?");
                    catField = ehomeItem.Field <CategoryItemField>(fieldId);
                    fieldId  = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|First Time Homebuyer");
                    switch (e.currentItem.Field <TextItemField>(fieldId).Value)
                    {
                    case "No":
                        catField.OptionText = "No";
                        break;

                    default:
                        catField.OptionText = "Yes";
                        break;
                    }

                    fieldId  = GetFieldId("3. Home Purchase|eHome America Lead|Have you been pre-approved for a loan up to a certain amount?");
                    catField = ehomeItem.Field <CategoryItemField>(fieldId);
                    fieldId  = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Approved Loan");
                    switch (e.currentItem.Field <TextItemField>(fieldId).Value)
                    {
                    case "Yes":
                        catField.OptionText = "Yes";
                        break;

                    default:
                        catField.OptionText = "No";
                        break;
                    }

                    fieldId = GetFieldId("3. Home Purchase|eHome America Lead|Phone");
                    var phoneItemField = ehomeItem.Field <PhoneItemField>(fieldId);
                    fieldId = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Client Phone Number");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null)
                    {
                        phoneItemField.Value = new List <EmailPhoneFieldResult>
                        {
                            new EmailPhoneFieldResult {
                                Type = "other", Value = e.currentItem.Field <TextItemField>(fieldId).Value
                            }
                        };
                    }

                    fieldId = GetFieldId("3. Home Purchase|eHome America Lead|Total Annual Family Income");
                    var numericItemField = ehomeItem.Field <NumericItemField>(fieldId);
                    fieldId = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Total Annual Family Income");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null)
                    {
                        var income = e.currentItem.Field <TextItemField>(fieldId).Value.Replace(",", "");
                        income = StripHTML(income);
                        numericItemField.Value = Convert.ToDouble(income);
                    }

                    fieldId          = GetFieldId("3. Home Purchase|eHome America Lead|Number in Household");
                    numericItemField = ehomeItem.Field <NumericItemField>(fieldId);
                    fieldId          = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Number in Household");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null)
                    {
                        var income = e.currentItem.Field <TextItemField>(fieldId).Value.Replace(",", "");
                        income = StripHTML(income);
                        numericItemField.Value = Convert.ToDouble(income);
                    }

                    fieldId          = GetFieldId("3. Home Purchase|eHome America Lead|If you have been pre-approved, how much were you pre-approved for?");
                    numericItemField = ehomeItem.Field <NumericItemField>(fieldId);
                    fieldId          = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Approved Loan Amount");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null)
                    {
                        var income = e.currentItem.Field <TextItemField>(fieldId).Value.Replace(",", "");
                        income = StripHTML(income);
                        numericItemField.Value = Convert.ToDouble(income);
                    }

                    fieldId = GetFieldId("3. Home Purchase|eHome America Lead|Date of Birth");
                    var dateItemField = ehomeItem.Field <DateItemField>(fieldId);
                    fieldId = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Date of Birth");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null)
                    {
                        var date      = StripHTML(e.currentItem.Field <TextItemField>(fieldId).Value);
                        var dateSplit = date.Split('-');
                        if (dateSplit[0].Count() < 2)
                        {
                            dateSplit[0] = 0 + dateSplit[0];
                        }
                        dateItemField.Start = Convert.ToDateTime(dateSplit[2] + "-" + dateSplit[0] + "-" + dateSplit[1]);
                    }

                    fieldId             = GetFieldId("3. Home Purchase|eHome America Lead|Create Home Purchase Case");
                    catField            = ehomeItem.Field <CategoryItemField>(fieldId);
                    catField.OptionText = "No";

                    fieldId             = GetFieldId("3. Home Purchase|eHome America Lead|Completed");
                    catField            = ehomeItem.Field <CategoryItemField>(fieldId);
                    catField.OptionText = "New";

                    fieldId             = GetFieldId("3. Home Purchase|eHome America Lead|Are you a First-Time Homebuyer?");
                    catField            = ehomeItem.Field <CategoryItemField>(fieldId);
                    catField.OptionText = "No";

                    fieldId             = GetFieldId("3. Home Purchase|eHome America Lead|Completed eHome Course?");
                    catField            = ehomeItem.Field <CategoryItemField>(fieldId);
                    catField.OptionText = "Registration";

                    fieldId = GetFieldId("3. Home Purchase|eHome America Lead|Legal First Name");
                    var textField = ehomeItem.Field <TextItemField>(fieldId);
                    fieldId = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Client First Name");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null)
                    {
                        textField.Value = e.currentItem.Field <TextItemField>(fieldId).Value;
                    }

                    fieldId   = GetFieldId("3. Home Purchase|eHome America Lead|Legal Last Name");
                    textField = ehomeItem.Field <TextItemField>(fieldId);
                    fieldId   = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Client Last Name");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null)
                    {
                        textField.Value = e.currentItem.Field <TextItemField>(fieldId).Value;
                    }

                    fieldId   = GetFieldId("3. Home Purchase|eHome America Lead|Street Number");
                    textField = ehomeItem.Field <TextItemField>(fieldId);
                    fieldId   = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Street Number");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null)
                    {
                        textField.Value = e.currentItem.Field <TextItemField>(fieldId).Value;
                    }

                    fieldId   = GetFieldId("3. Home Purchase|eHome America Lead|Street Name");
                    textField = ehomeItem.Field <TextItemField>(fieldId);
                    fieldId   = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Street Name");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null)
                    {
                        textField.Value = e.currentItem.Field <TextItemField>(fieldId).Value;
                    }

                    fieldId   = GetFieldId("3. Home Purchase|eHome America Lead|State");
                    textField = ehomeItem.Field <TextItemField>(fieldId);
                    fieldId   = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|State");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null)
                    {
                        textField.Value = e.currentItem.Field <TextItemField>(fieldId).Value;
                    }

                    fieldId   = GetFieldId("3. Home Purchase|eHome America Lead|County");
                    textField = ehomeItem.Field <TextItemField>(fieldId);
                    fieldId   = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|County");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null)
                    {
                        textField.Value = e.currentItem.Field <TextItemField>(fieldId).Value;
                    }

                    fieldId   = GetFieldId("3. Home Purchase|eHome America Lead|City");
                    textField = ehomeItem.Field <TextItemField>(fieldId);
                    fieldId   = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|City");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null)
                    {
                        textField.Value = e.currentItem.Field <TextItemField>(fieldId).Value;
                    }

                    fieldId   = GetFieldId("3. Home Purchase|eHome America Lead|Zip Code");
                    textField = ehomeItem.Field <TextItemField>(fieldId);
                    fieldId   = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Zip");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null)
                    {
                        textField.Value = e.currentItem.Field <TextItemField>(fieldId).Value;
                    }

                    fieldId   = GetFieldId("3. Home Purchase|eHome America Lead|eHome Profile ID");
                    textField = ehomeItem.Field <TextItemField>(fieldId);
                    fieldId   = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|eHome Profile ID");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null)
                    {
                        textField.Value = e.currentItem.Field <TextItemField>(fieldId).Value;
                    }

                    fieldId   = GetFieldId("3. Home Purchase|eHome America Lead|Lender Name");
                    textField = ehomeItem.Field <TextItemField>(fieldId);
                    fieldId   = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Lender Name");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null)
                    {
                        textField.Value = e.currentItem.Field <TextItemField>(fieldId).Value;
                    }

                    fieldId   = GetFieldId("3. Home Purchase|eHome America Lead|Loan Officer's Name");
                    textField = ehomeItem.Field <TextItemField>(fieldId);
                    fieldId   = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Loan Officer Name");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null)
                    {
                        textField.Value = e.currentItem.Field <TextItemField>(fieldId).Value;
                    }

                    fieldId        = GetFieldId("3. Home Purchase|eHome America Lead|Loan Officer's Phone Number");
                    phoneItemField = ehomeItem.Field <PhoneItemField>(fieldId);
                    fieldId        = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Loan Officer Phone Number");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null)
                    {
                        phoneItemField.Value = new List <EmailPhoneFieldResult>
                        {
                            new EmailPhoneFieldResult {
                                Type = "other", Value = StripHTML(e.currentItem.Field <TextItemField>(fieldId).Value)
                            }
                        };
                    }

                    fieldId        = GetFieldId("3. Home Purchase|eHome America Lead|Loan Officer's Fax Number");
                    phoneItemField = ehomeItem.Field <PhoneItemField>(fieldId);
                    fieldId        = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Loan Officer Fax Number");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null)
                    {
                        phoneItemField.Value = new List <EmailPhoneFieldResult>
                        {
                            new EmailPhoneFieldResult {
                                Type = "other", Value = StripHTML(e.currentItem.Field <TextItemField>(fieldId).Value)
                            }
                        };
                    }

                    fieldId          = GetFieldId("3. Home Purchase|eHome America Lead|Household Family Size");
                    numericItemField = ehomeItem.Field <NumericItemField>(fieldId);
                    fieldId          = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Number in Household");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null)
                    {
                        numericItemField.Value = Convert.ToDouble(StripHTML(e.currentItem.Field <TextItemField>(fieldId).Value));
                    }

                    fieldId = GetFieldId("3. Home Purchase|eHome America Lead|Email Address");
                    var emailItemField = ehomeItem.Field <EmailItemField>(fieldId);
                    fieldId = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Client Email Address");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null)
                    {
                        emailItemField.Value = new List <EmailPhoneFieldResult>
                        {
                            new EmailPhoneFieldResult {
                                Type = "other", Value = e.currentItem.Field <TextItemField>(fieldId).Value
                            }
                        };
                    }

                    appId = GetFieldId("3. Home Purchase|eHome America Lead");
                    var itemId = await podioClient.CreateItem(ehomeItem, appId, false);

                    lambda_ctx.Logger.LogLine($"eHome item: {itemId} has been created :)");

                    var landingSpace = new Item {
                        ItemId = e.currentItem.ItemId
                    };

                    fieldId         = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Local Item ID");
                    textField       = landingSpace.Field <TextItemField>(fieldId);
                    textField.Value = itemId.ToString();

                    fieldId             = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Local Item Status");
                    catField            = landingSpace.Field <CategoryItemField>(fieldId);
                    catField.OptionText = "Item Created";

                    await podioClient.UpdateItem(landingSpace, true);

                    lambda_ctx.Logger.LogLine($"Local Item ID has been set");
                }
                catch (Exception ex)
                {
                    lambda_ctx.Logger.LogLine($"{ex}");
                    var errorItem = new Item();

                    fieldId = GetFieldIdEhome("*eHome America Landing Space|Error Log|Error Log");
                    var textField = errorItem.Field <TextItemField>(fieldId);
                    textField.Value = ex.Message.ToString();

                    fieldId   = GetFieldIdEhome("*eHome America Landing Space|Error Log|Client Name");
                    textField = errorItem.Field <TextItemField>(fieldId);
                    var clientFirstNameFieldId = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Client First Name");
                    fieldId = GetFieldIdEhome("*eHome America Landing Space|eHome America Landing Space|Client Last Name");
                    if (e.currentItem.Field <TextItemField>(fieldId).Value != null && e.currentItem.Field <TextItemField>(clientFirstNameFieldId).Value != null)
                    {
                        textField.Value = e.currentItem.Field <TextItemField>(fieldId).Value + ", " + e.currentItem.Field <TextItemField>(clientFirstNameFieldId).Value;
                    }

                    var appId = GetFieldIdEhome("*eHome America Landing Space|Error Log");
                    await podioClient.CreateItem(errorItem, appId, true);
                }
                finally
                {
                    await client.UnlockFunction(functionName, uniqueId, lockValue);
                }
            }
            else
            {
                lambda_ctx.Logger.LogLine("Failed if statement");
            }
        }
예제 #4
0
        public override async System.Threading.Tasks.Task InnerHandler(RoutedPodioEvent e, ILambdaContext lambda_ctx)
        {
            System.Environment.SetEnvironmentVariable("PODIO_PROXY_URL", Config.PODIO_PROXY_URL);
            System.Environment.SetEnvironmentVariable("BBC_SERVICE_URL", Config.BBC_SERVICE_URL);
            System.Environment.SetEnvironmentVariable("BBC_SERVICE_API_KEY", Config.BBC_SERVICE_API_KEY);

            _deployedSpaces = e.currentEnvironment.deployments.First(a => a.appId == "mpactprobeta").deployedSpaces;
            var factory     = new AuditedPodioClientFactory(e.appId, e.version, e.clientId, e.currentEnvironment.environmentId);
            var podioClient = factory.ForClient(e.clientId, e.currentEnvironment.environmentId);

            lambda_ctx.Logger.LogLine($"Podio Routed Event Version and AppId: {e.version}, {e.appId}");
            lambda_ctx.Logger.LogLine($"Lambda_ctx: {lambda_ctx.Identity}");

            string url = Config.LOCKER_URL;
            string key = Config.BBC_SERVICE_API_KEY;

            lambda_ctx.Logger.LogLine($"URL: {url}");
            var functionName = "mpactproAMICalcFunction";
            var uniqueId     = e.currentItem.ItemId.ToString();
            var client       = new BbcServiceClient(url, key);
            var lockValue    = await client.LockFunction(functionName, uniqueId);

            if (string.IsNullOrEmpty(lockValue))
            {
                lambda_ctx.Logger.LogLine($"Failed to acquire lock for {functionName} and id {uniqueId}");
                return;
            }
            try
            {
                var  app  = e.currentItem.App.Name; //Podio App Name
                Item item = new Item {
                    ItemId = e.currentItem.ItemId
                };
                double?incomeLimit = 0;
                var    householdIncomeBandField = e.currentItem.Field <CategoryItemField>(0);
                var    incomeLevel    = e.currentItem.Field <CategoryItemField>(0);
                var    incomeCategory = e.currentItem.Field <CategoryItemField>(0);
                var    size           = e.currentItem.Field <NumericItemField>(0);
                var    ami            = e.currentItem.Field <NumericItemField>(0);
                var    income         = e.currentItem.Field <MoneyItemField>(0);

                var fieldId   = 0;
                var workspace = "";
                lambda_ctx.Logger.LogLine("Checking for app");
                lambda_ctx.Logger.LogLine($"App: {app}");

                if (app == "Intake")
                {
                    lambda_ctx.Logger.LogLine("App is Intake");
                    var items = await podioClient.GetReferringItems(e.currentItem.ItemId);

                    lambda_ctx.Logger.LogLine($"Referring Items: {items.Count()}");
                    e.currentItem = await podioClient.GetItem(items.First().Items.First().ItemId);

                    item = new Item {
                        ItemId = e.currentItem.ItemId
                    };
                    lambda_ctx.Logger.LogLine($"Found MCP with item ID: {item.ItemId}");
                    fieldId = GetFieldId("1. Client Profile|Master Client Profile|Household Income Band");
                    householdIncomeBandField = item.Field <CategoryItemField>(fieldId);
                    fieldId     = GetFieldId("1. Client Profile|Master Client Profile|Income Levels");
                    incomeLevel = item.Field <CategoryItemField>(fieldId);
                    workspace   = "1. Client Profile|Master Client Profile";
                    fieldId     = GetFieldId("1. Client Profile|Master Client Profile|Household Size");
                    size        = e.currentItem.Field <NumericItemField>(fieldId);
                    fieldId     = GetFieldId("1. Client Profile|Master Client Profile|Annual Family or Household Income");
                    income      = e.currentItem.Field <MoneyItemField>(fieldId);
                    fieldId     = GetFieldId("1. Client Profile|Master Client Profile|County 100% Income Limit (AMI)");
                    ami         = e.currentItem.Field <NumericItemField>(fieldId);
                }
                if (app == "Master Client Profile")
                {
                    fieldId = GetFieldId("1. Client Profile|Master Client Profile|Household Income Band");
                    householdIncomeBandField = item.Field <CategoryItemField>(fieldId);
                    fieldId     = GetFieldId("1. Client Profile|Master Client Profile|Income Levels");
                    incomeLevel = item.Field <CategoryItemField>(fieldId);
                    workspace   = "1. Client Profile|Master Client Profile";
                    fieldId     = GetFieldId("1. Client Profile|Master Client Profile|Household Size");
                    size        = e.currentItem.Field <NumericItemField>(fieldId);
                    fieldId     = GetFieldId("1. Client Profile|Master Client Profile|Annual Family or Household Income");
                    income      = e.currentItem.Field <MoneyItemField>(fieldId);
                    fieldId     = GetFieldId("1. Client Profile|Master Client Profile|County 100% Income Limit (AMI)");
                    ami         = e.currentItem.Field <NumericItemField>(fieldId);
                }

                else if (app == "Home Purchase Case")
                {
                    fieldId = GetFieldId("3. Home Purchase|Home Purchase Case|Household Income Band");
                    householdIncomeBandField = item.Field <CategoryItemField>(fieldId);
                    workspace = "3. Home Purchase|Home Purchase Case";
                    fieldId   = GetFieldId("3. Home Purchase|Home Purchase Case|Household Family Size");
                    size      = e.currentItem.Field <NumericItemField>(fieldId);
                    fieldId   = GetFieldId("3. Home Purchase|Home Purchase Case|Household Annual Family Income");
                    income    = e.currentItem.Field <MoneyItemField>(fieldId);
                    fieldId   = GetFieldId("3. Home Purchase|Home Purchase Case|County 100% Income Limit (AMI)");
                    ami       = e.currentItem.Field <NumericItemField>(fieldId);
                }

                else if (app == "Homeowner Services Case")
                {
                    fieldId = GetFieldId("7. Home Owner Services|Homeowner Services Case|Household Income Band");
                    householdIncomeBandField = item.Field <CategoryItemField>(fieldId);
                    workspace = "7. Home Owner Services|Homeowner Services Case";
                    fieldId   = GetFieldId("7. Home Owner Services|Homeowner Services Case|Household Family Size");
                    size      = e.currentItem.Field <NumericItemField>(fieldId);
                    fieldId   = GetFieldId("7. Home Owner Services|Homeowner Services Case|Household Annual Family Income");
                    income    = e.currentItem.Field <MoneyItemField>(fieldId);
                    fieldId   = GetFieldId("7. Home Owner Services|Homeowner Services Case|County 100% Income Limit (AMI)");
                    ami       = e.currentItem.Field <NumericItemField>(fieldId);
                }

                else if (app == "Mortgage Modification Case")
                {
                    fieldId = GetFieldId("4. Mortgage Modification|Mortgage Modification Case|Household Income Band");
                    householdIncomeBandField = item.Field <CategoryItemField>(fieldId);
                    fieldId        = GetFieldId("4. Mortgage Modification|Mortgage Modification Case|Income Level");
                    incomeLevel    = item.Field <CategoryItemField>(fieldId);
                    fieldId        = GetFieldId("4. Mortgage Modification|Mortgage Modification Case|Income Category");
                    incomeCategory = item.Field <CategoryItemField>(fieldId);
                    workspace      = "4. Mortgage Modification|Mortgage Modification Case";
                    fieldId        = GetFieldId("4. Mortgage Modification|Mortgage Modification Case|Household Family Size");
                    size           = e.currentItem.Field <NumericItemField>(fieldId);
                    fieldId        = GetFieldId("4. Mortgage Modification|Mortgage Modification Case|Household Annual Family Income");
                    income         = e.currentItem.Field <MoneyItemField>(fieldId);
                    fieldId        = GetFieldId("4. Mortgage Modification|Mortgage Modification Case|County 100% Income Limit (AMI)");
                    ami            = e.currentItem.Field <NumericItemField>(fieldId);
                }

                lambda_ctx.Logger.LogLine($"Destination {workspace}");
                lambda_ctx.Logger.LogLine("If Statement Starting");

                if (ami.Value != null && size.Value != null && income.Value != null)
                {
                    if (e.currentItem.Revisions != null)
                    {
                        var revision = await podioClient.GetRevisionDifference(Convert.ToInt32(e.currentItem.ItemId), e.currentItem.CurrentRevision.Revision - 1, e.currentItem.CurrentRevision.Revision);

                        lambda_ctx.Logger.LogLine("Passed if statement");
                        if (revision.Count > 0 && revision.First().FieldId != ami.FieldId && revision.First().FieldId != size.FieldId && revision.First().FieldId != income.FieldId)
                        {
                            return;
                        }
                    }
                }
                lambda_ctx.Logger.LogLine("Calculating incomeLimit");
                lambda_ctx.Logger.LogLine($"AMI: {ami.Value}");
                lambda_ctx.Logger.LogLine($"Size: {size.Value}");
                lambda_ctx.Logger.LogLine($"Income: {income.Value}");
                if (size.Value > 0)
                {
                    var medianIncome = ami.Value / 2;

                    if (size.Value > 4)
                    {
                        var overNumber = size.Value - 4;
                        var overOffSet = overNumber * 0.08;
                        var offSet     = medianIncome * (1 + overOffSet);
                        ami.Value   = offSet * 2;
                        incomeLimit = Convert.ToDouble(income.Value) / ami.Value;
                    }
                    else if (size.Value < 4)
                    {
                        var underNumber = size.Value - 4;
                        var underOffSet = underNumber * 0.1;
                        var offSet      = medianIncome * (1 + underOffSet);
                        ami.Value   = offSet * 2;
                        incomeLimit = incomeLimit = Convert.ToDouble(income.Value) / ami.Value;
                    }
                    else if (size.Value == 4)
                    {
                        incomeLimit = incomeLimit = Convert.ToDouble(income.Value) / ami.Value;
                    }
                }

                //gets household income band to set and income limit based on app name
                lambda_ctx.Logger.LogLine($"calculated value: {incomeLimit}");
                //sets household income band based on income limit
                lambda_ctx.Logger.LogLine("Setting values");
                if (incomeLimit < .5)
                {
                    incomeCategory.OptionText = "A - Less than 50% of AMI";
                }

                if (incomeLimit > 0 && incomeLimit < .3)
                {
                    householdIncomeBandField.OptionText = "1. Below 30% of AMI";
                    incomeLevel.OptionText = "a. < 30% of Area Median Income (AMI)";
                }
                else if (incomeLimit >= .3 && incomeLimit < .5)
                {
                    householdIncomeBandField.OptionText = "2. 30% - 49% of AMI";
                    incomeLevel.OptionText = "b . 30 - 49% of AMI";
                }
                else if (incomeLimit >= .5 && incomeLimit < .8)
                {
                    householdIncomeBandField.OptionText = "3. 50% - 79% of AMI";
                    incomeLevel.OptionText    = "c. 50 - 79% of AMI";
                    incomeCategory.OptionText = "B - 50%-79% AMI";
                }
                else if (incomeLimit >= .8 && incomeLimit <= 1)
                {
                    householdIncomeBandField.OptionText = "4. 80% - 100% of AMI";
                    incomeLevel.OptionText    = "d. 80 - 100% of AMI";
                    incomeCategory.OptionText = "C - 80-100% AMI";
                }
                else if (incomeLimit > 1)
                {
                    householdIncomeBandField.OptionText = "5. 101% - 120% of AMI";
                    incomeLevel.OptionText    = "e. > 100% AMI";
                    incomeCategory.OptionText = "D - Greater than 100% AMI";
                }
                else
                {
                    householdIncomeBandField.OptionText = "f. Chose not to respond";
                    incomeLevel.OptionText = "f. Chose not to respond";
                }
                await podioClient.UpdateItem(item, false);
            }
            catch (Exception ex)
            {
                lambda_ctx.Logger.LogLine($"Exception: {ex}");
            }
            finally
            {
                await client.UnlockFunction(functionName, uniqueId, lockValue);
            }
        }