コード例 #1
0
        public async Task <string> AddNew(string accessToken)
        {
            try
            {
                if (!Is_Instagram_Sync_Running)
                {
                    Is_Instagram_Sync_Running = true;

                    string nextUrl = null;
                    bool   areAllItemsNew;
                    int    productsCount = _ProductsRepository.GetTopProductId();
                    do
                    {
                        var data = await _IInstagramGraphApi.GetPagedInstagramPosts(accessToken, nextUrl);

                        var posts = data.Item1;
                        nextUrl = data.Item2;

                        List <InstagramPost> newPosts = new List <InstagramPost>();
                        foreach (var post in posts)
                        {
                            var existingPost = _ProductsRepository.GetProductByCode(post.Id);
                            if (existingPost == null)
                            {
                                newPosts.Add(post);
                            }
                        }

                        if (newPosts.Count == 0)
                        {
                            break;
                        }

                        areAllItemsNew = newPosts.Count == posts.Count();

                        var newProductsList = ConvertInstagramPostToProducts(newPosts, productsCount + 1);

                        _ProductsRepository.AddProducts(newProductsList.Products);
                        _ProductsRepository.AddProductsDetails(newProductsList.ProductsDetails);

                        productsCount += newPosts.Count;
                    }while (areAllItemsNew);

                    return("Done");
                }
                else
                {
                    return("Already_Running");
                }
            }
            finally
            {
                Is_Instagram_Sync_Running = false;
            }
        }