private CrawlPostGroup_Privacy mapFromCrawlPostGroupPrivacyTOCrawlPostPrivacyDTO(CrawlPostPrivacyDTO source) { var des = new CrawlPostGroup_Privacy(); des.Value = source.Value; des.Description = source.Description; des.Friends = source.Friends; des.Allow = source.Allow; des.Deny = source.Deny; return(des); }
private async Task AddOrUpdatePostGroup(CrawlPostDTO model) { using (var db = new FbToolEntities()) { var test = db.Chat_Fb_FunnyStory.ToList(); var postInDb = db.CrawlPostGroup_Post.Where(x => x.Fb_Id == model.Fb_Id).Include(x => x.CrawlPostGroup_Action).FirstOrDefault(); if (postInDb == null) { postInDb = new CrawlPostGroup_Post(); postInDb.TimeCreatedInDb = DateTime.Now; db.CrawlPostGroup_Post.Add(postInDb); db.SaveChanges(); InvokeControlHelper.AppendRichTextboxV2(rtbCrawlGroupPostInfo, $"Thêm mới Post với Id = {model.Fb_Id}", Color.Blue); } if (postInDb != null) { db.Entry(postInDb).CurrentValues.SetValues(model); postInDb.TimeUpdatedInDb = DateTime.Now; #region Action foreach (var action in postInDb.CrawlPostGroup_Action.ToList()) { if (!model.Actions.Any(c => c.Name == action.Name)) { db.CrawlPostGroup_Action.Remove(action); } } // Update and Insert children foreach (var actionDto in model.Actions) { var existingChildAction = postInDb.CrawlPostGroup_Action .Where(c => c.Name == actionDto.Name) .FirstOrDefault(); if (existingChildAction != null) { // Update child db.Entry(existingChildAction).CurrentValues.SetValues(actionDto); } else { // Insert child var newChild = new CrawlPostGroup_Action { Name = actionDto.Name, Link = actionDto.Link }; postInDb.CrawlPostGroup_Action.Add(newChild); } } #endregion #region Privacy var existingChildPrivacy = postInDb.CrawlPostGroup_Privacy.FirstOrDefault(); if (existingChildPrivacy != null) { // Update child db.Entry(existingChildPrivacy).CurrentValues.SetValues(model.Privacy); } else { // Insert child var newChild = new CrawlPostGroup_Privacy() { Value = model.Privacy.Value, Description = model.Privacy.Description, Friends = model.Privacy.Friends, Allow = model.Privacy.Allow, Deny = model.Privacy.Deny }; postInDb.CrawlPostGroup_Privacy.Add(newChild); } #endregion #region Comment foreach (var comment in postInDb.CrawlPostGroup_Comment.ToList()) { if (!model.Comments.Data.Any(c => c.Fb_Id == comment.Fb_Id)) { db.CrawlPostGroup_Comment.Remove(comment); } } // Update and Insert children if (model.Comments?.Data?.Count > 0) { foreach (var commentDto in model.Comments?.Data) { var existingChildComment = postInDb.CrawlPostGroup_Comment .Where(c => c.Fb_Id == commentDto.Fb_Id) .FirstOrDefault(); if (existingChildComment != null) { // Update child db.Entry(existingChildComment).CurrentValues.SetValues(commentDto); } else { // Insert child var newChild = new CrawlPostGroup_Comment() { CreatedTime = DateTimeHelper.ConvertStringFromApiFacebookToDateTime(commentDto.CreatedTimeFromApi), Message = commentDto.Message, CanRemove = commentDto.CanRemove, LikeCount = commentDto.LikeCount, UserLike = commentDto.UserLikes, Fb_Id = commentDto.Fb_Id }; postInDb.CrawlPostGroup_Comment.Add(newChild); } } } #endregion } db.SaveChanges(); InvokeControlHelper.AppendRichTextboxV2(rtbCrawlGroupPostInfo, $"Update thành công bài Post với Id = {model.Fb_Id}", Color.Green); await UpdatePostDetail(db, postInDb); InvokeControlHelper.AppendRichTextboxV2(rtbCrawlGroupPostInfo, $"Update thành công Detail bài Post với Id = {model.Fb_Id}", Color.Green); Thread.Sleep(100); } }