public SearchListPage(Utilizatori utilizator, Frigidere frigider, string categorie) { InitializeComponent(); m_utilizator = utilizator; m_frigider = frigider; m_categorie = categorie; }
/*** FRIGIDERE ***/ // functii pt frigidere: save, update si delete (pt ingrediente); afisam toate ingredientele ca lista // afisam toate ingredientele dintr-o categorie //!toreview! public Task <int> AddUpdateFrigiderAsync(Frigidere frigider) { if (frigider.F_id != 0) { return(_database.UpdateAsync(frigider)); } else {/* * var m_ingredient = new Ingrediente() * { * N_id = 0, * N_nume = "", * N_categorie = "", * N_subcategorie = "", * N_descriere = "", * N_link_imagine = "" * }; * * // inseram ingredientul in lista din frigider * frigider.F_ingrediente = new List<Ingrediente> { m_ingredient };*/ /*foreach (Ingrediente ing in frigider.F_ingrediente) * System.Diagnostics.Debug.WriteLine(">>>FCTing: " + ing.N_nume); * * _database.InsertAsync(frigider); * * foreach (Ingrediente ing in frigider.F_ingrediente) * System.Diagnostics.Debug.WriteLine(">>>2FCTing: " + ing.N_nume);*/ return(_database.InsertAsync(frigider)); } }
async void OnSubmitButtonClicked(object sender, EventArgs e) { // am luat informatiile din transmise prin editoare din xaml convertite la // tipul unei inregistrari a tabelului Utilizatori si le-am pus in m_utilizator var m_utilizator = (Utilizatori)BindingContext; // apelam functia de inregistrare cu informatiile transmise // vom "converti" (desface) de la Task<int> la int folosind await // in cazul in care result e 1, vom deschide pagina FridgeList // daca e 0, vom afisa un mesaj de eroare si vom deschide o pagina de eroare specifica // daca e -1, vom afisa un mesaj de eroare si vom deschide o alta pagina de eroare specifica var result = await App.Database.CheckRegisterAsync(m_utilizator); if (result == 1) { // cream un frigider nou care il vom insera in tabelul frigiderelor // si apoi il vom transmite la o functie pentru a updata utilizatorul curent // si a ii adauga acest frigider (trebuie intai sa adaugam frigiderul in tabel // pentru a folosi proprietatea frigider.F_id) Frigidere m_frigider = new Frigidere(); m_frigider.F_utilizator_id = m_utilizator.U_id; m_frigider.F_ingrediente = new List <Ingrediente> { }; //foreach (Ingrediente ing in m_frigider.F_ingrediente) //System.Diagnostics.Debug.WriteLine(">>>REGing: " + ing.N_nume); await App.Database.AddUpdateFrigiderAsync(m_frigider); m_utilizator.U_frigider = m_frigider.F_id; await App.Database.SaveUtilizatorAsync(m_utilizator); // await DisplayAlert("Alerta:", "m_utilizator:" + m_utilizator.U_frigider, "ok??"); await DisplayAlert("SUCCES!", "Inregistrarea a avut succes!", "Ok."); // vom iesi de pe pagina de register await Navigation.PopAsync(); // PUSHasync ne adauga o noua pagina pe stack-ul de pagini de navigare // adaugam o pagina de tipul Fridge pentru Frigider deoarece initial dupa reg/login ne va trimite la pagina cu ingredientele //await Navigation.PushAsync(new FridgeListPage()); } else if (result == 0) { await DisplayAlert("ESEC!", "Mai exista numele de utilizator sau email-ul.", "Ok."); } else if (result == -2) { await DisplayAlert("ESEC!", "Va rugam introduceti informatii in toate campurile.", "Ok."); } else { await DisplayAlert("ESEC!", "Eroare nespecificata. Incercati din nou.", "Ok."); } }
void showPageData(Frigidere m_frigider) { // pentru ca listView... din .xaml sa stie care lista sa o afiseze, folosim functia din CookingDatabase // elementele de la listViewIngredient vor avea valorile primite din GetFrigiderIngredientListAsync, metoda din CookingDatabase // luam utilizatorul transmis prin binding context de la pagina de Login // folosim functia getFrigiderFromUtilizator sa selectam frigiderul care corespunde utilizatorului curent // si il transmitem la functia care ne afiseaza ingredientele din frigider // daca m_categorie e null, va scoate toate ingredientele // daca m_categorie este numele unei categorii, va scoate doar categoria respectiva listViewIngredient.ItemsSource = App.Database.GetFrigiderIngredientListAsync(m_frigider, m_categorie); //await DisplayAlert("Alerta:","ID:" + m_utilizator.U_nume,"ok??"); //App.Database.GetFrigiderIngredientListAsync(m_utilizator); }
public Task <int> AddIngredientFrigiderAsync(Frigidere frigider, Ingrediente ingredient) { System.Diagnostics.Debug.WriteLine(">>>Informatii din ingredient: " + ingredient.N_nume); System.Diagnostics.Debug.WriteLine(">>>Informatii din Frigider: " + frigider.F_id); // cream un nou m_ingredient cu informatiile preluate de la ingredientul transmis /*var m_ingredient = new Ingrediente() * { * N_id = ingredient.N_id, * N_nume = ingredient.N_nume, * N_categorie = ingredient.N_categorie, * N_subcategorie = ingredient.N_subcategorie, * N_descriere = ingredient.N_descriere, * N_link_imagine = ingredient.N_link_imagine * }; * var m_ingredient = new Ingrediente() * { * N_id = 1, * N_nume = "ingredient", * N_categorie = "ingredient", * N_subcategorie = "ingredient", * N_descriere = "ingredient", * N_link_imagine = "ingredient" * };*/ System.Diagnostics.Debug.WriteLine(">>>Informatii din M_ingredient: " + ingredient.N_nume); // inseram ingredientul in lista din frigider // NU, aici doar cream o lista noua lol: frigider.F_ingrediente = new List<Ingrediente> { m_ingredient }; frigider.F_ingrediente.Add(ingredient); //foreach (Ingrediente ing in frigider.F_ingrediente) //System.Diagnostics.Debug.WriteLine(">>>ing: " + ing.N_nume); // updatam frigiderul return(_database.UpdateAsync(frigider)); }
public bool CheckIngredientInFridgeAsync(Frigidere frigider, int id) { // returneaza true daca mai exista ingredientul in frigider // si false daca nu mai exista int numar_ingrediente = 0; foreach (Ingrediente ing in frigider.F_ingrediente) { if (ing.N_id == id) { numar_ingrediente++; } } if (numar_ingrediente == 0) { return(false); } else { return(true); } }
public RecipesPage(Utilizatori utilizator, Frigidere frigider) { InitializeComponent(); m_utilizator = utilizator; m_frigider = frigider; }
public FridgeCategoriesPage(Utilizatori utilizator, Frigidere frigider) { InitializeComponent(); m_utilizator = utilizator; m_frigider = frigider; }
public async Task <List <Retete> > GetReteteResultsListAsync(Frigidere frigider) { List <Ingrediente> ingrediente_detinute = frigider.F_ingrediente; //System.Diagnostics.Debug.WriteLine(">>>>>>>>>>>>TEST frigider id: " + frigider.F_id); //foreach (Ingrediente i in ingrediente_detinute) //System.Diagnostics.Debug.WriteLine(">>>GRRLISTing: " + i.N_nume); List <Retete> rezultat_retete = new List <Retete> { }; List <Retete> toate_retetele = await _database.Table <Retete>().ToListAsync(); foreach (Retete r in toate_retetele) { System.Diagnostics.Debug.WriteLine(">>>RETETA: " + r.R_nume); foreach (Ingrediente i in r.R_ingrediente) { System.Diagnostics.Debug.WriteLine(">>>>>>INGREDIENT: " + i.N_nume); } } //!toreview! - vezi daca nu poti face functia mai buna / cu sql (poate cu cv select si unions idk) // vom lua fiecare reteta care exista pe rand si ii vom verifica toate ingredientele // cu cele care le detinem in frigider // daca apare macar un ingredient in reteta pe care noi nu il avem, atunci facem break // si trecem la urmatoarea reteta // daca toate ingredientele retetei apar in ingredientele noastre, atunci o adaugam in lista_retete // r_i e ingredientul din reteta // f_i e ingredientul din frigider foreach (Retete r in toate_retetele) { // vom presupune ca reteta curenta are toate ingredientele bool are_ing = true; foreach (Ingrediente r_i in r.R_ingrediente) { // !toreview! pe viitor: pt filtrul de "fara condimente", daca categoria ingredientului din // reteta este cea de condiment atunci vom sari peste pasul de cautare si ing_gasit va fi automat // true // intai, ing_gasit va avea valoarea false, adica ingredientul nu a fost gasit bool ing_gasit = false; foreach (Ingrediente f_i in ingrediente_detinute) { if (r_i == f_i) { // daca ingredientul r_i este egal cu oricare din f_i inseamna ca a fost gasit // deci ing_gasit devine true si iesim din functia de cautare ing_gasit = true; break; } } // repetam aceasta cautare pentru toate ingredientele // decat in cazul in care ing_gasit are valoarea false si la final // ceea ce inseamna ca nu a fost gasit ingredientul in frigider // moment in care are_ing va deveni false, deoarece reteta curenta nu are // toate ingredientele, si vom iesi si din acest for if (ing_gasit == false) { are_ing = false; break; } } // daca reteta are toate ingredientele printre cele din frigider (adica are_ing = true) // o vom adauga in lista retetelor rezultate rezultat_retete.Add(r); } // de-comenteaza rezultat_retete //return rezultat_retete; return(toate_retetele); }
public List <Ingrediente> GetFrigiderIngredientListAsync(Frigidere frigider, string categorie) { // returneaza o lista de obiecte Ingredient // daca string e null, atunci returnam toate ingredientele // daca string nu e null, returnam doar cele din categoria corespunzatoare /* * var m_ingredient = new Ingrediente() * { * N_id = 1, * N_nume = "ingredient", * N_categorie = "ingredient", * N_subcategorie = "ingredient", * N_descriere = "ingredient", * N_link_imagine = "ingredient" * }; * * // inseram ingredientul in lista din frigider * frigider.F_ingrediente = new List<Ingrediente> { m_ingredient }; * * // updatam frigiderul * _database.UpdateAsync(frigider);*/ // apoi vom returna lista de ingrediente salvata in frigider /* * var m_ingrediente = frigider.F_ingrediente; */ /*if (frigider.F_ingrediente != null) * { * foreach (Ingrediente ing in frigider.F_ingrediente) * System.Diagnostics.Debug.WriteLine(">>>GETing: " + ing.N_nume); * }*/ // daca nu avem categorie, returnam toate ingredientele if (categorie == null) { return(frigider.F_ingrediente); } else { // daca avem categorie, returnam doar ingredientele care apartin categoriei respective // cream o lista noua var ingredienete_cat = new List <Ingrediente> { }; // verificam daca fiecare ingredient are categoria dorita foreach (Ingrediente ing in frigider.F_ingrediente) { if (ing.N_categorie == categorie) { // daca da, atunci il adaugam in lista dinainte ingredienete_cat.Add(ing); //System.Diagnostics.Debug.WriteLine(">>>GETing: " + ing.N_nume); } } // returnam lista return(ingredienete_cat); } }