예제 #1
0
        public async Task UpdateFbPost(int accountid, AccountFbPostViewModel model, string username)
        {
            var filter = new AccountFbPostSpecification(model.PostId);
            var post   = await _accountFbPostRepository.GetSingleBySpecAsync(filter);

            if (post == null)
            {
                post = new AccountFbPost()
                {
                    AccountId    = accountid,
                    CommentCount = model.CommentCount,
                    DateCreated  = DateTime.Now,
                    DateModified = DateTime.Now,
                    LikeCount    = model.LikeCount,
                    Link         = model.Link,
                    Message      = model.Message,
                    Picture      = model.Picture,
                    PostId       = model.PostId,
                    PostTime     = model.PostTime,
                    ShareCount   = model.ShareCount,
                    UserCreated  = username,
                    UserModified = username,
                    Permalink    = model.Permalink
                };
                await _accountFbPostRepository.AddAsync(post);
            }
            else
            {
                post.ShareCount   = model.ShareCount;
                post.LikeCount    = model.LikeCount;
                post.CommentCount = model.CommentCount;
                post.DateModified = DateTime.Now;
                post.UserModified = username;



                await _accountFbPostRepository.UpdateAsync(post);
            }
        }
예제 #2
0
        public async Task UpdateFbPost(int accountid, string username, int type = 1)
        {
            var accountProvider = await _accountService.GetAccountProviderByAccount(accountid, AccountProviderNames.Facebook);

            if (accountProvider != null)
            {
                var since = type == 1 ? DateTime.Now.AddMonths(-6).ToUnixTime() : DateTime.Now.AddMonths(-2).ToUnixTime();
                //var since = DateTime.Now.AddDays(-5).ToUnixTime();
                // chi lay 1000 bai`


                var fbPosts = await _facebookHelper.GetPosts(accountProvider.AccessToken, accountProvider.ProviderId, since);

                if (fbPosts == null || fbPosts.Count == 0)
                {
                    return;
                }


                if (type == 2)
                {
                    var campaignAccounts = await _campaignService.GetListCampaignByAccount(accountid, 0, string.Empty, 1, fbPosts.Count);

                    foreach (var campaign in campaignAccounts.Campaigns)
                    {
                        AccountFbPostViewModel fbPost = null;
                        var refurl = campaign.CampaignAccount.RefUrl;
                        var refid  = campaign.CampaignAccount.RefId;


                        // chỉ check facebook post của người đã đồng ý tham gia chiến dịch
                        if ((campaign.CampaignAccount.Status == CampaignAccountStatus.Confirmed ||
                             campaign.CampaignAccount.Status == CampaignAccountStatus.ApprovedContent ||
                             campaign.CampaignAccount.Status == CampaignAccountStatus.UpdatedContent) &&
                            campaign.Status == CampaignStatus.Started)
                        {
                            //if (string.IsNullOrEmpty(refid) && !string.IsNullOrEmpty(refurl))
                            if (!string.IsNullOrEmpty(refurl))
                            {
                                // truong hop influencer tụ cập nhật link kết quả
                                fbPost = fbPosts.Where(m => !string.IsNullOrEmpty(m.PostId2) && refurl.Contains(m.PostId2)).FirstOrDefault();
                                if (fbPost == null)
                                {
                                    //trường hợp link user cập nhật ko khớp với link lấy từ fb
                                    fbPost = fbPosts.Where(m => campaign.CampaignAccount.RefUrl.Contains(m.Link)).FirstOrDefault();
                                }
                                if (fbPost == null)
                                {
                                    //truong hop link lấy từ fb ko khớp với link user
                                    fbPost = fbPosts.Where(m => m.Link.Contains(campaign.CampaignAccount.RefUrl)).FirstOrDefault();
                                }


                                //check bên permalink
                                if (fbPost == null)
                                {
                                    fbPost = fbPosts.Where(m => campaign.CampaignAccount.RefUrl.Contains(m.Permalink)).FirstOrDefault();
                                }
                                if (fbPost == null)
                                {
                                    fbPost = fbPosts.Where(m => m.Permalink.Contains(campaign.CampaignAccount.RefUrl)).FirstOrDefault();
                                }

                                if (fbPost == null)
                                {
                                    fbPost = fbPosts.Where(m => m.Permalink == campaign.CampaignAccount.RefUrl).FirstOrDefault();
                                }

                                //check link with campaign data field
                                if (fbPost == null)
                                {
                                    if (!string.IsNullOrEmpty(campaign.Data))
                                    {
                                        fbPost = fbPosts.Where(m => m.Link == campaign.Data || m.Link.Contains(campaign.Data)).FirstOrDefault();
                                    }
                                }

                                //#######################################################################################################
                                try
                                {
                                    string fbpostid = string.Empty;
                                    if (campaign.CampaignAccount.RefUrl.Contains("posts/"))
                                    {
                                        string[] strPosts = campaign.CampaignAccount.RefUrl.Split(new string[] { "posts/" }, StringSplitOptions.None);
                                        if (strPosts.Count() > 1)
                                        {
                                            try
                                            {
                                                if (!string.IsNullOrEmpty(strPosts[1]))
                                                {
                                                    fbpostid = strPosts[1];
                                                }
                                            }
                                            catch { }
                                        }
                                    }
                                    if (!string.IsNullOrEmpty(fbpostid))
                                    {
                                        if (fbPost == null)
                                        {
                                            fbPost = fbPosts.Where(m => m.Permalink.Contains(fbpostid)).FirstOrDefault();
                                        }
                                    }
                                }
                                catch { }


                                //#######################################################################################################

                                if (fbPost != null)
                                {
                                    //string msg = string.Empty;
                                    //if (!string.IsNullOrEmpty(campaign.Data)) //kiểm tra xem link yêu cầu chia sẻ user có chia sẻ đúng link ko
                                    //{
                                    //    if (string.IsNullOrEmpty(campaign.HrefCompare))
                                    //        campaign.HrefCompare = "";

                                    //    if (string.IsNullOrEmpty(fbPost.Link))
                                    //        fbPost.Link = "";


                                    //    try
                                    //    {
                                    //        if ((campaign.Data != fbPost.Link || !campaign.Data.Contains(fbPost.Link)))
                                    //        {
                                    //            msg = $"Cần xác minh thực hiện chiến dịch! Link chia sẻ không đúng";
                                    //        }

                                    //        if (campaign.HrefCompare != fbPost.Link || !campaign.HrefCompare.Contains(fbPost.Link) ||
                                    //            !fbPost.Link.Contains(campaign.HrefCompare))
                                    //        {
                                    //            msg = $"Cần xác minh thực hiện chiến dịch! Link chia sẻ không đúng";
                                    //        }

                                    //        if ((campaign.Data == fbPost.Link || campaign.Data.Contains(fbPost.Link)))
                                    //        {
                                    //            // Xử lý khi link cần chia sẻ đã được chia sẻ đúng
                                    //            msg = $"Cần xác minh thực hiện chiến dịch! Link chia sẻ đúng";
                                    //        }

                                    //        if(!string.IsNullOrEmpty(campaign.HrefCompare) && !string.IsNullOrEmpty(fbPost.Link))
                                    //        {
                                    //            if (campaign.HrefCompare == fbPost.Link || campaign.HrefCompare.Contains(fbPost.Link)
                                    //            || fbPost.Link.Contains(campaign.HrefCompare))
                                    //            {
                                    //                msg = $"Cần xác minh thực hiện chiến dịch! Link chia sẻ đúng";
                                    //            }

                                    //        }


                                    //        if (fbPost.Message.Contains(campaign.Data) || fbPost.Message.Contains(campaign.HrefCompare))
                                    //        {
                                    //            msg = $"Cần xác minh thực hiện chiến dịch! Link chia sẻ đúng";
                                    //        }


                                    //    }
                                    //    catch
                                    //    {}
                                    //}
                                    //else
                                    //{
                                    //    msg = $"Cần xác minh thực hiện chiến dịch!";

                                    //}

                                    string msg = "Hệ thống đang xác minh việc thực hiện chiến dịch";

                                    var campaignAccountId = await _campaignService.UpdateCampaignAccountRef(accountid,
                                                                                                            new ViewModels.UpdateCampaignAccountRefViewModel()
                                    {
                                        CampaignId   = campaign.Id,
                                        CampaignType = campaign.Type,
                                        RefId        = fbPost.PostId,
                                        RefUrl       = fbPost.Link,
                                        Note         = msg
                                    }, username);

                                    if (campaignAccountId > 0)
                                    {
                                        await _campaignAccountStatisticRepository.Update(campaignAccountId, fbPost.LikeCount, fbPost.ShareCount, fbPost.CommentCount);
                                    }
                                }
                            }
                        }
                    }
                }
                //update thong tin like,share,comment
                foreach (var fbPost in fbPosts)
                {
                    if (!string.IsNullOrEmpty(fbPost.PostId))
                    {
                        await _accountService.UpdateFbPost(accountid, fbPost, username);
                    }
                }
            }
        }