public async Task <KorisnikRating> GetNearestNeighborsAsync(int korisnikId) { var tajKorisnik = 0; KorisnikRating user = await GetKorisnikRating(korisnikId); List <KorisnikRating> neighbors = new List <KorisnikRating>(); CorrelationUserComparer comparer = new CorrelationUserComparer(); KorisnikArticleRatingsTable ratings = await GetAllRatings(); for (int i = 0; i < ratings.Korisnici.Count; i++) { if (ratings.Korisnici[i].KorisnikId == user.KorisnikId) { tajKorisnik = i; ratings.Korisnici[i].Score = double.NegativeInfinity; } else { ratings.Korisnici[i].Score = comparer.CompareVectors(getZajednickeOcjene(ratings.Korisnici[i], user), getZajednickeOcjene(user, ratings.Korisnici[i])); } } ratings.Korisnici.RemoveAt(tajKorisnik); var result = sortDescendingScore(ratings.Korisnici); return(result[0]); }
//vraca sve korisnike i njihove ocjene public async Task <KorisnikArticleRatingsTable> GetAllRatings() { KorisnikArticleRatingsTable result = new KorisnikArticleRatingsTable(); #region servisi List <Turisti> turisti = await turistiService.Get <List <Turisti> >(null); List <Rezervacije> sveRezervacije = await rezervacijeService.Get <List <Rezervacije> >(null); List <Recenzije> sveRecenzije = await recenzijeService.Get <List <Recenzije> >(null); List <TurAgencijaRS2_Model.Korisnici> korisnici = await korisniciService.Get <List <TurAgencijaRS2_Model.Korisnici> >(null); List <TurAgencijaRS2_Model.Korisnici> turistiKorisnici = new List <TurAgencijaRS2_Model.Korisnici>(); //daje sve korisnike koji su turisti foreach (var x in korisnici) { foreach (var y in turisti) { if (y.KorisnikId == x.KorisnikId) { turistiKorisnici.Add(x); } } } #endregion var tCount = 0; var rvCount = 0; result.Korisnici = new List <KorisnikRating>(); foreach (var x in turistiKorisnici) { KorisnikRating korisnikRating = new KorisnikRating(); korisnikRating.KorisnikId = x.KorisnikId; korisnikRating.PutovanjeId = new List <int>(); korisnikRating.Ocjene = new List <int>(); foreach (var rv in sveRezervacije) { if (rv.KorisnikId == x.KorisnikId) { foreach (var rc in sveRecenzije) { if (rc.RezervacijaId == rv.RezervacijaId) { korisnikRating.Ocjene.Add(rc.Ocjena ?? default(int)); korisnikRating.PutovanjeId.Add(rv.PutovanjeId); } rvCount++; } } } result.Korisnici.Add(korisnikRating); } return(result); }