public KnjigeDetailPage(Model.Knjige knjiga) { InitializeComponent(); BindingContext = model = new KnjigeDetailViewModel() { Knjiga = knjiga }; }
private Dictionary <int, List <KnjigeSlicnosti> > slicnosti = new Dictionary <int, List <KnjigeSlicnosti> >(); //Cosine similarity public List <Model.Knjige> GetRecommendedProducts(int kupacId) { List <Ocjene> commonRatings1 = new List <Ocjene>(); List <Ocjene> commonRatings2 = new List <Ocjene>(); GetNeOcjenjeneKnjige(kupacId); //ne ocjenjene knjige kupca GetProductsData(); //knjige koje su ocjenjene List <KnjigeSlicnosti> row = new List <KnjigeSlicnosti>(); for (int i = 0; i < NeOcjenjeneKnjige.Values.Count; i++) { for (int j = 0; j < OcjenjeKnjige.Values.Count; j++) { var p = NeOcjenjeneKnjige.Values.ElementAt(i).Select(s => s.KnjigaId).First(); var q = OcjenjeKnjige.Values.ElementAt(j).Select(s => s.KnjigaId).First(); if (p == q) { row.Add(new KnjigeSlicnosti() { KnjigaId = q, Slicnost = 0f }); continue; } foreach (var item in NeOcjenjeneKnjige.Values.ElementAt(i)) { foreach (var item2 in OcjenjeKnjige.Values.ElementAt(j)) { if (item.KupacId == item2.KupacId) { commonRatings1.Add(item); commonRatings2.Add(item2); } } } double sim2 = CalculateSimilarity(commonRatings1, commonRatings2); commonRatings1.Clear(); commonRatings2.Clear(); row.Add(new KnjigeSlicnosti() { KnjigaId = q, Slicnost = sim2 }); } var NoviRed = new List <KnjigeSlicnosti>(row); slicnosti.Add(NeOcjenjeneKnjige.Keys.ElementAt(i), NoviRed); row.Clear(); } double brojnik = 0; double nazivnik = 0; double suma = 0; List <KnjigeSlicnosti> preporuke = new List <KnjigeSlicnosti>(); for (int i = 0; i < slicnosti.Values.Count; i++) { foreach (var item in slicnosti.Values.ElementAt(i)) { if (item.Slicnost > 0.6f) { var p = _context.Ocjene.Where(w => w.KupacId == 1 && w.KnjigaId == item.KnjigaId).ToList(); if (p.Count() > 0) { brojnik += item.Slicnost * p.Average(a => a.Ocjena); nazivnik += item.Slicnost; } } } suma = brojnik / nazivnik; preporuke.Add(new KnjigeSlicnosti() { KnjigaId = slicnosti.Keys.ElementAt(i), Slicnost = suma }); } List <Model.Knjige> preporuceneKnjige = new List <Model.Knjige>(); foreach (var item in preporuke) { if (item.Slicnost >= 3) { var knjiga = _context.Knjige.Where(w => w.KnjigaId == item.KnjigaId).FirstOrDefault(); var modelknjiga = new Model.Knjige() { KnjigaId = knjiga.KnjigaId, Sifra = knjiga.Sifra, OriginalniNaziv = knjiga.OriginalniNaziv, Naziv = knjiga.Naziv, Isbn = knjiga.Isbn, GodinaIzdanja = knjiga.GodinaIzdanja, BrojStrana = knjiga.BrojStrana, Jezik = knjiga.Jezik, Sadrzaj = knjiga.Sadrzaj, Izdanje = knjiga.Izdanje, Cijena = knjiga.Cijena, Format = knjiga.Format, SlikaNaslovnice = knjiga.SlikaNaslovnice, SlikaNaslovniceThumb = knjiga.SlikaNaslovniceThumb, Knjiga = knjiga.Knjiga, UzorakKnjige = knjiga.UzorakKnjige, Status = knjiga.Status, KolekcijaId = knjiga.KolekcijaId, IzdavacId = knjiga.IzdavacId, }; var izdavac = _context.Izdavaci.Where(w => w.IzdavacId == modelknjiga.IzdavacId).FirstOrDefault(); modelknjiga.Izdavac = new Model.Izdavaci() { IzdavacId = izdavac.IzdavacId, Naziv = izdavac.Naziv, GodinaOsnivanja = izdavac.GodinaOsnivanja, KontaktOsoba = izdavac.KontaktOsoba, KontaktTelefon = izdavac.KontaktTelefon, KontaktEmail = izdavac.KontaktEmail, Status = izdavac.Status, GradId = izdavac.GradId }; preporuceneKnjige.Add(modelknjiga); } } return(preporuceneKnjige); }