// GET: DataEntry/Edit/5 public async Task <ActionResult> Rekomandimet() { var user = await GetUser(); var rekomandimet = (USER_DATA)Session["perdoruesi"]; var meals = db.USER_RATING.ToList(); if (rekomandimet != null) { meals = db.USER_RATING.Where(q => q.UserID == rekomandimet.UserID).OrderByDescending(q => q.RatingID).Take(4).ToList(); if (meals.Count() == 0) { var rand = new Random(); var lista = db.USER_RATING.Take(30).ToList(); List <USER_RATING> ushqimet = new List <USER_RATING>(); for (int i = 0; i < 6; i++) { int r = rand.Next(lista.Count); USER_RATING m = lista.Skip(r).First(); if (!ushqimet.Contains(m)) { ushqimet.Add(m); } } meals = ushqimet; } } else { meals = db.USER_RATING.Take(4).ToList(); } return(View(meals)); }
public async Task <ActionResult> CalculatePearson(IList <USER_RATING> meals_model) { Session["meals"] = null; Session["listaPerfundimtare"] = null; var user = await GetUser(); MessageJS returnmodel = new MessageJS(); List <Pearson_Corelation> pearson_corelation = new List <Pearson_Corelation>(); if (ModelState.IsValid) { try { //kshyrmi ne db qe contains krejt qeto meals qe i ban rating useri var meals_db = db.USER_RATING.Where(q => q.UserID != user.ID).Select(q => q.MealID).ToList(); var meals_common = meals_model.Where(c => meals_db.Contains(c.MealID)).Select(q => q.MealID).ToList(); //mirret lista e itemsave nga db per qeto meals (vetem userat e ngjajshem) var lista = db.USER_RATING.Where(q => meals_common.Contains(q.MealID)).ToList(); float Pearson_Score = 0; //grupimi ne baze te userave foreach (var item in lista.GroupBy(q => q.UserID)) { List <int> item_in_corelation = new List <int>(); List <int> item_in_corelation_db = new List <int>(); //secili rating per meals te njejte te user i qasur dhe userave te tjere futet ne listat perkatese foreach (var item1 in item) { var lista_userit = meals_model.Where(q => q.MealID == item1.MealID).FirstOrDefault(); if (lista_userit != null) { item_in_corelation.Add(lista_userit.RatingID); item_in_corelation_db.Add(item1.RatingID); } else { break; } } //kalkulohet pearson Pearson_Score = Coleration(item_in_corelation, item_in_corelation_db, item_in_corelation.Count()); pearson_corelation.Add(new Pearson_Corelation { UserID = item.Key, PearsonScore = Pearson_Score }); } //most similar scores; var lista_perfundimtare = pearson_corelation.OrderByDescending(q => q.PearsonScore).Take(3).ToList(); Session["listaPerfundimtare"] = lista_perfundimtare; Session["meals"] = meals_model.ToList(); //insertimi i te dhenave ne baze foreach (var item in meals_model) { USER_RATING model = new USER_RATING(); var exist = db.USER_RATING.Any(q => q.MealID == item.MealID && q.UserID == user.ID); var ratings = db.USER_RATING.Where(q => q.MealID == item.MealID && q.UserID == user.ID).ToList(); model.UserID = user.ID; var average_rating = (item.RatingID + ratings.Sum(q => q.RatingID)) / (1 + ratings.Count()); model.RatingID = item.RatingID; model.MealID = item.MealID; if (!exist) { db.USER_RATING.Add(model); } await db.SaveChangesAsync(); } returnmodel.Message = "Sukses"; returnmodel.Status = true; return(Json(returnmodel, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { returnmodel.Message = "Ka ndodhur nje gabim"; returnmodel.Status = false; return(Json(returnmodel, JsonRequestBehavior.AllowGet)); } } return(Json(returnmodel, JsonRequestBehavior.AllowGet)); }