/// <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); } }
private void UpdatePostedItem(PostedItem postedItem, string userId, Dictionary <string, int> output) { if (postedItem == null) { return; } //int totalLike = 0; //int totalDislike = 0; //for (int index = 0; index < postedItem.Opinions.Count(); index++) //{ // var opinionType = postedItem.Opinions.ElementAt(index).OpinionType; // if (opinionType == OpinionType.NoOpinion) // continue; // if (opinionType == OpinionType.Like) // totalLike++; // else if (opinionType == OpinionType.Dislike) // totalDislike++; //} var totalLike = postedItem.Opinions.Count(o => o.OpinionType == OpinionType.Like); var totalDislike = postedItem.Opinions.Count(o => o.OpinionType == OpinionType.Dislike); string json = JsonConvert.SerializeObject(output); postedItem.TotalLike = totalLike; postedItem.TotalDislike = totalDislike; postedItem.OpinionsTokenized = json; }
/// <summary> /// Delete a posted item aync. /// </summary> /// <param name="item">Item to delete</param> public async Task DeleteItemAsync(PostedItem item) { await Task.Run(() => { item.Delete(); m_LoggedInUser.ReFetch(); }); }
/// <summary> /// If post is picture or video - import it imageURL. /// </summary> /// <param name="i_PostedItem">The post.</param> private void getPostImageURL(PostedItem i_PostedItem) { if (i_PostedItem is Video) { m_ImageURL = (i_PostedItem as Video).PictureURL; } else if (i_PostedItem is Photo) { m_ImageURL = (i_PostedItem as Photo).PictureNormalURL; } }
private void addLikesForCurrentItem(PostedItem i_CurrentItem) { foreach (User user in i_CurrentItem.LikedBy) { if (UsersLikesCounts.ContainsKey(user)) { UsersLikesCounts[user]++; } else if (user.Id != LoggedInUser.Id) { UsersLikesCounts.Add(user, 1); } } }
public static bool IsLikedByLoggedInUser(this PostedItem i_PostedItem) { bool isLiked = false; foreach (User currentUser in i_PostedItem.LikedBy) { if (currentUser.Id == LoggedInUser.Instance.Id) { isLiked = true; break; } } return(isLiked); }
public static ISelectedItem ConvertItemToSelectedItem(PostedItem i_PostedItem) { ISelectedItem selectedItemToReturn = null; if (i_PostedItem is Post) { selectedItemToReturn = new SelectedPost(i_PostedItem as Post); } else if (i_PostedItem is Photo) { selectedItemToReturn = new SelectedPhoto(i_PostedItem as Photo); } return(selectedItemToReturn); }
private async Task <PostedItem> SavePostedItemToDb(AddPhotoViewModel addPhotoViewModel) { if (addPhotoViewModel == null) { return(null); } PostedItem postedItem = null; var timeNow = DateTime.UtcNow; //if we already have it in database if (addPhotoViewModel.PostedId != null) { postedItem = await _applicationDbContext.PostedItems.FirstOrDefaultAsync(p => p.Id == addPhotoViewModel.PostedId.Value); if (postedItem != null) { postedItem.Title = addPhotoViewModel.Title; postedItem.Tags.Clear(); await AddTagsToPostedItem(postedItem, addPhotoViewModel.Tags); //If a new photo is uploaded lets remove the old one. if (!String.IsNullOrEmpty(addPhotoViewModel.PhotoData) && postedItem.Photo != null) { _applicationDbContext.Photos.Remove(postedItem.Photo); } } } else { postedItem = new PostedItem { Title = addPhotoViewModel.Title, Inserted = timeNow, PostedItemType = PostedItemType.UserPosted }; await AddTagsToPostedItem(postedItem, addPhotoViewModel.Tags); _applicationDbContext.PostedItems.Add(postedItem); } if (!String.IsNullOrEmpty(postedItem.Title)) { postedItem.Slug = postedItem.Title.Trim().Replace(' ', '-').Replace('.', ' ').Replace('&', '_').TrimEnd(); } postedItem.Updated = timeNow; return(postedItem); }
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 void FindMostViralActivity() { if (ActivityCollection.Count == 0) { throw new Exception("No activities found"); } PostedItem mostLikedPostedItem = ActivityCollection[0]; foreach (PostedItem postedItem in ActivityCollection) { if (postedItem.LikedBy.Count > mostLikedPostedItem.LikedBy.Count) { mostLikedPostedItem = postedItem; } } m_Activity = mostLikedPostedItem; Likes = mostLikedPostedItem.LikedBy.Count; }
private async Task AddTagsToPostedItem(PostedItem postedItem, string[] tags) { if (tags == null || tags.Length == 0) { return; } List <string> tagsList = new List <string>(); foreach (var tagViewModel in tags) { var tag = await GetTagByName(tagViewModel); postedItem.Tags.Add(tag); tagsList.Add(string.Format("\"{0}\"", tagViewModel)); } var tagsTokenized = String.Format("[{0}]", String.Join(",", tagsList)); postedItem.TagsTokenized = tagsTokenized.ToString().TrimEnd(); }
public Poster Post(string i_TextOrFilePath, DateTime i_TimeToPost, Poster.ePostOptions i_PostOption) { Poster poster; createPosterByPostOption(i_TextOrFilePath, i_PostOption, out poster); if (poster != null) { if (i_TimeToPost < DateTime.Now) { PostedItem postedItem = poster.Post(); if (postedItem is StatusProxy) { PostedStatuses.AddLast(postedItem as StatusProxy); } } else { poster.PostInSelectedTime(i_TimeToPost); } } return(poster); }
/// <summary> /// Rate friend who's like\comment on user post. /// </summary> /// <param name="i_postedItem">A post to check the activity on.</param> private void ratePost(PostedItem i_postedItem) { foreach (User user in i_postedItem.LikedBy) { if (m_friendsRate.ContainsKey(user)) { UserRate update = m_friendsRate[user]; update.Likes++; update.TotalCommon++; m_friendsRate[user] = update; } } foreach (Comment comment in i_postedItem.Comments) { if (m_friendsRate.ContainsKey(comment.From)) { UserRate update = m_friendsRate[comment.From]; update.Comments++; update.TotalCommon++; m_friendsRate[comment.From] = update; } } }
private void updateBestFriendList(PostedItem i_PostedItem) { // this method probably wont work, // because there are no permissions to get Likes and Comments of posted item. foreach (User friend in i_PostedItem.LikedBy) { UserWrapper result = BestFriendList.Find((i_UserWrapper) => friend.UserName == i_UserWrapper.User.UserName); if (result == null) {// user not found, so we make new one BestFriendList.Add(new UserWrapper(friend) { TotalLikes = 1 }); } else { result.TotalLikes++; } } foreach (Comment comment in i_PostedItem.Comments) { UserWrapper result = BestFriendList.Find((i_UserWrapper) => comment.From == i_UserWrapper.User); if (result == null) {// user not found, so we make new one BestFriendList.Add(new UserWrapper(comment.From) { TotalComments = 1 }); } else { result.TotalComments++; } } }
private async Task <SaveImageWrapper> SavePhotos(AddPhotoViewModel addPhotoViewModel, PostedItem postedItem) { var saveImageWrapper = new SaveImageWrapper(); if (addPhotoViewModel.StreamData == null) { return(saveImageWrapper); } var photoStreams = new List <Stream> { addPhotoViewModel.StreamData }; var photoDimentionInfos = new List <PhotoDimensionInfo>() { new PhotoDimensionInfo { Width = 450, Height = 450, IsOriginal = false, ReSizeAndCrop = true } }; var addPhotoRequest = new AddPhotoRequest(photoStreams, photoDimentionInfos, postedItem.Slug); var results = await _photoService.AddPhotoAsync(addPhotoRequest); //If any error found during uploading process we will not add anything to database. (ATOMIC) if (results.NewlyAddedPhotoErrorInfos != null && results.NewlyAddedPhotoErrorInfos.Count == 0) { //2. Add photo objects to News Feed object if (results != null && results.NewlyAddedPhotoInfoDetails.Count > 0) { foreach (var photo in results.NewlyAddedPhotoInfoDetails) { var newPhoto = new Photo { Name = photo.AddedPhotoName, FileExtention = photo.ImageFormat, Width = photo.Width, Height = photo.Height, Inserted = DateTime.UtcNow, PhotoType = PhotoType.PostedItem, Container = "photo" }; _applicationDbContext.Photos.Add(newPhoto); postedItem.Photo = newPhoto; } } //5. Save them to database var saveResults = await _applicationDbContext.SaveChangesAsync(); } else if (results.NewlyAddedPhotoErrorInfos.Count > 0) { saveImageWrapper.ErrorMessage = results.NewlyAddedPhotoErrorInfos[0].ErrorMessage; } //var response = new AddUserAvatarResponse(); //6. Lets get the full path on the blob for the new photo var originalPhotoDetails = results.NewlyAddedPhotoInfoDetails.FirstOrDefault(p => p.IsOriginal); var photoName = String.Format(ImageName_450x450_StringFormat, originalPhotoDetails.AddedPhotoName, postedItem.Slug, originalPhotoDetails.ImageFormat); var fullPhotoUrlOnAzureBlobServer = _photoService.GetFullPath(photoName); saveImageWrapper.Url = fullPhotoUrlOnAzureBlobServer; return(saveImageWrapper); }
public ModifiedPost(PostedItem i_PostedItem) : base(i_PostedItem) { Caption = (i_PostedItem as Post).Caption; }
public bool IsLikedBy(PostedItem i_PostedItem, User i_User) { return(i_PostedItem.LikedBy.Contains(i_User)); }
protected ModifiedPostedItem(PostedItem i_PostedItem) { m_PostedItem = i_PostedItem; Message = i_PostedItem.Message; }
public PostedItemScore(PostedItem i_PostedItem) { m_PostedItemScoreValue = 0; m_PostedItem = i_PostedItem; }
/// <summary> /// PostInformation constructor. /// </summary> /// <param name="i_PostedItem">Any posted item.</param> public PostInformation(PostedItem i_PostedItem) { m_Message = i_PostedItem.Message; getPostImageURL(i_PostedItem); importComments(i_PostedItem.Comments.ToList()); }
public void Like(PostedItem i_PostedItem) { i_PostedItem.Like(); }
private dynamic GetPostedItem(PostedItem postedItem) { return(new { Id = postedItem.Id, Tags = postedItem.Tags.Select(GetTag), Title = postedItem.Title, PhotoUrl = postedItem.PhotoUrl /*(postedItem.Photo)*/ }); }
public ModifiedPhoto(PostedItem i_PostedItem) : base(i_PostedItem) { }
public void Unlike(PostedItem i_PostedItem) { i_PostedItem.Unlike(); }