Esempio n. 1
0
        public async Task <ResponseDto <BaseModelDto> > AddNotification(
            AddNotificationBindingModel addNotificationBindingModel, int tvSeriesId, string userId)
        {
            var response = new ResponseDto <BaseModelDto>();

            var tvSeriesExists = await _tvSeriesRepository.ExistAsync(x => x.Id == tvSeriesId);

            if (!tvSeriesExists)
            {
                response.AddError(Model.TvShow, Error.tvShow_NotFound);
                return(response);
            }

            if (userId == null)
            {
                response.AddError(Model.Account, Error.account_Login);
                return(response);
            }

            Notification notification = new Notification();

            notification.CreateDateTime = DateTime.Now;
            notification.TvShowId       = tvSeriesId;
            notification.UserId         = userId;
            notification.Type           = addNotificationBindingModel.Type;

            if (addNotificationBindingModel.Type == "watchedEpisode")
            {
                notification.FirstPart  = "Dodano odcinek " + addNotificationBindingModel.EpisodeNumber + " serialu ";
                notification.SecondPart = " do obejrzanych";
            }
            else if (addNotificationBindingModel.Type == "ratedTvSeries")
            {
                notification.FirstPart  = "Oceniono serial ";
                notification.SecondPart = "";
            }
            else if (addNotificationBindingModel.Type == "favouriteTvSeries")
            {
                notification.FirstPart  = "Dodano serial ";
                notification.SecondPart = " do ulubionych";
            }
            else if (addNotificationBindingModel.Type == "commentedTvSeries")
            {
                notification.FirstPart  = "Dodano komentarz do serialu ";
                notification.SecondPart = "";
            }

            var result = await _notificationRepository.AddAsync(notification);

            if (!result)
            {
                response.AddError(Model.Notification, Error.notification_Adding);
                return(response);
            }

            return(response);
        }
Esempio n. 2
0
        public async Task <IActionResult> AddNotification(
            [FromBody] AddNotificationBindingModel addNotificationBindingModel, int tvSeriesId)
        {
            string user   = User.Identity.Name;
            var    result = await _notificationService.AddNotification(addNotificationBindingModel, tvSeriesId, user);

            if (result.ErrorOccurred)
            {
                return(BadRequest(result));
            }

            return(Ok(result));
        }
Esempio n. 3
0
        public async Task <ResponseDto <BaseModelDto> > AddTvSeriesUserRating(string userLogged, int tvSeriesId,
                                                                              AddTvSeriesRatingBindingModel tvSeriesRatingBindingModel)
        {
            var response = new ResponseDto <BaseModelDto>();

            var tvSeriesExists = await _tvSeriesRepository.ExistAsync(x => x.Id == tvSeriesId);

            if (!tvSeriesExists)
            {
                response.AddError(Model.TvShow, Error.tvShow_NotFound);
                return(response);
            }

            var ratingExists = await _tvSeriesUserRatingRepository.ExistAsync(x => x.UserId == userLogged && x.TvShowId == tvSeriesId);

            if (ratingExists)
            {
                response.AddError(Model.Rating, Error.rating_Already_Added);
                return(response);
            }

            var userRating = _mapper.Map <TvSeriesUserRating>(tvSeriesRatingBindingModel);

            userRating.Average  = (userRating.Effects + userRating.Music + userRating.Story) / 3;
            userRating.TvShowId = tvSeriesId;
            userRating.UserId   = userLogged;

            var result = await _tvSeriesUserRatingRepository.AddAsync(userRating);

            if (!result)
            {
                response.AddError(Model.Rating, Error.rating_Adding);
                return(response);
            }
            else
            {
                if (userLogged != null)
                {
                    AddNotificationBindingModel addNotificationBindingModel = new AddNotificationBindingModel();
                    addNotificationBindingModel.Type = "ratedTvSeries";

                    await _notificationService.AddNotification(addNotificationBindingModel, tvSeriesId, userLogged);
                }
            }

            response = await AddTvSeriesRating(userRating, 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);
        }
Esempio n. 5
0
        public async Task <ResponseDto <BaseModelDto> > AddComment(AddCommentBindingModel addCommentBindingModel,
                                                                   int tvSeriesId, string userId)
        {
            var response = new ResponseDto <BaseModelDto>();

            var tvSeriesExists = await _tvSeriesRepository.ExistAsync(x => x.Id == tvSeriesId);

            if (!tvSeriesExists)
            {
                response.AddError(Model.TvShow, Error.tvShow_NotFound);
                return(response);
            }

            if (userId == null)
            {
                response.AddError(Model.Account, Error.account_Login);
                return(response);
            }

            Comment comment = new Comment();

            comment.Content        = addCommentBindingModel.Content;
            comment.TvSeriesId     = tvSeriesId;
            comment.UserId         = userId;
            comment.CreateDateTime = DateTime.Now;
            comment.UpdateDateTime = DateTime.Now;

            var result = await _commentRepository.AddAsync(comment);

            if (!result)
            {
                response.AddError(Model.Comment, Error.comment_Adding);
                return(response);
            }
            else
            {
                if (userId != null)
                {
                    AddNotificationBindingModel addNotificationBindingModel = new AddNotificationBindingModel();
                    addNotificationBindingModel.Type = "commentedTvSeries";

                    await _notificationService.AddNotification(addNotificationBindingModel, tvSeriesId, userId);
                }
            }

            return(response);
        }
        public async Task <ResponseDto <BaseModelDto> > AddUserFavouriteTvSeries(int tvSeriesId, string userId)
        {
            var response = new ResponseDto <BaseModelDto>();

            var tvSeriesExists = await _tvSeriesRepository.ExistAsync(x => x.Id == tvSeriesId);

            if (!tvSeriesExists)
            {
                response.AddError(Model.TvShow, Error.tvShow_NotFound);
                return(response);
            }

            var favouriteTvSeriesInDb = await _userFavouriteTvShowsRepository.GetByAsync(x => x.TvShowId == tvSeriesId && x.UserId == userId);

            if (favouriteTvSeriesInDb != null)
            {
                response.AddError(Model.FavouriteTvShow, Error.favouriteTvShow_Already_Exists);
                return(response);
            }

            UserFavouriteTvShows favouriteTvShow = new UserFavouriteTvShows();

            favouriteTvShow.TvShowId = tvSeriesId;
            favouriteTvShow.UserId   = userId;

            var result = await _userFavouriteTvShowsRepository.AddAsync(favouriteTvShow);

            if (!result)
            {
                response.AddError(Model.FavouriteTvShow, Error.favouriteTvShow_Adding);
                return(response);
            }
            else
            {
                if (userId != null)
                {
                    AddNotificationBindingModel addNotificationBindingModel = new AddNotificationBindingModel();
                    addNotificationBindingModel.Type = "favouriteTvSeries";

                    await _notificationService.AddNotification(addNotificationBindingModel, tvSeriesId, userId);
                }
            }

            return(response);
        }