コード例 #1
0
ファイル: Function.cs プロジェクト: ChadCritchelow/VilCap
        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);
            }
        }
コード例 #2
0
 public ConnectController(
     GrantService grantService,
     ClientService clientService,
     TokenFactory tokenFactory,
     ILogger <ConnectController> logger)
 {
     _grantService  = grantService;
     _clientService = clientService;
     _tokenFactory  = tokenFactory;
     _logger        = logger;
 }
コード例 #3
0
ファイル: Function.cs プロジェクト: ChadCritchelow/VilCap
        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);
            }
        }
コード例 #4
0
ファイル: Function.cs プロジェクト: ChadCritchelow/VilCap
        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);
            }
        }
コード例 #5
0
        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);
            }
        }
コード例 #6
0
        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);
            }
        }
コード例 #7
0
 public IdsrvGrantStore(
     GrantService svc
     )
 {
     _svc = svc;
 }
コード例 #8
0
ファイル: Function.cs プロジェクト: ChadCritchelow/VilCap
        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);
            }
        }