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