public async Task <IActionResult> DelateWineListWineValues(int wineListWineId, int idWine)
        {
            Wine wine = await _winesServices.GetWineByIdAsync(idWine);

            AppUser user = await _userManager.FindByEmailAsync(User.Identity.Name);

            await _tastesServices.DelateWineListWineValues(wine.ColourId, wine.SourceId, wine.SweetnesId, user.Id);

            await _wineListsServices.DeleteWineListWineAsync(await _wineListsServices.GetWineListWineByIdAsync(wineListWineId));

            return(RedirectToAction("Index"));
        }
Example #2
0
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            if (_signInManager.IsSignedIn(User))
            {
                WinesVM wvm = await GetUserPreferences();

                wvm.Wine = await _winesServices.GetWineByIdAsync(id);

                AppUser user = await _userManager.FindByEmailAsync(User.Identity.Name);

                await _tastesServices.InsertClickValues(wvm.Wine.ColourId, wvm.Wine.SourceId, wvm.Wine.SweetnesId, 1, user.Id);


                List <Wine> listOne   = new List <Wine>();
                List <Wine> listTwo   = new List <Wine>();
                List <Wine> listThree = new List <Wine>();

                int colourTasteOne    = wvm.ListUserColourTaste[0].ColourId;
                int sweetnessTasteOne = wvm.ListUserSweetnessTaste[0].SweetnesId;
                int sourceTasteOne    = wvm.ListUserSourceTaste[0].SourceId;


                //Filtro para sacar los vinos segun gustos
                foreach (Wine wine in await _winesServices.GetWinesAsync())
                {
                    if (wine.ColourId == wvm.Wine.ColourId && wine.SweetnesId == wvm.ListUserSweetnessTaste[0].SweetnesId && wine.SourceId == wvm.ListUserSourceTaste[0].SourceId)
                    {
                        listOne.Add(wine);
                    }
                    else if (wine.ColourId == wvm.Wine.ColourId && wine.SweetnesId == wvm.ListUserSweetnessTaste[1].SweetnesId && wine.SourceId == wvm.ListUserSourceTaste[1].SourceId)
                    {
                        listOne.Add(wine);
                    }
                    else if (wine.ColourId == wvm.Wine.ColourId && wine.SweetnesId == wvm.ListUserSweetnessTaste[2].SweetnesId && wine.SourceId == wvm.ListUserSourceTaste[2].SourceId)
                    {
                        listOne.Add(wine);
                    }
                    else if (wine.ColourId == wvm.ListUserColourTaste[0].ColourId && wine.SweetnesId == wvm.ListUserSweetnessTaste[0].SweetnesId && wine.SourceId == wvm.ListUserSourceTaste[0].SourceId)
                    {
                        listTwo.Add(wine);
                    }
                    else if (wine.ColourId == wvm.ListUserColourTaste[1].ColourId && wine.SweetnesId == wvm.ListUserSweetnessTaste[1].SweetnesId && wine.SourceId == wvm.ListUserSourceTaste[1].SourceId)
                    {
                        listTwo.Add(wine);
                    }
                    else if (wine.ColourId == wvm.ListUserColourTaste[2].ColourId && wine.SweetnesId == wvm.ListUserSweetnessTaste[2].SweetnesId && wine.SourceId == wvm.ListUserSourceTaste[2].SourceId)
                    {
                        listTwo.Add(wine);
                    }
                    else if (wine.SourceId == wvm.Wine.SourceId && wine.SweetnesId == wvm.ListUserSweetnessTaste[0].SweetnesId)
                    {
                        listThree.Add(wine);
                    }
                    else if (wine.SourceId == wvm.Wine.SourceId && wine.SweetnesId == wvm.ListUserSweetnessTaste[1].SweetnesId)
                    {
                        listThree.Add(wine);
                    }
                    else if (wine.SourceId == wvm.Wine.SourceId && wine.SweetnesId == wvm.ListUserSweetnessTaste[2].SweetnesId)
                    {
                        listThree.Add(wine);
                    }
                    else if (wine.SweetnesId == wvm.ListUserSweetnessTaste[0].SweetnesId)
                    {
                        listTwo.Add(wine);
                    }
                    else if (wine.SourceId == wvm.ListUserSourceTaste[0].SourceId)
                    {
                        listThree.Add(wine);
                    }
                }

                Random rnd = new Random();
                wvm.ListWinesTastesDetails = new List <Wine>();
                for (int i = 0; i < 5; i++)
                {
                    if (listOne.Count != 0 && listOne.Count > i)
                    {
                        bool salir = false;
                        do
                        {
                            int numberRandom = rnd.Next(0, listOne.Count - 1);
                            if (!wvm.ListWinesTastesDetails.Contains(listOne[numberRandom]))
                            {
                                wvm.ListWinesTastesDetails.Add(listOne[numberRandom]);
                                salir = true;
                            }
                        } while (!salir);
                    }
                    else
                    {
                        break;
                    }
                }
                for (int i = 0; i < 3; i++)
                {
                    if (listTwo.Count != 0 && listTwo.Count > i)
                    {
                        bool salir = false;
                        do
                        {
                            int numberRandom = rnd.Next(0, listTwo.Count - 1);
                            if (!wvm.ListWinesTastesDetails.Contains(listTwo[numberRandom]))
                            {
                                wvm.ListWinesTastesDetails.Add(listTwo[numberRandom]);
                                salir = true;
                            }
                        } while (!salir);
                    }
                    else
                    {
                        break;
                    }
                }
                for (int i = 0; i < 2; i++)
                {
                    if (listThree.Count != 0 && listThree.Count > i)
                    {
                        bool salir = false;
                        do
                        {
                            int numberRandom = rnd.Next(0, listThree.Count - 1);
                            if (!wvm.ListWinesTastesDetails.Contains(listThree[numberRandom]))
                            {
                                wvm.ListWinesTastesDetails.Add(listThree[numberRandom]);
                                salir = true;
                            }
                        } while (!salir);
                    }
                    else
                    {
                        break;
                    }
                }

                if (wvm.ListWinesTastesDetails.Count == 0)
                {
                    return(NotFound());
                }
                //lista de los vinos mejor valorados de orde de mayor a menor
                wvm.ListWineUserScore = await _winesServices.GetWinesAsync();

                wvm.ListWineUserScore = wvm.ListWineUserScore.OrderByDescending(x => x.Score).ToList().GetRange(0, 10);

                return(View(wvm));
            }
            else
            {
                WinesVM wvm = new WinesVM();
                wvm.Wine = await _winesServices.GetWineByIdAsync(id);

                wvm.ListWineUserScore = await _winesServices.GetWinesAsync();

                wvm.ListWineUserScore = wvm.ListWineUserScore.OrderByDescending(x => x.Score).ToList().GetRange(0, 10);
                return(View(wvm));
            }
        }