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()); } }
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)); }
public SistemPreporuke(KreiranaSalataVM ks, List <Sastojci> preporuceni) { k = ks; preporuka = preporuceni; InitializeComponent(); }