public List <MUposlenik> GetSlicniInstruktori(RecommenderSearchRequest search) { UcitajInstruktore(search.InstruktorId);//svi osim odabranog var utisciOdabranogInstruktora = _context.Utisak.Where(x => x.UposlenikId == search.InstruktorId).OrderBy(x => x.KandidatId).ToList(); var zajednickeOcene1 = new List <Utisak>(); var zajednickeOcene2 = new List <Utisak>(); var slicniInstruktori = new List <MUposlenik>(); foreach (var inst in utisciZaDrugeInstruktore) { foreach (var utisci in utisciOdabranogInstruktora) { if (inst.Value.Where(x => x.KandidatId == utisci.KandidatId).Count() > 0) { zajednickeOcene1.Add(utisci); zajednickeOcene2.Add(inst.Value.Where(x => x.KandidatId == utisci.KandidatId).First()); } } double slicnost = GetSlicnost(zajednickeOcene1, zajednickeOcene2); var slicanInstruktor = InstruktorGetById(inst.Key); if (slicnost > 0.6) { slicniInstruktori.Add(slicanInstruktor); } zajednickeOcene1.Clear(); zajednickeOcene2.Clear(); } return(slicniInstruktori); }
private void GetOstaleProdukte(int produktId, int restoranId) { RecommenderSearchRequest request = new RecommenderSearchRequest { ProduktId = produktId }; List <MProdukti> produktiList = Get(request); List <Review> reviews; //isfiltirana lista, po restoranu var meniProdukti = _meniProduktiService.Get(new MeniProduktiSearchRequest { RestoranId = restoranId }); foreach (var item in produktiList) { if (meniProdukti.Select(i => i.ProduktiId).Contains(item.ProduktiId)) { //ocjene koje nisu taj produkt* reviews = _context.Review.Where(x => x.ProduktiId == item.ProduktiId && x.ProduktiId != null).OrderBy(x => x.KorisnikId).ToList(); if (reviews.Count > 0) { nisuTajProdukt.Add(item.ProduktiId, reviews); } } } }
public List <MProdukti> Get(RecommenderSearchRequest search) { var query = _context.Set <Database.Produkti>().AsQueryable(); query = query.Where(i => i.ProduktiId != search.ProduktId); var list = query.ToList(); return(_mapper.Map <List <MProdukti> >(list)); }
public List <MProdukti> GetSlicniProdukti(RecommenderSearchRequest request) { GetOstaleProdukte(request.ProduktId, request.RestoranId); //ocjene koje nisu taj produkt //ocjene koje jesu taj produkt List <Review> jesuTajProdukt = _context.Review.Where(x => x.ProduktiId == request.ProduktId && x.ProduktiId != null).OrderBy(x => x.KorisnikId).ToList(); List <Review> ocjene1 = new List <Review>(); List <Review> ocjene2 = new List <Review>(); List <MProdukti> slicniProdukti = new List <MProdukti>(); foreach (var n in nisuTajProdukt) { foreach (var j in jesuTajProdukt) { if (n.Value.Where(x => x.KorisnikId == j.KorisnikId).Count() > 0) { ocjene1.Add(j); ocjene2.Add(n.Value.Where(x => x.KorisnikId == j.KorisnikId).First()); } } double sim = IzracunajSlicnost(ocjene1, ocjene2); if (sim > 0.7) { var slican = GetById(n.Key); slicniProdukti.Add(slican); } ocjene1.Clear(); ocjene2.Clear(); } return(slicniProdukti); }
public List <MProdukti> GetSlicniProdukti([FromQuery] RecommenderSearchRequest search) { return(_recommenderService.GetSlicniProdukti(search)); }
public List <MUposlenik> Get([FromQuery] RecommenderSearchRequest search) { return(_recommenderService.GetSlicniInstruktori(search)); }