Ejemplo n.º 1
0
        /// <summary>
        /// Return an instance of Podio object
        /// </summary>
        /// <returns></returns>
        public static Podio GetClient()
        {
            /* SessionAuthStore is an implementation of PodioAPI.Utils.IAuthStore interface (stores OAuth data in DB)
            You can do your own implementation of IAuthStore interface if you need to store access token in database or whereever,
            and pass it in when you initialize Podio class
               */
            var dbAuthStore = new DbOAuthTokenStore();

            var podio = new Podio(ClientId, ClientSecret, dbAuthStore);
            if(HttpContext.Current.Session["UserId"] != null)
            {
                // If a userId is found in session, get the Sored token from database and set it to Podio object.
                var podioAuthData = new PodioOAuthData();
                var currentUserId = int.Parse(HttpContext.Current.Session["UserId"].ToString());

                var data = podioAuthData.GetbyUserId(currentUserId);
                if(data != null)
                {
                    var podioOAuthObject = JsonConvert.DeserializeObject<PodioOAuth>(data.OAuthJsonData);
                    podio.OAuth = podioOAuthObject;
                }
            }

            return podio;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Return an instance of Podio object
        /// </summary>
        /// <returns></returns>
        public Podio GetClient()
        {
            /* SessionAuthStore is an implementation of PodioAPI.Utils.IAuthStore interface (stores OAuth data in Session) which is provided by Podio-dotnet client libray out of box.
            You can do your own implementation of IAuthStore interface if you need to store access token in database or whereever,
            and pass it in when you initialize Podio class
               */
            var sessionAuthStore = new SessionAuthStore();

            var podio = new Podio(ClientId, ClientSecret, sessionAuthStore);
            return podio;
        }
Ejemplo n.º 3
0
        public async Task ItemTest()
        {
            Podio           _Podio;
            StaticAuthStore _AuthStore;

            _AuthStore = new StaticAuthStore();
            _Podio     = new Podio(Settings.ClientId, Settings.ClientSecret, _AuthStore);
            await _Podio.AuthenticateWithApp(Settings.AppId, Settings.AppToken);

            var items = await _Podio.ItemService.FilterItems(Settings.AppId);

            Assert.IsNotNull(items);
        }
Ejemplo n.º 4
0
        public async Task OrgTest()
        {
            Podio           _Podio;
            StaticAuthStore _AuthStore;

            _AuthStore = new StaticAuthStore();
            _Podio     = new Podio(Settings.ClientId, Settings.ClientSecret, _AuthStore);
            await _Podio.AuthenticateWithPassword("username", "password");

            Assert.IsTrue(_Podio.IsAuthenticated());

            var orgs = await _Podio.OrganizationService.GetOrganizations();

            Assert.IsNotNull(orgs);
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> CreateLink([FromBody] PodioSyncItemViewModel model,
                                                     [FromServices] CreateLink createLinkCommand,
                                                     [FromServices] CreateSyncEvent createSyncEventCommand)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var podio = new Podio(_options.PodioOptions.ClientId, _options.PodioOptions.ClientSecret);
            var app   = _queryDb.PodioApps.SingleOrDefault(x => x.PodioAppId == model.PodioAppId);
            await podio.AuthenticateWithApp(model.PodioAppId, app.AppToken);

            var podioItem = await podio.ItemService.GetItemByAppItemId(model.PodioAppId, model.AppItemId);

            if (_queryDb.Links.Any(x => x.PodioId == podioItem.ItemId))
            {
                return(Ok(new { ok = false }));
            }
            VssConnection connection             = new VssConnection(new Uri(_options.AzureOptions.ProjectUrl), new VssBasicCredential(string.Empty, _options.AzureOptions.AccessToken));;
            WorkItemTrackingHttpClient witClient = connection.GetClient <WorkItemTrackingHttpClient>();
            var azureItem = await witClient.GetWorkItemAsync(model.AzureItemId);

            var link = new PodioAzureItemLink
            {
                AzureId       = azureItem.Id.Value,
                AzureUrl      = azureItem.Url,
                AzureRevision = azureItem.Rev.Value,
                PodioAppId    = app.Id,
                PodioUrl      = podioItem.Link,
                PodioRevision = podioItem.CurrentRevision.Revision,
                PodioId       = podioItem.ItemId
            };

            createLinkCommand.InputModel = link;
            createLinkCommand.Run();

            createSyncEventCommand.InputModel = new SyncEvent
            {
                AzureRevision        = link.AzureRevision,
                Initiator            = Initiator.Manuel,
                PodioAzureItemLinkId = link.Id,
                PodioRevision        = link.PodioRevision,
                SyncDate             = DateTime.UtcNow
            };
            createSyncEventCommand.Run();
            return(Ok(new { ok = true }));
        }
Ejemplo n.º 6
0
        static void Main(string[] args)
        {
            var currentIp = GetCurrentIpAddress();

            Console.WriteLine($"Your current IP is: {currentIp}");

            var appId = 0;
            var podio = new Podio("clientId", "clientSecret");

            podio.AuthenticateWithApp(appId, "appSecret");


            var items = podio.ItemService.FilterItems(appId);

            Console.WriteLine("My app has " + items.Total + " items");


            Console.ReadLine();
        }
Ejemplo n.º 7
0
        public void GetAuthorizeUrlTest()
        {
            string testReturnUrl = "http://google.com";
            Podio  podio         = TestUtility.GetPodio();

            Assert.IsNotNull(podio);
            var url = podio.GetAuthorizeUrl(testReturnUrl);

            Assert.IsFalse(string.IsNullOrEmpty(url));
            Uri uri;

            Assert.IsTrue(Uri.TryCreate(url, UriKind.Absolute, out uri));
            var query = System.Web.HttpUtility.ParseQueryString(uri.Query);

            Assert.AreEqual(TestUtility.LoginSettings.ClientId, query["client_id"]);
            var redirectUri = query["redirect_uri"];

            Assert.AreEqual(testReturnUrl, redirectUri);
        }
Ejemplo n.º 8
0
        private static async Task <Podio> AuthenticatePodio()
        {
            var podio = new Podio("nyltformcapture", Secrets.PodioAppSecret);
            var vault = new Windows.Security.Credentials.PasswordVault();
            //if (vault.FindAllByResource("nyltformcapture").Count == 0)
            //{
            //    await Utilities.ShowPodioCredentialDialog();
            //}
            var credentials = vault.FindAllByResource("nyltformcapture");

            if (credentials.Count > 0)
            {
                var credential = credentials.FirstOrDefault();
                credential.RetrievePassword();
                await podio.AuthenticateWithPassword(credential.UserName, credential.Password);

                return(podio);
            }
            throw new Exception("There are no relevant credentials stored.");
        }
Ejemplo n.º 9
0
        public async Task <IActionResult> SyncPodioItem([FromBody] PodioSyncItemViewModel model, [FromServices] CreateLink createLinkCommand)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var podio = new Podio(_options.PodioOptions.ClientId, _options.PodioOptions.ClientSecret);
            var app   = _queryDb.PodioApps.SingleOrDefault(x => x.PodioAppId == model.PodioAppId);
            await podio.AuthenticateWithApp(model.PodioAppId, app.AppToken);

            var item = await podio.ItemService.GetItemByAppItemId(model.PodioAppId, model.AppItemId);

            if (_queryDb.Links.Any(x => x.PodioId == item.ItemId))
            {
                return(Ok(new { ok = false }));
            }
            var azureLink = await _syncService.SyncPodioItemToAzure(createLinkCommand, podio, app, item);

            return(Ok(new { url = azureLink, ok = true }));
        }
Ejemplo n.º 10
0
        public async Task CreateItem()
        {
            Podio podio = await TestUtility.GetPodioAndUserLogin();

            var allOrganizations = await podio.OrganizationService.GetOrganizations();

            var organization = allOrganizations.FirstOrDefault();
            var space        = organization.Spaces.Where(s => s.Name == "PodioPCL Tests").FirstOrDefault();

            var apps = await podio.ApplicationService.GetAppsBySpace(space.SpaceId);

            var app = apps.Where(a => a.AppId == 10568817).FirstOrDefault();

            Item item = new Item();

            item.Fields.Add(new TextItemField {
                ExternalId = "sample-text-field-description", Text = "hello world"
            });
            var id = await podio.ItemService.AddNewItem(app.AppId, item);

            Assert.IsNotNull(item);
        }
Ejemplo n.º 11
0
        // Google Drive : DriveService


        public string GetSubfolderId(DriveService ds, Podio podio, RoutedPodioEvent e, string parentFolder)
        {
            try
            {
                //Console.WriteLine($"{e.podioEvent.item_id} - EnvID: {e.environmentId}");
                var listReq = ds.Files.List();
                listReq.Q = "name='" + e.environmentId + "'";
                var folderId = "";

                if (listReq.Execute().Files.Any())
                {
                    folderId = listReq.Execute().Files[0].Id;
                }
                else if (folderId == "")
                {
                    var folder = new File
                    {
                        Name     = e.environmentId,
                        MimeType = "application/vnd.google-apps.folder",
                    };
                    var F = new File();
                    //F.Name = e.environmentId; // test
                    //F.MimeType = "application/vnd.google-apps.folder"; // test
                    folder.Parents.Add(parentFolder);
                    var request = ds.Files.Create(folder);
                    request.Fields = "id";

                    folderId = request.Execute().Id;
                }
                return(folderId);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"ERROR: {e.podioEvent.item_id} - {ex.Message} - {ex.StackTrace} - {ex.InnerException}");
                return(null);
            }
        }
Ejemplo n.º 12
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ConversationService"/> class.
 /// </summary>
 /// <param name="currentInstance">The current instance.</param>
 public ConversationService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 13
0
 public AppMarketService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 14
0
 public CalendarService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 15
0
 public WidgetService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 16
0
 public SearchService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 17
0
 public ConversationService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 18
0
 public StreamService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 19
0
 public AppMarketService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 20
0
 public WidgetService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 21
0
		/// <summary>
		/// Initializes a new instance of the <see cref="SubscriptionService"/> class.
		/// </summary>
		/// <param name="currentInstance">The current instance.</param>
        public SubscriptionService(Podio currentInstance)
        {
            _podio = currentInstance;
        }
Ejemplo n.º 22
0
		/// <summary>
		/// Initializes a new instance of the <see cref="ReminderService"/> class.
		/// </summary>
		/// <param name="currentInstance">The current instance.</param>
		public ReminderService(Podio currentInstance)
		{
			_podio = currentInstance;
		}
Ejemplo n.º 23
0
		/// <summary>
		/// Initializes a new instance of the <see cref="QuestionService"/> class.
		/// </summary>
		/// <param name="currentInstance">The current instance.</param>
        public QuestionService(Podio currentInstance)
        {
            _podio = currentInstance;
        }
Ejemplo n.º 24
0
		/// <summary>
		/// Initializes a new instance of the <see cref="GrantService"/> class.
		/// </summary>
		/// <param name="currentInstance">The current instance.</param>
		public GrantService(Podio currentInstance)
		{
			_podio = currentInstance;
		}
Ejemplo n.º 25
0
 public SearchService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 26
0
		public static Podio GetPodio()
		{
			LoginSettings = new LoginSettings().LoadFromConfig();
			Podio podio = new Podio(LoginSettings.ClientId, LoginSettings.ClientSecret, new StaticAuthStore());
			return podio;
		}
Ejemplo n.º 27
0
 public IntegrationService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 28
0
		/// <summary>
		/// Initializes a new instance of the <see cref="ImporterService"/> class.
		/// </summary>
		/// <param name="currentInstance">The current instance.</param>
        public ImporterService(Podio currentInstance)
        {
            _podio = currentInstance;
        }
Ejemplo n.º 29
0
		/// <summary>
		/// Initializes a new instance of the <see cref="HookService"/> class.
		/// </summary>
		/// <param name="currentInstance">The current instance.</param>
		public HookService(Podio currentInstance)
		{
			_podio = currentInstance;
		}
Ejemplo n.º 30
0
        private void applyFieldValues(Podio.API.Model.Item item, FormCollection collection)
        {
            foreach (var appField in Application.Fields)
            {
                var rawValue = collection[appField.ExternalId];
                if (!String.IsNullOrEmpty(rawValue) || appField.Type == "image")
                {
                    switch (appField.Type)
                    {
                        case "text":
                            var textField = item.Field<TextItemField>(appField.ExternalId);
                            textField.ExternalId = appField.ExternalId;
                            textField.Value = rawValue;
                            item.Fields.Add(textField);
                            break;
                        case "app":
                            var appRefField = item.Field<AppItemField>(appField.ExternalId);
                            appRefField.ExternalId = appField.ExternalId;
                            appRefField.ItemIds = rawValue.Split(',').Select(id => int.Parse(id));
                            item.Fields.Add(appRefField);
                            break;
                        case "contact":
                            var contactField = item.Field<ContactItemField>(appField.ExternalId);
                            contactField.ExternalId = appField.ExternalId;
                            contactField.ContactIds = rawValue.Split(',').Select(id => int.Parse(id));
                            item.Fields.Add(contactField);
                            break;
                        case "location":
                            var locationField = item.Field<LocationItemField>(appField.ExternalId);
                            locationField.ExternalId = appField.ExternalId;
                            locationField.Locations = new List<string>(rawValue.Split(','));
                            item.Fields.Add(locationField);
                            break;
                        case "duration":
                            var durationField = item.Field<DurationItemField>(appField.ExternalId);
                            durationField.ExternalId = appField.ExternalId;
                            durationField.Value = TimeSpan.FromSeconds(Int64.Parse(rawValue));
                            item.Fields.Add(durationField);
                            break;
                        case "progress":
                            var progressField = item.Field<ProgressItemField>(appField.ExternalId);
                            progressField.ExternalId = appField.ExternalId;
                            progressField.Value = int.Parse(rawValue);
                            item.Fields.Add(progressField);
                            break;
                        case "money":
                            var currency = collection[appField.ExternalId + "_currency"];
                            if (!String.IsNullOrEmpty(currency))
                            {
                                var moneyField = item.Field<MoneyItemField>(appField.ExternalId);
                                moneyField.ExternalId = appField.ExternalId;
                                moneyField.Value = int.Parse(rawValue);
                                moneyField.Currency = currency;
                                item.Fields.Add(moneyField);
                            }
                            break;
                        case "date":
                            var dateField = item.Field<DateItemField>(appField.ExternalId);
                            dateField.ExternalId = appField.ExternalId;
                            dateField.Start = DateTime.Parse(rawValue);
                            var endString = collection[appField.ExternalId + "_end"];
                            if (!String.IsNullOrEmpty(endString))
                            {
                                dateField.End = DateTime.Parse(endString);
                            }
                            item.Fields.Add(dateField);
                            break;
                        case "question":
                        case "category":
                            var categoryAppField = Application.Field<CategoryApplicationField>(appField.ExternalId);
                            var categoryItemField = item.Field<CategoryItemField>(appField.ExternalId);
                            categoryItemField.ExternalId = appField.ExternalId;
                            if (categoryAppField.Multiple)
                            {
                                categoryItemField.OptionIds = rawValue.Split(',').Select(id => int.Parse(id));
                            }
                            else
                            {
                                categoryItemField.OptionId = int.Parse(rawValue);
                            }
                            item.Fields.Add(categoryItemField);
                            break;
                        case "embed":
                            var embedField = item.Field<EmbedItemField>(appField.ExternalId);
                            embedField.ExternalId = appField.ExternalId;
                            var embedUrls = new List<string>(rawValue.Split(','));
                            foreach (var embedUrl in embedUrls)
                            {
                                var embed = this.Client.EmbedService.AddAnEmbed(embedUrl.Trim());
                                if (embed.Files.Count > 0)
                                {
                                    embedField.AddEmbed((int)embed.EmbedId, embed.Files.First().FileId);
                                }
                                else
                                {
                                    embedField.AddEmbed((int)embed.EmbedId);
                                }
                            }
                            item.Fields.Add(embedField);
                            break;
                        case "image":
                            // This will break if app has more than one image field - each will get all the uploaded images
                            var fileIds = new List<int>();
                            foreach (string requestFile in Request.Files)
                            {
                                HttpPostedFileBase file = Request.Files[requestFile];
                                if (file.ContentLength > 0)
                                {
                                    byte[] data = new byte[file.ContentLength];
                                    file.InputStream.Read(data, 0, file.ContentLength);
                                    FileAttachment fileAttachment = this.Client.FileService.UploadFile(data, file.FileName, file.ContentType);
                                    fileIds.Add((int)fileAttachment.FileId);
                                }
                            }

                            if (fileIds.Count > 0)
                            {
                                var imageField = item.Field<ImageItemField>(appField.ExternalId);
                                imageField.ExternalId = appField.ExternalId;
                                imageField.FileIds = fileIds;
                                item.Fields.Add(imageField);
                            }
                            break;
                    }
                }
            }
        }
Ejemplo n.º 31
0
 public StatusService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 32
0
 public EmbedService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 33
0
 public ReferenceService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 34
0
 public SubscriptionService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 35
0
 public IntegrationService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 36
0
 public CommentService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 37
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SpaceMembersService"/> class.
 /// </summary>
 /// <param name="currentInstance">The current instance.</param>
 public SpaceMembersService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 38
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ReminderService"/> class.
 /// </summary>
 /// <param name="currentInstance">The current instance.</param>
 public ReminderService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 39
0
 public ContactService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 40
0
 public async System.Threading.Tasks.Task NonGDriveCopy(Embed embed, List <Embed> embeds, Podio podio, RoutedPodioEvent e)         // Hold for 2.0 //
 {
     try
     {
         Console.WriteLine($"{e.podioEvent.item_id} - Direct URL Embed Link (resolved): {embed.ResolvedUrl}");
         Console.WriteLine($"{e.podioEvent.item_id} - Direct URL Embed Link (original): {embed.OriginalUrl}");
         await System.Threading.Tasks.Task.Run(() =>
         {
             embeds.Add(embed);
         });
     }
     catch (Exception ex)
     {
         Console.WriteLine($"{e.podioEvent.item_id} - {ex.Message} - {ex.StackTrace} - {ex.InnerException}");
         throw ex;
     }
 }
Ejemplo n.º 41
0
 public ViewService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 42
0
 public OrganizationService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 43
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FormService"/> class.
 /// </summary>
 /// <param name="currentInstance">The current instance.</param>
 public FormService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 44
0
 public UserService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 45
0
        public async System.Threading.Tasks.Task CreateTaskLists(ILambdaContext context, Podio podio, Item check, RoutedPodioEvent e, DriveService service, GetIds ids, GoogleIntegration google, PreSurvAndExp pre)
        {
            string commentText;
            var    TlStatusId  = ids.GetFieldId("Admin|Hidden Status");
            var    startDateId = ids.GetFieldId("Admin|Program Start Date");
            //var packageId = ids.GetFieldId("Admin|Curriculum Package");
            //string packageName = check.Field<CategoryItemField>(packageId).Options.First().Text;
            var fieldId = 0;

            context.Logger.LogLine("Satisfied conditions, Task List Function");
            var viewServ = new ViewService(podio);

            context.Logger.LogLine("Got View Service");
            var views = await viewServ.GetViews(21310276);            //VC Admin Master Schedule App

            var view = from v in views
                       where v.Name == "Package" // ------------- >> where v.Name == packageName
                       select v;
            //context.Logger.LogLine($"Got View '{packageName}'");
            var op = new FilterOptions {
                Filters = view.First().Filters
            };

            if (check.Field <CategoryItemField>(TlStatusId).Options.First().Text == "1")
            {
                context.Logger.LogLine("Grabbing items 1-30");
                op.Offset = 0;
                op.Limit  = 30;
                filter    = await podio.FilterItems(21310276, op);

                commentText = "Batch 1 finished";
            }
            else if (check.Field <CategoryItemField>(TlStatusId).Options.First().Text == "2")
            {
                context.Logger.LogLine("Grabbing items 31-60");
                op.Offset = 30;
                op.Limit  = 30;
                filter    = await podio.FilterItems(21310276, op);

                commentText = "Batch 2 finished";
            }
            else if (check.Field <CategoryItemField>(TlStatusId).Options.First().Text == "3")
            {
                context.Logger.LogLine("Grabbing items 61-90");
                op.Offset = 60;
                op.Limit  = 30;
                filter    = await podio.FilterItems(21310276, op);

                commentText = "Batch 3 finished";
            }
            else if (check.Field <CategoryItemField>(TlStatusId).Options.First().Text == "4")
            {
                context.Logger.LogLine("Grabbing items 91-120 with links");
                op.Offset = 90;
                op.Limit  = 30;
                filter    = await podio.FilterItems(21310276, op);

                commentText = "Batch 4 finished";
            }
            else if (check.Field <CategoryItemField>(TlStatusId).Options.First().Text == "5")
            {
                context.Logger.LogLine("Grabbing items 121-150 with links");
                op.Offset = 120;
                op.Limit  = 30;
                filter    = await podio.FilterItems(21310276, op);

                commentText = "Batch 5 finished";
            }
            else if (check.Field <CategoryItemField>(TlStatusId).Options.First().Text == "6")
            {
                context.Logger.LogLine("Grabbing items 151-180 with links");
                op.Offset = 150;
                op.Limit  = 30;
                filter    = await podio.FilterItems(21310276, op);

                commentText = "Batch 6 finished";
            }
            else if (check.Field <CategoryItemField>(TlStatusId).Options.First().Text == "7")
            {
                context.Logger.LogLine("Grabbing items 181-210 with links");
                op.Offset = 180;
                op.Limit  = 30;
                filter    = await podio.FilterItems(21310276, op);

                commentText = "Batch 7 finished";
            }
            else if (check.Field <CategoryItemField>(TlStatusId).Options.First().Text == "8")
            {
                context.Logger.LogLine("Grabbing items 211-240 with links");
                op.Offset = 210;
                op.Limit  = 30;
                filter    = await podio.FilterItems(21310276, op);

                commentText = "Batch 8 finished";
            }
            else
            {
                context.Logger.LogLine("Grabbing nothing --- undefined input");
                commentText = "";
            }
            context.Logger.LogLine($"Items in filter:{filter.Items.Count()}");
            var count = 0;

            foreach (var masterItem in filter.Items)
            {
                count += 1;
                context.Logger.LogLine($"On item #: {count}");
                var child = new Item();


                //--- Assign Fields ---//
                fieldId = ids.GetFieldId("VC Administration|Master Schedule|Task Name");
                var nameMaster = masterItem.Field <TextItemField>(fieldId);
                if (nameMaster.Value != null)
                {
                    fieldId = ids.GetFieldId("Task List|Title");
                    var nameChild = child.Field <TextItemField>(fieldId);
                    nameChild.Value = nameMaster.Value;
                }
                context.Logger.LogLine($"Added field:{nameMaster.Label}");
                fieldId = ids.GetFieldId("VC Administration|Master Schedule|Desciption");
                var descrMaster = masterItem.Field <TextItemField>(fieldId);
                if (descrMaster.Value != null)
                {
                    fieldId = ids.GetFieldId("Task List|Description");
                    var descrChild = child.Field <TextItemField>(fieldId);
                    //descrChild.Value = StripHTML(descrMaster.Value);
                    descrChild.Value = descrMaster.Value;
                }
                context.Logger.LogLine($"Added field:{descrMaster.Label}");

                fieldId = ids.GetFieldId("VC Administration|Master Schedule|Phase");
                var phaseMaster = masterItem.Field <CategoryItemField>(fieldId);
                if (phaseMaster.Options.Any())
                {
                    fieldId = ids.GetFieldId("Task List|Phase");
                    var phaseChild = child.Field <CategoryItemField>(fieldId);
                    phaseChild.OptionText = phaseMaster.Options.First().Text;
                    if (phaseMaster.Options.First().Text == "Dependent Task")
                    {
                        continue;
                    }
                }

                context.Logger.LogLine($"Added field:{phaseMaster.Label}");
                fieldId = ids.GetFieldId("VC Administration|Master Schedule|ESO Member Role");
                var esoMaster = masterItem.Field <CategoryItemField>(fieldId);
                if (esoMaster.Options.Any())
                {
                    fieldId = ids.GetFieldId("Task List|ESO Member Role");
                    var esoChild = child.Field <CategoryItemField>(fieldId);
                    esoChild.OptionText = esoMaster.Options.First().Text;
                }
                context.Logger.LogLine($"Added field:{esoMaster.Label}");
                fieldId = ids.GetFieldId("VC Administration|Master Schedule|Project");
                var projectMaster = masterItem.Field <CategoryItemField>(fieldId);
                if (projectMaster.Options.Any())
                {
                    fieldId = ids.GetFieldId("Task List|Project");
                    var projectChild = child.Field <CategoryItemField>(fieldId);
                    projectChild.OptionText = projectMaster.Options.First().Text;
                }
                context.Logger.LogLine($"Added field:{projectMaster.Label}");

                fieldId = ids.GetFieldId("VC Administration|Master Schedule|Base Workshop Association");
                var wsMaster = masterItem.Field <CategoryItemField>(fieldId);
                if (wsMaster.Options.Any())
                {
                    fieldId = ids.GetFieldId("Task List|WS Association");
                    var wsChild = child.Field <TextItemField>(fieldId);
                    wsChild.Value = wsMaster.Options.First().Text;
                    fieldId       = ids.GetFieldId("Task List|Parent WS");
                    var parentChild = child.Field <CategoryItemField>(fieldId);
                    parentChild.OptionText = wsMaster.Options.First().Text;
                }
                context.Logger.LogLine($"Added field:{wsMaster.Label}");
                fieldId = ids.GetFieldId("VC Administration|Master Schedule|Weeks Off-Set");
                var offsetMaster = masterItem.Field <NumericItemField>(fieldId);
                if (offsetMaster.Value.HasValue)
                {
                    fieldId = ids.GetFieldId("Task List|Week Offset");
                    var offsetChild = child.Field <NumericItemField>(fieldId);
                    offsetChild.Value = offsetMaster.Value;
                    fieldId           = ids.GetFieldId("Task List|Weeks Before WS");
                    var weeksChild = child.Field <NumericItemField>(fieldId);
                    weeksChild.Value = offsetMaster.Value;
                }
                context.Logger.LogLine($"Added field:{offsetMaster.Label}");
                fieldId = ids.GetFieldId("Task List|Completetion");
                var comChild = child.Field <CategoryItemField>(fieldId);
                comChild.OptionText = "Incomplete";
                context.Logger.LogLine($"Added field: Completion");

                fieldId = ids.GetFieldId("VC Administration|Master Schedule|Duration (Days)");
                var durMaster = masterItem.Field <NumericItemField>(fieldId);
                if (durMaster.Value.HasValue)
                {
                    fieldId = ids.GetFieldId("Task List|Duration (days)");
                    var durChild = child.Field <NumericItemField>(fieldId);
                    durChild.Value = durMaster.Value;
                }
                context.Logger.LogLine($"Added field:{durMaster.Label}");
                fieldId = ids.GetFieldId("VC Administration|Master Schedule|Dependancy");
                var depMaster = masterItem.Field <TextItemField>(fieldId);
                if (depMaster.Value != null)
                {
                    fieldId = ids.GetFieldId("Task List|Additional Dependencies");
                    var depChild = child.Field <TextItemField>(fieldId);
                    depChild.Value = depMaster.Value;
                }
                context.Logger.LogLine($"Added field:{depMaster.Label}");
                fieldId = ids.GetFieldId("VC Administration|Master Schedule|Gdrive Link");
                var embedMaster = masterItem.Field <EmbedItemField>(fieldId);
                fieldId = ids.GetFieldId("Task List|Linked Files");
                var embedChild     = child.Field <EmbedItemField>(fieldId);
                var embeds         = new List <Embed>();
                var parentFolderId = Environment.GetEnvironmentVariable("GOOGLE_PARENT_FOLDER_ID");
                var cloneFolderId  = google.GetSubfolderId(service, podio, e, parentFolderId);               //TODO:
                foreach (var em in embedMaster.Embeds)
                {
                    if (em.OriginalUrl.Contains(".google."))
                    {
                        await google.UpdateOneEmbed(service, em, embeds, cloneFolderId, podio, e);
                    }
                    //else          // Hold for 2.0 //
                    //{
                    //	NonGdriveLinks nonG = new NonGdriveLinks();
                    //	await nonG.NonGDriveCopy(em, embeds, podio, e);
                    //}
                }
                foreach (var embed in embeds)
                {
                    embedChild.AddEmbed(embed.EmbedId);
                }
                context.Logger.LogLine($"Added field:{embedMaster.Label}");
                var taskListAppId = ids.GetFieldId("Task List");
                var waitSeconds   = 5;
CallPodio:
                try
                {
                    await podio.CreateItem(child, taskListAppId, true);                    //child task list appId
                }
                catch (PodioUnavailableException ex)
                {
                    context.Logger.LogLine($"{ex.Message}");
                    context.Logger.LogLine($"Trying again in {waitSeconds} seconds.");
                    for (var i = 0; i < waitSeconds; i++)
                    {
                        System.Threading.Thread.Sleep(1000);
                        context.Logger.LogLine(".");
                    }
                    waitSeconds = waitSeconds * 2;
                    goto CallPodio;
                }
                context.Logger.LogLine($"Created item #{count}");
            }
            var comm = new CommentService(podio);

            if (check.Field <CategoryItemField>(TlStatusId).Options.First().Text == "1")
            {
                await pre.CreateExpendituresAndPreWSSurvs(context, podio, viewServ, check, e, service, ids, google);
            }
            await comm.AddCommentToObject("item", check.ItemId, commentText, hook : true);
        }
Ejemplo n.º 46
0
 public TagService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 47
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ImporterService"/> class.
 /// </summary>
 /// <param name="currentInstance">The current instance.</param>
 public ImporterService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 48
0
		/// <summary>
		/// Initializes a new instance of the <see cref="PodioTaskService"/> class.
		/// </summary>
		/// <param name="currentInstance">The current instance.</param>
		public PodioTaskService(Podio currentInstance)
		{
			_podio = currentInstance;
		}
Ejemplo n.º 49
0
	  /// <summary>
	  /// Initializes a new instance of the <see cref="ActionService"/> class.
	  /// </summary>
	  /// <param name="currentInstance">The current instance.</param>
      public ActionService(Podio currentInstance)
      {
          _podio = currentInstance;
      }
Ejemplo n.º 50
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GrantService"/> class.
 /// </summary>
 /// <param name="currentInstance">The current instance.</param>
 public GrantService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 51
0
 public BatchService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 52
0
 /// <summary>
 /// Initializes a new instance of the <see cref="HookService"/> class.
 /// </summary>
 /// <param name="currentInstance">The current instance.</param>
 public HookService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 53
0
		/// <summary>
		/// Initializes a new instance of the <see cref="ApplicationService"/> class.
		/// </summary>
		/// <param name="currentInstance">The current instance.</param>
		public ApplicationService(Podio currentInstance)
		{
			_podio = currentInstance;
		}
Ejemplo n.º 54
0
 public RatingService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 55
0
 public ReferenceService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 56
0
 public FileService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 57
0
 /// <summary>
 /// Initializes a new instance of the service.
 /// </summary>
 /// <param name="currentInstance">The current <see cref="T:PodioPCL.Podio"/> instance.</param>
 internal ActionService(Podio currentInstance)
     : base(currentInstance)
 {
 }
Ejemplo n.º 58
0
 public UserService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Ejemplo n.º 59
0
		/// <summary>
		/// Initializes a new instance of the <see cref="SpaceService"/> class.
		/// </summary>
		/// <param name="currentInstance">The current instance.</param>
        public SpaceService(Podio currentInstance)
        {
            _podio = currentInstance;
        }
Ejemplo n.º 60
0
		/// <summary>
		/// Initializes a new instance of the <see cref="StatusService"/> class.
		/// </summary>
		/// <param name="currentInstance">The current instance.</param>
        public StatusService(Podio currentInstance)
        {
            _podio = currentInstance;
        }