Пример #1
0
        private async Task InsertKeyPhrases(KeyPhrasesRequest keyPhrasesReq, string MSCognitiveServicesAccessToken)
        {
            PTI.CognitiveServicesClient.CognitiveServicesClient objCSClient =
                new PTI.CognitiveServicesClient.CognitiveServicesClient(MSCognitiveServicesAccessToken);
            int totalPages = (int)Math.Ceiling((decimal)keyPhrasesReq.documents.Count() / (decimal)1000);

            for (int iPage = 0; iPage < totalPages; iPage++)
            {
                var reqBatch = keyPhrasesReq.documents.Skip(iPage * 1000).Take(1000);
                var tmpreq   = new PTI.CognitiveServicesClient.MSCognitiveServices.KeyPhrases.KeyPhrasesRequest();
                tmpreq.documents = reqBatch.ToArray();
                var keyPhrasesResponse = await objCSClient.GetKeyPhrases(tmpreq);

                using (MoodDetector.DataAccess.MoodDetectorContext ctx = new MoodDetector.DataAccess.MoodDetectorContext())
                {
                    ctx.Configuration.AutoDetectChangesEnabled = false;
                    foreach (var singleKeyPhraseRecord in keyPhrasesResponse.documents)
                    {
                        if (singleKeyPhraseRecord.keyPhrases != null && singleKeyPhraseRecord.keyPhrases.Count() > 0)
                        {
                            var userPost = ctx.FacebookUserPosts.Where(p => p.PostId == singleKeyPhraseRecord.id).FirstOrDefault();
                            foreach (var singleKeyPhrase in singleKeyPhraseRecord.keyPhrases)
                            {
                                if (!String.IsNullOrWhiteSpace(singleKeyPhrase))
                                {
                                    var objNewKeyPhraseRecord = new DataAccess.FacebookUserPostKeyPhras();
                                    objNewKeyPhraseRecord.FacebookUserPostId = userPost.FacebookUserPostId;
                                    objNewKeyPhraseRecord.KeyPhrases         = singleKeyPhrase;
                                    ctx.FacebookUserPostKeyPhrases.Add(objNewKeyPhraseRecord);
                                }
                                else
                                {
                                    //TODO: Add Log to this cases
                                }
                            }
                        }
                    }
                    ctx.SaveChanges();
                }
            }
        }