Example #1
0
        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);
                    }
                }
            }
        }
Example #2
0
        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));
 }