Beispiel #1
0
        public async Task <IActionResult> AddRating(int beerId, [FromBody] AddBeerRatingDto ratingDto)
        {
            if (!await _service.IfBeerExistAsync(beerId))
            {
                return(NotFound());
            }

            var userLogged = int.Parse(HttpContext.User.Identity.Name);

            var userRating = await _service.GetBeerRaitingForUserAsync(userLogged, beerId);

            if (userRating == null)
            {
                var result = await _service.AddBeerRatingAsync(userLogged, beerId, ratingDto);

                var beer = await _beerService.GetBeerAsync(beerId);

                var updatedBeer = new SaveBeerDto();

                updatedBeer.Name        = beer.Name;
                updatedBeer.AvatarUrl   = beer.AvatarUrl;
                updatedBeer.BeerTypeId  = beer.BeerType.Id;
                updatedBeer.BreweryId   = beer.Brewery.Id;
                updatedBeer.Description = beer.Description;
                updatedBeer.Percentage  = beer.Percentage;
                if (beer.AverageRating == 0)
                {
                    updatedBeer.AverageRating = (beer.AverageRating + ratingDto.Average);
                }
                else
                {
                    updatedBeer.AverageRating = (beer.AverageRating + ratingDto.Average) / 2;
                }


                var updateResult = await _beerService.UpdateBeer(beerId, updatedBeer);

                if (!updateResult)
                {
                    return(BadRequest("Niepowodzenie :("));
                }

                return(Ok(result));
            }

            return(BadRequest("Juz dodałeś ocenę"));
        }