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; } }