public IHttpActionResult GetDetalji(string kompanijaID)
        {
            KompanijeDetalji_Result kompanija = db.esp_Kompanije_GetDetalji(Convert.ToInt32(kompanijaID)).FirstOrDefault();

            if (kompanija == null)
            {
                return(NotFound());
            }

            return(Ok(kompanija));
        }
        protected override void OnAppearing()
        {
            HttpResponseMessage response = kompanijeService.GetActionResponse("GetDetalji", kompanijaID.ToString());

            if (response.IsSuccessStatusCode)
            {
                var jsonObject = response.Content.ReadAsStringAsync();
                KompanijeDetalji_Result kompanija = JsonConvert.DeserializeObject <KompanijeDetalji_Result>(jsonObject.Result);
                k = kompanija;

                kompanijaLbl.Text = kompanija.Naziv;
                adresaLbl.Text    = kompanija.Adresa;
                GradLbl.Text      = kompanija.Grad;
                emailLbl.Text     = kompanija.Email;
                TelefonLbl.Text   = kompanija.Telefon;

                setButton();
                IzracunajProsjecneOcjene();
            }


            //recommender

            HttpResponseMessage response2 = kompanijeService.GetActionResponse("PreporuceneKompanije", kompanijaID.ToString(), Global.izabranaKategorija.KategorijaID.ToString());

            if (response2.IsSuccessStatusCode)
            {
                var jsonObject = response2.Content.ReadAsStringAsync();
                List <KompanijeDetalji_Result> preporuceneKompanije = JsonConvert.DeserializeObject <List <KompanijeDetalji_Result> >(jsonObject.Result);
                //preporuceneKompanije su sortirane po prosjecnim ocjenama, te je u listu dodana jedna kompanija bez ocjena

                int i = 0;
                foreach (var x in preporuceneKompanije)
                {
                    if (i == 0)
                    {
                        x.LogoSrc = "logo4.png";
                    }
                    else if (i == 1)
                    {
                        x.LogoSrc = "logo2.png";
                    }
                    else if (i == 2)
                    {
                        x.LogoSrc = "logo3.png";
                    }
                    else if (i == 3)
                    {
                        x.LogoSrc = "logo1.png";
                    }
                    else if (i == 4)
                    {
                        x.LogoSrc = "logo5.png";
                    }
                    else if (i == 5)
                    {
                        x.LogoSrc = "logo6.png";
                    }
                    else if (i == 6)
                    {
                        x.LogoSrc = "logo7.png";
                    }
                    else
                    {
                        x.LogoSrc = "logo3.png";
                    }
                    i++;
                }

                kompanijeList.ItemsSource = preporuceneKompanije;
            }
        }
Exemple #3
0
        public List <KompanijeDetalji_Result> GetSlicneKompanije(int kompanijaID, int kategorijaID)
        {
            UcitajKompanije(kompanijaID, kategorijaID);
            List <Ocjene> ocjenePosmatraneKompanije = db.esp_Ocjene_GetByKompanijaID(kompanijaID).ToList();

            List <Ocjene> zajedniceOcjene1 = new List <Ocjene>();
            List <Ocjene> zajedniceOcjene2 = new List <Ocjene>();
            List <KompanijeDetalji_Result> preporuceneKompanije = new List <KompanijeDetalji_Result>();


            //preporuci slicne kompanije
            foreach (var x in kompanijeDict)
            {
                foreach (var o in ocjenePosmatraneKompanije)
                {
                    if (x.Value.Where(i => i.KlijentID == o.KlijentID).Count() > 0)
                    {
                        zajedniceOcjene1.Add(o);
                        zajedniceOcjene2.Add(x.Value.Where(i => i.KlijentID == o.KlijentID).First());
                    }
                }
                double slicnost = GetSlicnost(zajedniceOcjene1, zajedniceOcjene2);
                if (slicnost > 0.85)
                {
                    preporuceneKompanije.Add(db.esp_Kompanije_GetDetalji(x.Key).First());
                }
                zajedniceOcjene1.Clear();
                zajedniceOcjene2.Clear();
            }


            if (preporuceneKompanije.Count() != 0)
            {
                //sortiranje
                preporuceneKompanije = preporuceneKompanije.OrderByDescending(p => p.ProsjecnaOcjena).ToList();
            }

            //cold start, ukoliko klijent jos nije ocijenio nijednu kompaniju -
            //dodaj top 5 sa najvecom prosjecnom ocjenom
            else
            {
                List <Kompanije> CS = new List <Kompanije>();

                CS = db.esp_Recommender_ColdStart(kompanijaID, kategorijaID).ToList();
                foreach (var x in CS)
                {
                    preporuceneKompanije.Add(db.esp_Kompanije_GetDetalji(x.KompanijaID).First());
                }

                //sortiranje
                preporuceneKompanije = preporuceneKompanije.OrderByDescending(p => p.ProsjecnaOcjena).ToList();
            }

            List <KompanijeDetalji_Result> filter = new List <KompanijeDetalji_Result>();

            //filtriraj prvih 5 i dodaj jednu kompaniju bez ocjene
            if (preporuceneKompanije.Count > 5)
            {
                // select top 5
                foreach (var x in preporuceneKompanije)
                {
                    filter.Add(x);

                    if (filter.Count >= 5)
                    {
                        break;
                    }
                }

                //dodaj jednu kompaniju bez ocjene u listu -- 6. stavka
                Kompanije bezOcjene = db.esp_Recommender_ColdStart_PreporuciKompanijeBezOcjena(kompanijaID, kategorijaID).FirstOrDefault();
                if (bezOcjene != null) // ako ne postoji kompanija bez ocjene
                {
                    filter.Add(db.esp_Kompanije_GetDetalji(bezOcjene.KompanijaID).First());
                }
            }
            else
            {
                // ukoliko nema toliko zajednickih kompanija i mal je broj ocjenjenih kompanija(cold start,pocetak rada aplikacije) popuni listu sa random kompanijama
                foreach (var x in preporuceneKompanije)
                {
                    filter.Add(x);
                }

                int brojac   = 0;
                int loopStop = 0;

                while (filter.Count < 6 && loopStop < 100)
                {
                    //popuni listu random kompanijama bez ocjena
                    Kompanije bezOcjene        = db.esp_Recommender_ColdStart_PreporuciKompanijeBezOcjena(kompanijaID, kategorijaID).FirstOrDefault();
                    KompanijeDetalji_Result kd = db.esp_Kompanije_GetDetalji(bezOcjene.KompanijaID).First();

                    bool postoji = false;
                    foreach (var x in filter.ToList())
                    {
                        postoji = false;
                        if (kd.KompanijaID == x.KompanijaID)// ukoliko vec postoji kompanija u listi, nemoj je dodavati
                        {
                            brojac--;
                            postoji = true;
                        }
                    }

                    if (postoji == false)
                    {
                        filter.Add(db.esp_Kompanije_GetDetalji(bezOcjene.KompanijaID).First());
                    }

                    brojac++;
                    loopStop++; // zaustavi beskonacnu petlju ako vise nema kompanija na listi, lista preporucenih kompanija ce biti manja od 6
                }
            }

            return(filter);
        }