Ejemplo n.º 1
0
        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]);
        }
Ejemplo n.º 2
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);
        }