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; } }
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); }