private void UpdateIsLiked(PostedItemViewModel postedItemViewModel, string userId = null) { if (postedItemViewModel == null) { return; } if (!string.IsNullOrEmpty(userId) && postedItemViewModel.OpinionsTokenized != null) { Dictionary <string, int> opinions = JsonConvert.DeserializeObject <Dictionary <string, int> >(postedItemViewModel.OpinionsTokenized); if (opinions == null || opinions.Count == 0 || !opinions.ContainsKey(userId)) { postedItemViewModel.IsLiked = null; } else { postedItemViewModel.IsLiked = opinions[userId] == 1 ? true : opinions[userId] == -1 ? default(bool?) : false; } } else { postedItemViewModel.IsLiked = null; } }
/// <summary> /// Idea is from here : https://msdn.microsoft.com/en-us/library/mt679037.aspx /// </summary> /// <param name="postedItem"></param> /// <returns></returns> public static PostedItemViewModel Convert(PostedItem postedItem, string userId = null) { object obj = (object)_usedOnlyForLocking; System.Threading.Monitor.Enter(obj); try { var viewModel = new PostedItemViewModel { Title = postedItem.Title, Id = postedItem.Id, ApplicationUserId = postedItem.ApplicationUserId, OpinionsTokenized = postedItem.OpinionsTokenized, PhotoUrl = postedItem.PhotoUrl, VideoSourceUrl = postedItem.VideoSourceUrl, Slug = postedItem.Slug, Source = postedItem.Source, MetadataKeywords = string.Join(",", postedItem.Tags.Select(t => t.Name)), TagsTokenized = postedItem.TagsTokenized, TotalDislike = postedItem.TotalDislike, TotalLike = postedItem.TotalLike, Updated = postedItem.Updated }; UpdateIsLiked(viewModel, postedItem, userId); return(viewModel); } finally { System.Threading.Monitor.Exit(obj); } }
public async Task AddPostedItemToCache(string key, PostedItemViewModel postedItem) { if (String.IsNullOrEmpty(key) || postedItem == null) { return; } await RemovePostedItemFromCache(key); await Cache.StringSetAsync(SafePostedItemKey(key), JsonConvert.SerializeObject(postedItem), TimeSpan.FromDays(7)); }
private static void UpdateIsLiked(PostedItemViewModel postedItemViewModel, PostedItem postedItem, string userId = null) { if (string.IsNullOrEmpty(userId)) { return; } if (!postedItem.Opinions.Any(o => o.ApplicationUser.Id == userId) || postedItem.Opinions.Any(o => o.ApplicationUser.Id == userId && o.OpinionType == OpinionType.NoOpinion)) { postedItemViewModel.IsLiked = default(bool?); } else { postedItemViewModel.IsLiked = postedItem.Opinions.Any(o => o.ApplicationUser.Id == userId && o.OpinionType == OpinionType.Like); } }
public ActionResult RenderPostedItemPartial(PostedItemViewModel postedItemViewModel) { var userId = System.Web.HttpContext.Current.User.Identity.GetUserId(); return(PartialView("_PostedItemCardPartial", postedItemViewModel)); }
private async Task <PostedItemWrapperViewModel> GetPostedItemWrapperViewModel(PostedItemViewModel postedItem, string userId) { var postedItemWrapperViewModel = new PostedItemWrapperViewModel(); postedItemWrapperViewModel.MainPostedItemViewModel = postedItem; if (postedItem.Tags != null && postedItem.Tags.Length > 0) { var relatedPosts = await _azureSearchService.Search(string.Join(" ", postedItem.Tags), 1, userId, true, true, 4); postedItemWrapperViewModel.RelatedPostedItems = relatedPosts.Where(r => r.Id != postedItem.Id).ToList(); } return(postedItemWrapperViewModel); }