public async Task <ResponseDto <BaseModelDto> > AddSeasonToWatched(int seasonId, string userId) { var response = new ResponseDto <BaseModelDto>(); var watchedEpisodes = _episodeRepository.GetAllBy(x => x.SeasonId == seasonId); List <UserWatchedEpisode> userWatchedEpisodesList = new List <UserWatchedEpisode>(); foreach (var episode in watchedEpisodes) { UserWatchedEpisode watchedEpisode = new UserWatchedEpisode(); watchedEpisode.EpisodeId = episode.Id; watchedEpisode.UserId = userId; if (await _userWatchedEpisodeRepository.ExistAsync(x => x.EpisodeId == episode.Id && x.UserId == userId) == false) { userWatchedEpisodesList.Add(watchedEpisode); } } foreach (var episode in userWatchedEpisodesList) { var result = await _userWatchedEpisodeRepository.AddAsync(episode); if (!result) { response.AddError(Model.Episode, Error.watchedTvShow_Adding); return(response); } } return(response); }
public async Task <ResponseDto <BaseModelDto> > AddUserFavouriteTvSeries(int episodeId, string userId) { var response = new ResponseDto <BaseModelDto>(); var episodeExists = await _episodeRepository.ExistAsync(x => x.Id == episodeId); if (!episodeExists) { response.AddError(Model.TvShow, Error.tvShow_NotFound); return(response); } var watchedTvSeriesInDb = await _userWatchedEpisodeRepository.GetByAsync(x => x.EpisodeId == episodeId && x.UserId == userId); if (watchedTvSeriesInDb != null) { response.AddError(Model.WatchedEpisode, Error.watchedEpisode_Already_Exists); return(response); } UserWatchedEpisode watchedEpisode = new UserWatchedEpisode(); watchedEpisode.CreateDateTime = DateTime.Now; watchedEpisode.EpisodeId = episodeId; watchedEpisode.UserId = userId; var result = await _userWatchedEpisodeRepository.AddAsync(watchedEpisode); if (!result) { response.AddError(Model.FavouriteTvShow, Error.favouriteTvShow_Adding); return(response); } else { AddNotificationBindingModel addNotificationBindingModel = new AddNotificationBindingModel(); addNotificationBindingModel.Type = "watchedEpisode"; var episode = await _episodeRepository.GetByAsync(x => x.Id == episodeId, x => x.Season.TvShow); addNotificationBindingModel.EpisodeNumber = episode.EpisodeNumber; await _notificationService.AddNotification(addNotificationBindingModel, episode.Season.TvShow.Id, userId); } return(response); }
public async Task <ResponseDto <BaseModelDto> > MarkSeasonAsNotWatched(int seasonId, string userId) { var response = new ResponseDto <BaseModelDto>(); var watchedEpisodes = _episodeRepository.GetAllBy(x => x.SeasonId == seasonId); List <UserWatchedEpisode> episodesListToRemove = new List <UserWatchedEpisode>(); foreach (var episode in watchedEpisodes) { UserWatchedEpisode watchedEpisode = new UserWatchedEpisode(); watchedEpisode.EpisodeId = episode.Id; watchedEpisode.UserId = userId; if (await _userWatchedEpisodeRepository.ExistAsync(x => x.EpisodeId == episode.Id && x.UserId == userId) == true) { episodesListToRemove.Add(watchedEpisode); } } foreach (var episode in episodesListToRemove) { var ep = await _userWatchedEpisodeRepository.GetByAsync(x => x.EpisodeId == episode.EpisodeId); var result = await _userWatchedEpisodeRepository.Remove(ep); if (!result) { response.AddError(Model.Episode, Error.watchedEpisode_Deleting); return(response); } } return(response); }