Beispiel #1
0
        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);
            }
        }
Beispiel #3
0
        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);
        }