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")); }
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)); }