Exemple #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]);
        }
Exemple #2
0
        public async Task <KorisnikRating> GetKorisnikRating(int korisnikId)
        {
            KorisnikRating korisnikRating = new KorisnikRating();

            korisnikRating.KorisnikId  = korisnikId;
            korisnikRating.Ocjene      = new List <int>();
            korisnikRating.PutovanjeId = new List <int>();

            List <Rezervacije> sveRezervacije = await rezervacijeService.Get <List <Rezervacije> >(null);


            List <Recenzije> sveRecenzije = await recenzijeService.Get <List <Recenzije> >(null);

            foreach (var x in sveRezervacije)
            {
                if (x.KorisnikId == korisnikRating.KorisnikId)
                {
                    foreach (var y in sveRecenzije)
                    {
                        if (y.RezervacijaId == x.RezervacijaId)
                        {
                            korisnikRating.PutovanjeId.Add(x.PutovanjeId);
                            korisnikRating.Ocjene.Add(y.Ocjena ?? default(int));
                        }
                    }
                }
            }

            return(korisnikRating);
        }
        public async Task <List <TurAgencijaRS2_Model.Putovanja> > orderbyOcjena(KorisnikRating korisnikRatings)
        {
            List <TurAgencijaRS2_Model.Putovanja> result = new List <TurAgencijaRS2_Model.Putovanja>();


            for (int i = 0; i < korisnikRatings.Ocjene.Count; i++)
            {
                for (int j = i + 1; j < korisnikRatings.Ocjene.Count; j++)
                {
                    if (korisnikRatings.Ocjene[i] < korisnikRatings.Ocjene[j])
                    {
                        var temp = new int();
                        temp = korisnikRatings.Ocjene[i];
                        korisnikRatings.Ocjene[i] = korisnikRatings.Ocjene[j];
                        korisnikRatings.Ocjene[j] = temp;

                        var putovanje = new int();


                        putovanje = korisnikRatings.PutovanjeId[i];
                        korisnikRatings.PutovanjeId[i] = korisnikRatings.PutovanjeId[j];
                        korisnikRatings.PutovanjeId[j] = putovanje;
                    }
                }
            }
            for (int i = 0; i < korisnikRatings.Ocjene.Count; i++)
            {
                var helper = await putovanjaService.GetById <TurAgencijaRS2_Model.Putovanja>(korisnikRatings.PutovanjeId[i]);

                result.Add(helper);
            }

            return(result);
        }
Exemple #4
0
        public List <KorisnikRating> sortDescendingScore(List <KorisnikRating> list)
        {
            for (int i = 0; i < list.Count; i++)
            {
                for (int j = i + 1; j < list.Count; j++)
                {
                    if (list[i].Score < list[j].Score)
                    {
                        var temp = new KorisnikRating();
                        temp    = list[i];
                        list[i] = list[j];
                        list[j] = temp;
                    }
                }
            }


            return(list);
        }
Exemple #5
0
        public List <int> getZajednickeOcjene(KorisnikRating korisnikRating, KorisnikRating logirani)
        {
            List <int> result = new List <int>();


            for (int i = 0; i < logirani.PutovanjeId.Count; i++)
            {
                for (int j = 0; j < korisnikRating.PutovanjeId.Count; j++)
                {
                    if (logirani.PutovanjeId[i] == korisnikRating.PutovanjeId[j])
                    {
                        result.Add(korisnikRating.Ocjene[j]);
                        break;
                    }
                }
            }

            return(result);
        }
Exemple #6
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);
        }
        public async Task Init(object m)
        {
            _korisnikId = Convert.ToInt32(m);

            putovanjaList.Clear();

            Recommender    recommender    = new Recommender();
            KorisnikRating korisnikRating = await recommender.GetNearestNeighborsAsync(_korisnikId);



            var listaPutovanjaScore = await orderbyOcjena(korisnikRating);

            var listPutovanja = await putovanjaService.Get <List <TurAgencijaRS2_Model.Putovanja> >(null);

            foreach (var x in listaPutovanjaScore)
            {
                var putovanje = new TurAgencijaRS2_Mobile1.Models.Putovanje()
                {
                    PonudaId      = x.PonudaId,
                    PutovanjeId   = x.PutovanjeId,
                    DatumPolaska  = x.DatumPolaska.ToShortDateString(),
                    DatumPovratka = x.DatumPovratka.ToShortDateString(),
                    Cijena        = x.Cijena,
                    GradId        = x.GradId,
                    Opis          = x.Opis,
                    Popust        = x.Popust,
                };

                var gradic = await _gradoviService.GetById <TurAgencijaRS2_Model.Gradovi>(x.GradId);

                putovanje.grad  = gradic.Naziv;
                putovanje.Slika = gradic.Slika;
                putovanjaList.Add(putovanje);
            }


            foreach (var x in listPutovanja)
            {
                var dodano = false;

                foreach (var y in listaPutovanjaScore)
                {
                    if (x.PutovanjeId == y.PutovanjeId)
                    {
                        dodano = true;
                    }
                }

                if (!dodano)
                {
                    var putovanje = new TurAgencijaRS2_Mobile1.Models.Putovanje()
                    {
                        PonudaId      = x.PonudaId,
                        PutovanjeId   = x.PutovanjeId,
                        DatumPolaska  = x.DatumPolaska.ToShortDateString(),
                        DatumPovratka = x.DatumPovratka.ToShortDateString(),
                        Cijena        = x.Cijena,
                        GradId        = x.GradId,
                        Opis          = x.Opis,
                        Popust        = x.Popust,
                    };


                    var gradic = await _gradoviService.GetById <TurAgencijaRS2_Model.Gradovi>(x.GradId);

                    putovanje.grad  = gradic.Naziv;
                    putovanje.Slika = gradic.Slika;
                    putovanjaList.Add(putovanje);
                }
            }

            Console.WriteLine(putovanjaList);
        }