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