예제 #1
0
        public async Task <IActionResult> AddFavouriteTweets(AddFavouriteTweetsViewModel vm)
        {
            var userId = this.userManager.GetUserId(this.User);

            foreach (var addTweetViewModel in vm.Tweets)
            {
                if (await this.userTweetService.CheckIfTweetExistsInUserFavouriteCollection(addTweetViewModel.Id,
                                                                                            userId) && !addTweetViewModel.Favourite)
                {
                    await this.userTweetService.DeleteTweetFromUserFavouriteCollection(addTweetViewModel.Id,
                                                                                       userId);

                    // TODO: Check if this is the deletion of the last tweet from this tweeter, and only then delete the relation!
                    // BUG: Broken service.
                    //if (!(await this.userTweetService.CheckIfUserHasTweetFromTweeterId(vm.TweeterViewModel.Id, userId)))
                    //{
                    //    this.userTweeterService.DeleteUserTweeter(userId, vm.TweeterViewModel.Id);
                    //}
                }

                if (!(await this.userTweetService.CheckIfTweetExistsInUserFavouriteCollection(addTweetViewModel.Id,
                                                                                              userId)) && addTweetViewModel.Favourite)
                {
                    await this.userTweetService.AddTweetToUserFavouriteCollection(userId, addTweetViewModel.Id);

                    this.userTweeterService.SaveUserTweeter(userId, vm.TweeterViewModel.Id);
                }
            }

            return(this.RedirectToAction("FavouriteTweeters", "FavouriteTweeters"));
        }
예제 #2
0
        public async Task <IActionResult> AddFavouriteTweets(string screenName)
        {
            var tweets = await this.twitterApiService.GetTweets(screenName);

            var addFavTweetVm = new AddFavouriteTweetsViewModel();

            if (tweets.Count > 0)
            {
                var userId = this.userManager.GetUserId(this.User);
                addFavTweetVm.TweeterViewModel = this.autoMapper.MapTo <AddTweeterViewModel>(tweets.First().Author);
                foreach (var tweetDto in tweets)
                {
                    var tweetVm = this.autoMapper.MapTo <AddTweetViewModel>(tweetDto);
                    tweetVm.Favourite =
                        await this.userTweetService.CheckIfTweetExistsInUserFavouriteCollection(tweetDto.Id, userId);

                    addFavTweetVm.Tweets.Add(tweetVm);
                    await this.tweetService.Add(tweetDto);
                }
            }

            return(View(addFavTweetVm));
        }