public IHttpActionResult PostSnimi(KreiranaSalataVM Salata)
        {
            if (Salata != null)
            {
                // Kreiranje nove salate - trenutni datum i note
                Salate s = new Salate
                {
                    DatumKreiranja = DateTime.Now,
                    Napomena       = Salata.Napomena
                };
                ctx.Salate.Add(s);
                ctx.SaveChanges();

                // Povezivanje novokreirane salate sa stavkama salate
                SalataStavke ss;
                // Spajanje salate sa odabranim sastojcima
                foreach (int i in Salata.listaIzabranih)
                {
                    ss = new SalataStavke
                    {
                        SalataId   = s.Id,
                        SastojakId = i
                    };
                    ctx.SalataStavke.Add(ss);
                }
                ;

                // Snimanje promijena
                // Rezultat je da bi trebala postojati nova salata i biti spojena sa svim odabranim sastojcima
                ctx.SaveChanges();

                #region DodavanjeSalateUKorpu

                // Pretraga za korpom, da li korpa korisnika vec postoji i da li je ona aktivna
                var k = ctx.Korpa.FirstOrDefault(x => x.Aktivna && x.Korisnik.Id == Salata.KorisnikId);

                // Ukoliko korisnik nema korpu, potrebno je kreirati novu i aktivirati je
                if (k == null)
                {
                    // Inicijalizacija nove korpe
                    k = new Korpa
                    {
                        KorisnikId         = Salata.KorisnikId,
                        Zavrsena           = false,
                        Aktivna            = true,
                        VrijemeDolaska     = DateTime.Now,
                        VrijemeNarucivanja = DateTime.Now,
                        Sifra = Constants.GenerateUniqueKod(9)
                    };
                    ctx.Korpa.Add(k);

                    // Spasavanje promijena
                    ctx.SaveChanges();
                }

                // Potrebno je uvezati korisnicku korpu sa stavkama, odnosno sa salatama
                KorpaStavke ks = new KorpaStavke
                {
                    KorpaId  = k.Id,
                    SalataId = s.Id,
                    Kolicina = Salata.Kolicina
                };

                // Dodavanje u tabelu stavki korpe
                ctx.KorpaStavke.Add(ks);

                // Snimanje promijena
                ctx.SaveChanges();

                #endregion


                return(Ok());
            }
            else
            {
                return(NotFound());
            }
        }
Exemplo n.º 2
0
        private void btnKreirajSalatu_Clicked(object sender, EventArgs e)
        {
            if (multiPage != null)
            {
                if (GlavniPicker.SelectedIndex == -1 || DresingPicker.SelectedIndex == -1 ||
                    Kolicina.Text == "" || Int32.TryParse(Kolicina.Text, out broj) == false)
                {
                    DisplayAlert("Upozorenje", "Podaci nisu validni", "OK");
                    return;
                }
                List <Sastojci> izabrani = multiPage.GetSelection();
                if (izabrani.Count() == 0)
                {
                    DisplayAlert("Upozorenje", "Podaci nisu validni", "OK");
                    return;
                }
                glavni  = (Sastojci)GlavniPicker.SelectedItem;
                dresing = (Sastojci)DresingPicker.SelectedItem;
                izabrani.Add(glavni);
                izabrani.Add(dresing);
                List <int> SastojciIds = new List <int>();
                foreach (Sastojci i in izabrani)
                {
                    SastojciIds.Add(i.Id);
                }

                if (SastojciIds != null)
                {
                    KreiranaSalataVM k = new KreiranaSalataVM
                    {
                        KorisnikId     = Global.logedUser.Id,
                        listaIzabranih = SastojciIds,
                        Kolicina       = Convert.ToInt32(Kolicina.Text),
                        Napomena       = Napomena.Text
                    };

                    //SISTEM PREPORUKE
                    HttpResponseMessage repsonePreporuka = preporukaService.PostResponse(k);
                    if (repsonePreporuka.IsSuccessStatusCode)
                    {
                        var             jsonResult        = repsonePreporuka.Content.ReadAsStringAsync();
                        List <Sastojci> sastojciPreporuka = JsonConvert.DeserializeObject <List <Sastojci> >(jsonResult.Result);

                        if (sastojciPreporuka.Count() != 0)
                        {
                            //Dialog sa ponudenim sastojcima, ako klikne na button, dodaj u izabrane
                            Navigation.PushAsync(new ESBX.SistemPreporuke(k, sastojciPreporuka));
                            OcistiFormu();
                            return;
                        }
                    }

                    //Na kraju
                    HttpResponseMessage repsoneDodaj = kreiranjeService.PostCustomRouteResponse("api/KreiranjeSalate", k);
                    if (repsoneDodaj.IsSuccessStatusCode)
                    {
                        DisplayAlert("Uspjeh", "Uspješno ste kreirali salatu.", "OK");
                        OcistiFormu();
                    }
                    else
                    {
                        DisplayAlert("Oprez", "Salata nije kreirana.", "OK");
                    }
                }
            }
            else
            {
                DisplayAlert("Upozorenje", "Podaci nisu validni", "OK");
                return;
            }
        }
        public IHttpActionResult PostPreporuka(KreiranaSalataVM SalataTrenutnog)
        {
            int KorisnikTrenutni = SalataTrenutnog.KorisnikId;

            //poredi se koje su to salate koje imaju iste sastojke kao korisnikova salata
            List <int> sastojciTrenutni = SalataTrenutnog.listaIzabranih;


            foreach (int Id in ctx.Salate.Select(x => x.Id).ToList())
            {
                List <int> stavkeIds = ctx.SalataStavke.Where(y => y.SalataId == Id).Select(z => z.SastojakId).ToList();
                Uporedi(sastojciTrenutni, stavkeIds, Id);
            }


            //da li korisnik ima kreiranih salata koje sadrze neke od izdvojenih sastojaka a da je tu salatu ocjenio s >3
            List <int> SalataIds = ctx.OcjeneKomentari.Where(x => x.KorisnikId == KorisnikTrenutni && x.Ocjena > 3).Select(y => y.SalataId).ToList();

            if (SalataIds != null)
            {
                foreach (var i in SalataIds)
                {
                    List <int> sastojci = ctx.SalataStavke.Where(x => x.SalataId == i).Select(v => v.SastojakId).ToList();
                    foreach (var n in sastojci)
                    {
                        if (sastojciKojeNemaTrenutni.Contains(n))
                        {
                            if (!sastojciKojePredlazemo.Contains(n))
                            {
                                sastojciKojePredlazemo.Add(n);
                            }
                        }
                    }
                }
            }

            //rjesavanje cold starta, tj ako nemamo nista nakono provjere da predlozimo, trazimo korisnikove omiljene sastojke
            //ideja da u sastojke koje predlazemo dodamo one iz liste omiljenih kojih nema u trenutoj salati
            if (sastojciKojePredlazemo.Count() == 0)
            {
                List <int> omiljeni = ctx.KorisnikSastojci.Where(x => x.KorisnikId == KorisnikTrenutni).Select(y => y.SastojakId).ToList();

                foreach (var n in omiljeni.Except(SalataTrenutnog.listaIzabranih))
                {
                    if (!sastojciKojeNemaTrenutni.Contains(n))
                    {
                        if (ctx.Sastojci.Where(x => x.Id == n).Select(y => y.VrstaSastojkaId).FirstOrDefault() != 1)
                        {
                            sastojciKojeNemaTrenutni.Add(n);
                        }
                    }
                }
            }



            List <SastojciMobileVM> listsastojciKojePredlazemo = new List <SastojciMobileVM>();

            foreach (var i in sastojciKojePredlazemo)
            {
                SastojciMobileVM m = new SastojciMobileVM();
                m.Id    = i;
                m.Naziv = ctx.Sastojci.Where(x => x.Id == i).Select(y => y.Naziv).FirstOrDefault();
                listsastojciKojePredlazemo.Add(m);
            }

            return(Ok(listsastojciKojePredlazemo));
        }
Exemplo n.º 4
0
 public SistemPreporuke(KreiranaSalataVM ks, List <Sastojci> preporuceni)
 {
     k         = ks;
     preporuka = preporuceni;
     InitializeComponent();
 }