public async Task <IActionResult> DownloadRecipe(string Id)
        {
            if (!await _cocktailServices.CheckIfCocktailExist(Id))
            {
                _toast.AddErrorToastMessage($"Cocktail with Id: {Id} does not exist!");
                return(RedirectToAction("ListCocktails", "Cocktails"));
            }
            try
            {
                var cocktailName = await _cocktailServices.GetCocktailNameById(Id);

                var cocktailRecepie = await _cocktailServices.GetCocktailRecipe(Id);

                var content     = new System.IO.MemoryStream(Encoding.UTF8.GetBytes(cocktailRecepie));
                var contentType = "APPLICATION/octet-stream";
                var fileName    = $"{cocktailName}.txt";
                return(File(content, contentType, fileName));
            }
            catch (Exception ex)
            {
                _toast.AddErrorToastMessage(ex.Message);
                ViewBag.ErrorTitle = "";
                return(View("Error"));
            }
        }
        public async Task <IActionResult> RateCocktail(CocktailReviewViewModel cocktailVm)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var    cocktailDto  = cocktailVm.MapToCocktailDto();
                    string userId       = this.User.FindFirstValue(ClaimTypes.NameIdentifier);
                    var    cocktailName = await _cocktailServices.GetCocktailNameById(cocktailDto.Id);

                    await _reviewServices.CreateCocktailReview(userId, cocktailDto);

                    _toast.AddSuccessToastMessage($"You successfully rated \"{cocktailName}\" cocktail");
                    return(RedirectToAction("ListCocktails", "Cocktails", new { area = "Cocktails" }));
                }
                catch (Exception ex)
                {
                    _toast.AddErrorToastMessage(ex.Message);
                    ViewBag.ErrorTitle = "";
                    return(View("Error"));
                }
            }
            else
            {
                _toast.AddErrorToastMessage("You submitted invalid review! " +
                                            "Both Rating and Descrition are required parameters. Description must be between 5 and 500 symbols.");
                return(RedirectToAction("RateCocktail", cocktailVm.CocktailID));
            }
        }