public async Task InitPreporuka() { Putnici p = await GetPutnik(); SistemPreporukeRequest searchS = new SistemPreporukeRequest() { PutnikId = p.PutnikId }; var preporuka = await _preporuka.Get <SistemPreporuke>(searchS); if (VrstaKarteList.Count == 0) { var listVrsteKarti = await _vKarte.Get <List <VrstaKarte> >(null); foreach (var x in listVrsteKarti) { VrstaKarteList.Add(x); } } if (SelectedVrstaKarte == null || SelectedVrstaKarte.VrstaKarteId == 1) { RedVoznjeList.Clear(); foreach (var item in preporuka.listaPreporuka) { if (item.DatumVrijemePolaska > DateTime.Now) { RedVoznjeList.Add(item); } } } else if (SelectedVrstaKarte.VrstaKarteId == 2) { popust = (decimal?)0.15; RedVoznjeList.Clear(); foreach (var item in preporuka.listaPreporuka) { item.Cijena = item.Cijena - (item.Cijena * popust); if (item.DatumVrijemePolaska > DateTime.Now) { RedVoznjeList.Add(item); } } } else if (SelectedVrstaKarte.VrstaKarteId == 3) { popust = (decimal?)0.10; RedVoznjeList.Clear(); foreach (var item in preporuka.listaPreporuka) { item.Cijena = item.Cijena - (item.Cijena * popust); if (item.DatumVrijemePolaska > DateTime.Now) { RedVoznjeList.Add(item); } } } }
public Model.SistemPreporuke Get(SistemPreporukeRequest request) { var putnik = _db.Putniks.Find(request.PutnikId); //Pronadji logovanog putnika var listaAutobusa = _db.Autobus.ToList(); //Lista autobusa var listaAutobusaSaOcjenom = new List <int>(); // Lista autobusa sa ocjenom vecom od ispod određene var listaAutobusaBezOcjene = new List <int>(); // Lista autobusa sa ocjenom manjom od ispod određene var listaPolazista = new List <int>(); // Lista polazišta koje je korisnik ranije odabrao var ratingList = _db.Ocjenas.Include(x => x.Putnik).Include(x => x.Autobus).ToList(); //Sve ocjene za logovanog putnika var listRedova = new List <Model.RedVoznje>(); //Lista redova voznje za autobuse sa ocjenom var listRedoviVoznje = new List <Model.RedVoznje>(); //Lista redova voznje za autobuse sa ocjenom i zbirom grada polaska veci od 2 float countRatings = 0; int brojacOcjena = 0; SistemPreporuke model = new SistemPreporuke(); model.listaPreporuka = new List <Model.RedVoznje>(); foreach (var vozilo in listaAutobusa) { countRatings = 0; brojacOcjena = 0; foreach (var r in ratingList) { if (vozilo.AutobusId == r.AutobusId && r.PutnikId != putnik.PutnikId) { if (r.Ocjena1 >= 3) { countRatings += (float)r.Ocjena1; //Dodaje ocjenu vecu od 3 brojacOcjena++; //Povecava brojac dodatih ocjena } } } float avg = 0; if (countRatings != 0) { avg = (float)(countRatings / brojacOcjena); //Izracunava prosjek, suma/broj ocjena } if (avg >= 4) { listaAutobusaSaOcjenom.Add(vozilo.AutobusId); //Ako je prosjek ocjene veci od 4 dodaje id autobusa } else { listaAutobusaBezOcjene.Add(vozilo.AutobusId); } } foreach (var item in listaAutobusaSaOcjenom) { var listRed = _db.RedVoznjes.Where(x => x.AutobusId == item).ToList(); foreach (var x in listRed) { listRedova.Add(_mapper.Map <Model.RedVoznje>(x)); //Dodaje sve Redove voznji sa autobusima (ocjenom iznad prosjeka) listaPolazista.Add((int)x.GradPolaskaId); //Dodajemo id od grada polazista } } foreach (var item in listRedova) { var brojac = 0; for (int i = 0; i < listaPolazista.Count; i++) { if (item.GradPolaskaId == listaPolazista[i]) { brojac++; } } if (brojac > 2) { listRedoviVoznje.Add(item); //Dodaje redove voznje koji su imali isti grad polaska više od 2x } } foreach (var item in listRedoviVoznje) { if (item.DatumVrijemePolaska >= DateTime.Today) { model.listaPreporuka.Add(item); } } model.listaPreporuka = model.listaPreporuka.OrderByDescending(r => r.Cijena).ToList(); return(model); }
public ActionResult <Model.SistemPreporuke> Get([FromQuery] SistemPreporukeRequest request) { return(_service.Get(request)); }