public async Task <IActionResult> AddReviewAsync(BookReviewRequest bookReview)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(bookReview?.Review))
                {
                    return(BadRequest("Review cannot be null or empty"));
                }

                bookReview.UserId = UserId;
                var isReviewAdded = await _bookReviewService.InsertReviewAsync(bookReview);

                if (isReviewAdded)
                {
                    return(Created(nameof(AddReviewAsync), bookReview));
                }
            }
            catch (Exception ex)
            {
                //Log exception here
                return(BadRequest("OOPS! Something went wrong while processing your request. Please try again"));
            }

            return(BadRequest("Either book does not exist/you cannot edit a review once submitted"));
        }
 public async Task <ActionResult <List <UserReviews> > > GetReviewsByBookId(BookReviewRequest request)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest(ModelState));
     }
     return(await InvokeAsync(() => _user.ReviewsByBookId(request), "UserController:AddToRead"));
 }
        public async Task <bool> InsertReviewAsync(BookReviewRequest bookReview)
        {
            var parameters = new DynamicParameters();

            parameters.Add("@BookId", bookReview.BookId);
            parameters.Add("@UserId", bookReview.UserId);
            parameters.Add("@Review", bookReview.Review);
            parameters.Add("@CreatedDateTime", bookReview.CreatedDateTime);
            var createdCount = await _dapper.ExecuteAsync(StoredProc.InsertReview, parameters);

            return(createdCount > 0);
        }
Beispiel #4
0
        public async Task <List <UserReviews> > ReviewsByBookId(BookReviewRequest request)
        {
            MongoClient dbClient   = new MongoClient(Config.ConnectionString);
            var         database   = dbClient.GetDatabase(Config.Database);
            var         collection = database.GetCollection <BookReview>(Config.BookReview);
            var         filter     = new BsonDocument("BookId", request.BookId.ToString());
            var         review     = (await collection.FindAsync(filter)).ToList();
            var         users      = await Get();

            var result = review.Select(x => new UserReviews()
            {
                Review   = x.Review,
                UserName = users.FirstOrDefault(y => y.Id == x.UserId)?.Email
            }).ToList();

            return(result);
        }
Beispiel #5
0
        public async Task <ActionResult> PostReviewAsync([FromRoute] string key, [FromBody] BookReviewRequest request)
        {
            try
            {
                await _bookReviewService.AddReviewAsync(key, request.Username, request.Text, request.Rating);

                return(Created($"/books/{key}", null));
            }
            catch (Exception ex)
            {
                return(new ContentResult()
                {
                    StatusCode = 500,
                    Content = ex.ToString()
                });
            }
        }
 public async Task <bool> InsertReviewAsync(BookReviewRequest bookReview)
 {
     return(await _bookReviewRepository.InsertReviewAsync(bookReview));
 }