Пример #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;
        }
Пример #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;
        }
Пример #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);
        }
Пример #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);
        }
Пример #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 }));
        }
Пример #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();
        }
Пример #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);
        }
Пример #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.");
        }
Пример #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 }));
        }
Пример #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);
        }
Пример #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);
            }
        }
Пример #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;
 }
Пример #13
0
 public AppMarketService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #14
0
 public CalendarService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #15
0
 public WidgetService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #16
0
 public SearchService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #17
0
 public ConversationService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #18
0
 public StreamService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #19
0
 public AppMarketService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #20
0
 public WidgetService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #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;
        }
Пример #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;
		}
Пример #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;
        }
Пример #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;
		}
Пример #25
0
 public SearchService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #26
0
		public static Podio GetPodio()
		{
			LoginSettings = new LoginSettings().LoadFromConfig();
			Podio podio = new Podio(LoginSettings.ClientId, LoginSettings.ClientSecret, new StaticAuthStore());
			return podio;
		}
Пример #27
0
 public IntegrationService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #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;
        }
Пример #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;
		}
Пример #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;
                    }
                }
            }
        }
Пример #31
0
 public StatusService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #32
0
 public EmbedService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #33
0
 public ReferenceService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #34
0
 public SubscriptionService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #35
0
 public IntegrationService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #36
0
 public CommentService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #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;
 }
Пример #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;
 }
Пример #39
0
 public ContactService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #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;
     }
 }
Пример #41
0
 public ViewService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #42
0
 public OrganizationService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #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;
 }
Пример #44
0
 public UserService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #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);
        }
Пример #46
0
 public TagService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #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;
 }
Пример #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;
		}
Пример #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;
      }
Пример #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;
 }
Пример #51
0
 public BatchService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #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;
 }
Пример #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;
		}
Пример #54
0
 public RatingService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #55
0
 public ReferenceService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #56
0
 public FileService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #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)
 {
 }
Пример #58
0
 public UserService(Podio currentInstance)
 {
     _podio = currentInstance;
 }
Пример #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;
        }
Пример #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;
        }