public async System.Threading.Tasks.Task FunctionHandler(RoutedPodioEvent e, ILambdaContext context) { var factory = new AuditedPodioClientFactory(e.solutionId, e.version, e.clientId, e.environmentId); var podio = factory.ForClient(e.clientId, e.environmentId); var check = await podio.GetItem(Convert.ToInt32(e.podioEvent.item_id)); var saasafrasClient = new SaasafrasClient(Environment.GetEnvironmentVariable("BBC_SERVICE_URL"), Environment.GetEnvironmentVariable("BBC_SERVICE_API_KEY")); var dictChild = await saasafrasClient.GetDictionary(e.clientId, e.environmentId, e.solutionId, e.version); var dictMaster = await saasafrasClient.GetDictionary("vcadministration", "vcadministration", "vilcap", "0.0"); string lockValue; var ids = new GetIds(dictChild, dictMaster, e.environmentId); // var functionName = "VilcapShareWithCom"; lockValue = await saasafrasClient.LockFunction(functionName, check.ItemId.ToString()); try { if (string.IsNullOrEmpty(lockValue)) { context.Logger.LogLine($"Failed to acquire lock for {functionName} and id {check.ItemId}"); return; } //When an item is created in Diligence and Selection: var em = check.Field <EmailItemField>(ids.GetFieldId("Diligence and Selection|Shared Email")); var m = "Please rate this application"; var email = em; var updateMe = new Item() { ItemId = check.ItemId }; updateMe.Field <CategoryItemField>(ids.GetFieldId("Diligence and Selection|Status")).OptionText = "Not Scored"; await podio.UpdateItem(updateMe, true); var serv = new GrantService(podio); //Send email var people = new List <Ref>(); var person = new Ref { Type = "mail", Id = email }; people.Add(person); var message = m; await serv.CreateGrant("item", check.ItemId, people, "rate", message); } catch (Exception ex) { throw ex; } finally { await saasafrasClient.UnlockFunction(functionName, check.ItemId.ToString(), lockValue); } }
public async System.Threading.Tasks.Task FunctionHandler(RoutedPodioEvent e, ILambdaContext context) { var factory = new AuditedPodioClientFactory(e.solutionId, e.version, e.clientId, e.environmentId); var podio = factory.ForClient(e.clientId, e.environmentId); var check = await podio.GetItem(Convert.ToInt32(e.podioEvent.item_id)); var saasafrasClient = new SaasafrasClient(Environment.GetEnvironmentVariable("BBC_SERVICE_URL"), Environment.GetEnvironmentVariable("BBC_SERVICE_API_KEY")); var dictChild = await saasafrasClient.GetDictionary(e.clientId, e.environmentId, e.solutionId, e.version); var dictMaster = await saasafrasClient.GetDictionary("vcadministration", "vcadministration", "vilcap", "0.0"); string lockValue; var ids = new GetIds(dictChild, dictMaster, e.environmentId); //Make sure to implement by checking to see if Deploy Curriculum has just changed //Deploy Curriculum field var functionName = "VilcapShareWithEnt"; lockValue = await saasafrasClient.LockFunction(functionName, check.ItemId.ToString()); try { if (string.IsNullOrEmpty(lockValue)) { context.Logger.LogLine($"Failed to acquire lock for {functionName} and id {check.ItemId}"); return; } //When an item is created in Entrepreneurs: var email = check.Field <EmailItemField>(ids.GetFieldId("Entrepreneurs|Entrepreneur Email")).Value.First().Value; var m = $"Please create an account and tell us about your time at {check.Field<AppItemField>(ids.GetFieldId("Entrepreneurs|Company")).Items.First().Title}"; var serv = new GrantService(podio); //Send email var people = new List <Ref>(); var person = new Ref { Type = "mail", Id = email }; people.Add(person); var message = m; await serv.CreateGrant("item", check.ItemId, people, "view", message); } catch (Exception ex) { throw ex; } finally { await saasafrasClient.UnlockFunction(functionName, check.ItemId.ToString(), lockValue); } }
public async System.Threading.Tasks.Task FunctionHandler(RoutedPodioEvent e, ILambdaContext context) { var factory = new AuditedPodioClientFactory(e.solutionId, e.version, e.clientId, e.environmentId); var podio = factory.ForClient(e.clientId, e.environmentId); var check = await podio.GetItem(Convert.ToInt32(e.podioEvent.item_id)); var saasafrasClient = new SaasafrasClient(Environment.GetEnvironmentVariable("BBC_SERVICE_URL"), Environment.GetEnvironmentVariable("BBC_SERVICE_API_KEY")); var dictChild = await saasafrasClient.GetDictionary(e.clientId, e.environmentId, e.solutionId, e.version); var dictMaster = await saasafrasClient.GetDictionary("vcadministration", "vcadministration", "vilcap", "0.0"); string lockValue; var ids = new GetIds(dictChild, dictMaster, e.environmentId); //Make sure to implement by checking to see if Deploy Curriculum has just changed //Deploy Curriculum field var functionName = "VilcapShareAppWithApplicant"; lockValue = await saasafrasClient.LockFunction(functionName, check.ItemId.ToString()); try { if (string.IsNullOrEmpty(lockValue)) { context.Logger.LogLine($"Failed to acquire lock for {functionName} and id {check.ItemId}"); return; } var fieldIdToSearch = ids.GetFieldId("Admin"); var newOptions = new FilterOptions { Limit = 1 }; context.Logger.LogLine("Checking for duplicates"); var items = await podio.FilterItems(ids.GetFieldId("Admin"), newOptions); var AdminOptionToCheck = await podio.GetItem(items.Items.First().ItemId); var serv = new GrantService(podio); //Create Email: var recipient = check.Field <EmailItemField>(ids.GetFieldId("Applications|Email")).Value.First().Value; var orgName = AdminOptionToCheck.Field <TextItemField>(ids.GetFieldId("Admin|Organization Name")).Value; var m = $"Invitation to Complete Your Application with {orgName}. " + "This application will automatically save as you work on it. You are advised " + "to either save your invitation email or bookmark your in-progress application for easy access. " + "You can view all of your Podio items by following the following link : <https://podio.com/vilcapcom/organization/grants>"; //Send email var email = recipient; var people = new List <Ref>(); var person = new Ref { Type = "mail", Id = email }; people.Add(person); var message = m; await serv.CreateGrant("item", check.ItemId, people, "view", message); var updateMe = new Item() { ItemId = check.ItemId }; updateMe.Field <CategoryItemField>(ids.GetFieldId("Applications|Application Status")).OptionText = "New Application"; await podio.UpdateItem(updateMe, true); } catch (Exception ex) { throw ex; } finally { await saasafrasClient.UnlockFunction(functionName, check.ItemId.ToString(), lockValue); } }
public async System.Threading.Tasks.Task FunctionHandler(RoutedPodioEvent e, ILambdaContext context) { var factory = new AuditedPodioClientFactory(e.solutionId, e.version, e.clientId, e.environmentId); var podio = factory.ForClient(e.clientId, e.environmentId); var check = await podio.GetItem(Convert.ToInt32(e.podioEvent.item_id)); var saasafrasClient = new SaasafrasClient(Environment.GetEnvironmentVariable("BBC_SERVICE_URL"), Environment.GetEnvironmentVariable("BBC_SERVICE_API_KEY")); var dictChild = await saasafrasClient.GetDictionary(e.clientId, e.environmentId, e.solutionId, e.version); var dictMaster = await saasafrasClient.GetDictionary("vcadministration", "vcadministration", "vilcap", "0.0"); string lockValue; var ids = new GetIds(dictChild, dictMaster, e.environmentId); //Make sure to implement by checking to see if Deploy Curriculum has just changed //Deploy Curriculum field var functionName = "VilcapShareWorkshopWithMentor"; lockValue = await saasafrasClient.LockFunction(functionName, check.ItemId.ToString()); try { if (string.IsNullOrEmpty(lockValue)) { context.Logger.LogLine($"Failed to acquire lock for {functionName} and id {check.ItemId}"); return; } //When an item is created in Entrepreneurs: var email = check.Field <EmailItemField>(ids.GetFieldId("Program Support|Email")).Value.First().Value; var serv = new GrantService(podio); //Send email var relationshipFieldId = ids.GetFieldId("Program Support|Workshop Sessions"); var relationshipField = check.Field <AppItemField>(relationshipFieldId); List <Item> items = (List <Item>)relationshipField.Items; var people = new List <Ref>(); var person = new Ref { Type = "mail", Id = email }; people.Add(person); if (items.Any() == false) { context.Logger.LogLine("No workshop session listed."); } foreach (var item in items) { var message = $"Event Attendance Confirmation: {item.Field<TextItemField>(ids.GetFieldId("Workshop Modules|Title")).Value}"; var itemId = item.ItemId; await serv.CreateGrant("item", item.ItemId, people, "view", message); } } catch (Exception ex) { throw ex; } finally { await saasafrasClient.UnlockFunction(functionName, check.ItemId.ToString(), lockValue); } }
public async System.Threading.Tasks.Task FunctionHandler(RoutedPodioEvent e, ILambdaContext context) { var factory = new AuditedPodioClientFactory(e.solutionId, e.version, e.clientId, e.environmentId); var podio = factory.ForClient(e.clientId, e.environmentId); var check = await podio.GetItem(Convert.ToInt32(e.podioEvent.item_id)); var saasafrasClient = new SaasafrasClient(Environment.GetEnvironmentVariable("BBC_SERVICE_URL"), Environment.GetEnvironmentVariable("BBC_SERVICE_API_KEY")); var dictChild = await saasafrasClient.GetDictionary(e.clientId, e.environmentId, e.solutionId, e.version); var dictMaster = await saasafrasClient.GetDictionary("vcadministration", "vcadministration", "vilcap", "0.0"); string lockValue; var ids = new GetIds(dictChild, dictMaster, e.environmentId); //Deploy Curriculum field var functionName = "VilcapCreateFinalSelCards"; lockValue = await saasafrasClient.LockFunction(functionName, check.ItemId.ToString()); try { if (string.IsNullOrEmpty(lockValue)) { context.Logger.LogLine($"Failed to acquire lock for {functionName} and id {check.ItemId}"); return; } //When an item is updated in Company Profiles and: var revision = await podio.GetRevisionDifference ( Convert.ToInt32(check.ItemId), check.CurrentRevision.Revision - 1, check.CurrentRevision.Revision ); var firstRevision = revision.First(); var selectionProcess = check.Field <CategoryItemField>(ids.GetFieldId("Company Profiles|Selection Process")); if (firstRevision.FieldId == selectionProcess.FieldId) { if (selectionProcess.Options.Any() && (selectionProcess.Options.First().Text == "Semi-Finalist" || selectionProcess.Options.First().Text == "Finalist")) { //Get view "Program Support": var viewServ = new ViewService(podio); var filterServ = new ItemService(podio); var selectionRound = ""; var viewName = ""; switch (selectionProcess.Options.First().Text) { case "Finalist": viewName = "Selection Committee - Final"; selectionRound = "Final Round"; break; case "Semi-Finalist": viewName = "Selection Committee - Semi Final"; selectionRound = "Semi-Final Round"; break; } var views = await viewServ.GetViews(ids.GetFieldId("Program Support")); var view = from v in views where v.Name == viewName select v; var viewItems = await filterServ.FilterItemsByView(ids.GetFieldId("Program Support"), int.Parse(view.First().ViewId), limit : 500); foreach (var item in viewItems.Items) { var create = new Item(); create.Field <CategoryItemField>(ids.GetFieldId("Diligence and Selection|Selection Round")).OptionText = selectionRound; create.Field <AppItemField>(ids.GetFieldId("Diligence and Selection|Company")).ItemId = check.ItemId; create.Field <AppItemField>(ids.GetFieldId("Diligence and Selection|Selection Comittee Member")).ItemId = item.ItemId; create.Field <EmailItemField>(ids.GetFieldId("Diligence and Selection|Shared Email")).Value = item.Field <EmailItemField>(ids.GetFieldId("Program Support|Email")).Value; var card = await podio.CreateItem(create, ids.GetFieldId("Diligence and Selection"), true); var serv = new GrantService(podio); //Create Email: var recipient = item.Field <EmailItemField>(ids.GetFieldId("Program Support|Email")).Value.FirstOrDefault().Value; var orgName = create.Field <TextItemField>(ids.GetFieldId("Diligence and Selection|Company")).Value; var m = $"Please Rate the {selectionRound} Company: {orgName}. \n" + "You can view all of your Podio items by at: <https://podio.com/vilcapcom/organization/grants>.\n " + "Please bookmark this link before changing your email notification settings."; //Send email var email = recipient; var people = new List <Ref>(); var person = new Ref { Type = "mail", Id = email }; people.Add(person); await serv.CreateGrant("item", check.ItemId, people, "rate", m); // await serv.CreateGrant("item", card, people, "rate", m); } } } } catch (Exception ex) { throw ex; } finally { await saasafrasClient.UnlockFunction(functionName, check.ItemId.ToString(), lockValue); } }
public async System.Threading.Tasks.Task FunctionHandler(RoutedPodioEvent e, ILambdaContext context) { var factory = new AuditedPodioClientFactory(e.solutionId, e.version, e.clientId, e.environmentId); var podio = factory.ForClient(e.clientId, e.environmentId); var check = await podio.GetItem(Convert.ToInt32(e.podioEvent.item_id)); var saasafrasClient = new SaasafrasClient(Environment.GetEnvironmentVariable("BBC_SERVICE_URL"), Environment.GetEnvironmentVariable("BBC_SERVICE_API_KEY")); var dictChild = await saasafrasClient.GetDictionary(e.clientId, e.environmentId, e.solutionId, e.version); var dictMaster = await saasafrasClient.GetDictionary("vcadministration", "vcadministration", "vilcap", "0.0"); string lockValue; var ids = new GetIds(dictChild, dictMaster, e.environmentId); //Make sure to implement by checking to see if Deploy Curriculum has just changed //Deploy Curriculum field var functionName = "VilcapShareDocument"; lockValue = await saasafrasClient.LockFunction(functionName, check.ItemId.ToString()); try { if (string.IsNullOrEmpty(lockValue)) { context.Logger.LogLine($"Failed to acquire lock for {functionName} and id {check.ItemId}"); return; } var serv = new GrantService(podio); var people = new List <Ref>(); var entrepreneurs = check.Field <AppItemField>(ids.GetFieldId("Cohort Documents|Entreprenuers")); context.Logger.LogLine($"--- count: {entrepreneurs.Items.Count()}"); foreach (var entrepreneur in entrepreneurs.Items) { var item = await podio.GetItem(entrepreneur.ItemId); var fieldId = ids.GetFieldId("Entrepreneurs|Entrepreneur Email"); var emailField = item.Field <EmailItemField>(fieldId); var email = emailField.Value.FirstOrDefault().Value; var person = new Ref { Type = "mail", Id = email }; people.Add(person); context.Logger.LogLine($"--- Added Email: {email}"); } var description = check.Field <TextItemField>(ids.GetFieldId("Cohort Documents|Docment Desciption")).Value; var message = $"Thank you for sending us your documents {description}. Please follow this link to view your submission."; await serv.CreateGrant("item", check.ItemId, people, "view", message); context.Logger.LogLine("--- Created grant(s)"); if (string.IsNullOrEmpty(description)) { var docName = check.Files[0].Name; var updateMe = new Item() { ItemId = check.ItemId }; description = updateMe.Field <TextItemField>(ids.GetFieldId("Cohort Documents|Docment Desciption")).Value; await podio.UpdateItem(updateMe, true); } context.Logger.LogLine("--- ok"); } catch (Exception ex) { throw ex; } finally { await saasafrasClient.UnlockFunction(functionName, check.ItemId.ToString(), lockValue); } }