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