public async Task <IActionResult> add(int bookcase_id, int star, string review)
        {
            try {
                Bookcase bookcase = await _bookcaseRepository.Get(bookcase_id);

                if (bookcase == null)
                {
                    return(NotFound(new Respone(404, "Not Found", null)));
                }

                var  username = User.FindFirst(ClaimTypes.NameIdentifier).Value;
                User user     = await _userRepository.FindByUsername(username);

                if (user == null)
                {
                    return(NotFound(new Respone(404, "Not Found", null)));
                }

                RateBookcase rateBookcase = new RateBookcase
                {
                    bookcase_id = bookcase.bookcase_id,
                    star        = star,
                    review      = review,
                    user_id     = user.user_id
                };

                await _rateBookcaseRepository.Add(rateBookcase);

                return(Ok(new Respone(200, "ok", null)));
            } catch (Exception e) {
                return(BadRequest(new Respone(400, "Failed", null)));
            }
        }
        public async Task <IActionResult> edit(int rate_bookcase_id, int star, string review)
        {
            try {
                RateBookcase rateBookcase = await _rateBookcaseRepository.Get(rate_bookcase_id);

                if (rateBookcase == null)
                {
                    return(NotFound(new Respone(404, "Not Found", null)));
                }

                var  username = User.FindFirst(ClaimTypes.NameIdentifier).Value;
                User user     = await _userRepository.FindByUsername(username);

                if (user == null)
                {
                    return(NotFound(new Respone(404, "Not Found", null)));
                }

                if (rateBookcase.user_id != user.user_id)
                {
                    return(BadRequest(new Respone(400, "Failed", null)));
                }

                rateBookcase.star   = star;
                rateBookcase.review = review != null ? review : rateBookcase.review;

                await _rateBookcaseRepository.Update(rate_bookcase_id, rateBookcase);

                return(Ok(new Respone(200, "ok", null)));
            } catch (Exception) {
                return(BadRequest(new Respone(400, "Failed", null)));
            }
        }
        public async Task <IActionResult> get(int rate_bookcase_id)
        {
            try {
                RateBookcase rateBookcase = await _rateBookcaseRepository.Get(rate_bookcase_id);

                if (rateBookcase == null)
                {
                    return(NotFound(new Respone(404, "Not Found", null)));
                }

                return(Ok(new Respone(200, "ok", rateBookcase)));
            } catch (Exception e) {
                return(BadRequest(new Respone(400, "Failed", null)));
            }
        }