private void ZutatenSpeichern(Rezept rezept, Panel rezeptAbteilungPanel, Rezeptabteilung rezeptAbteilung) { var zutatCtrlList = new List<TextBox>(); var mengeCtrlList = new List<TextBox>(); var einheitCtrlList = new List<DropDownList>(); //Control Listen erstellen foreach (Control control in rezeptAbteilungPanel.Controls) { if (control.ID != null) { if (control.ID.Contains(Helper.REZEPBEARBEITEN_IDENT_EINHEIT)) einheitCtrlList.Add((DropDownList)control); else if (control.ID.Contains(Helper.REZEPBEARBEITEN_IDENT_MENGE)) mengeCtrlList.Add((TextBox)control); else if (control.ID.Contains(Helper.REZEPBEARBEITEN_IDENT_ZUTAT)) zutatCtrlList.Add((TextBox)control); } } //Set RezeptAbteilung for existing Zutaten that have no RezeptAbteilung assigned, yet if(rezeptAbteilung != null && rezeptAbteilung.ID == 0 && zutatCtrlList.Count(d => !d.ID.Contains(Helper.REZEPBEARBEITEN_IDENT_NEU)) > 0) rezept.RezeptZutats.Select(d => { if (d.RezeptabteilungID == null) { d.Rezeptabteilung = rezeptAbteilung; } return d; }).ToList(); //Ggf. neue Zutat einfügen NeueZutatenEinfügen(rezept, zutatCtrlList, mengeCtrlList, einheitCtrlList, rezeptAbteilung); //Zutaten aktualisieren this.BestehendeZutatenAktualisieren(rezept, zutatCtrlList, mengeCtrlList, einheitCtrlList); }
private void RezeptAbteilungenSpeichern(Rezept rezept, rherzog_70515_rzvwContext db) { //split up var rezeptAbteilungPanelExisting = new List<Panel>(); var rezeptAbteilungPanelNew = new List<Panel>(); foreach (Control control in UpdatePanelZutaten.ContentTemplateContainer.Controls) { if (control.ID != null) { if(control.ID.Contains(Helper.REZEPBEARBEITEN_IDENT_REZEPABTEILUNG_PANEL + Helper.REZEPBEARBEITEN_IDENT_NEU)) rezeptAbteilungPanelNew.Add((Panel)control); else if(control.ID.Contains(Helper.REZEPBEARBEITEN_IDENT_REZEPABTEILUNG_PANEL)) rezeptAbteilungPanelExisting.Add((Panel)control); } } //existing Rezeptabteilungen: Save changes in Zutaten and Rezeptabteilung foreach (var rezeptAbteilungPanel in rezeptAbteilungPanelExisting) { var rezeptAbteilung = RezeptabteilungSpeichern(rezept, rezeptAbteilungPanel, db); ZutatenSpeichern(rezept, rezeptAbteilungPanel, rezeptAbteilung); } //for new Rezeptabteilungen: foreach (var rezeptAbteilungPanel in rezeptAbteilungPanelNew) { var rezeptAbteilung = RezeptabteilungSpeichern(rezept, rezeptAbteilungPanel, db); ZutatenSpeichern(rezept, rezeptAbteilungPanel, rezeptAbteilung); } }
private Rezeptabteilung RezeptabteilungSpeichern(Rezept rezept, Panel rezeptAbteilungPanel, rherzog_70515_rzvwContext db) { var rezeptAbteilungID = Helper.FindIdOnDynamicControl(rezeptAbteilungPanel); Rezeptabteilung rezeptAbteilung = null; //Create Rezeptabteilung var rezeptAbteilungTextbox = (TextBox)Helper.FindControl(rezeptAbteilungPanel, Helper.REZEPBEARBEITEN_IDENT_REZEPABTEILUNG + Helper.REZEPBEARBEITEN_IDENT_NEU); if (rezeptAbteilungID == null && rezeptAbteilungTextbox != null && rezeptAbteilungTextbox.Text != String.Empty) { rezeptAbteilung = new Rezeptabteilung { Name = rezeptAbteilungTextbox.Text }; } //Rename existing Rezeptabteilung rezeptAbteilungTextbox = (TextBox)Helper.FindControl(rezeptAbteilungPanel, Helper.REZEPBEARBEITEN_IDENT_REZEPABTEILUNG); if (rezeptAbteilungID != null && rezeptAbteilungTextbox != null) { rezeptAbteilung = db.Rezeptabteilungs.First(d => d.ID == rezeptAbteilungID); rezeptAbteilung.Name = rezeptAbteilungTextbox.Text; } return rezeptAbteilung; }
private void NeueZutatenEinfügen(Rezept rezept, IEnumerable<TextBox> zutatCtrlList, IEnumerable<TextBox> mengeCtrlList, IEnumerable<DropDownList> einheitCtrlList, Rezeptabteilung rezeptAbteilung) { //Neue eingefügt Zutaten ermitteln var zutatCtrlListNew = zutatCtrlList.Where(d => d.ID.Contains(Helper.REZEPBEARBEITEN_IDENT_NEU)).ToList(); var mengeCtrlListNew = mengeCtrlList.Where(d => d.ID.Contains(Helper.REZEPBEARBEITEN_IDENT_NEU)).ToList(); var einheitCtrlListNew = einheitCtrlList.Where(d => d.ID.Contains(Helper.REZEPBEARBEITEN_IDENT_NEU)).ToList(); //wenn eine Eingabe erfolgt ist if (zutatCtrlListNew.Count != 0 && mengeCtrlListNew.Count != 0) { //jede neue Zutat dem Rezept hinzufügen foreach (var zutatCtrlNew in zutatCtrlListNew) { NeueZutatEinfügen(rezept, zutatCtrlNew, einheitCtrlListNew, mengeCtrlListNew, rezeptAbteilung); } } }
private void PreparePageForEditingExistingOrCreatingNewRezept() { using (var db = new rherzog_70515_rzvwContext()) //TODO: Create Property for DB connection. Page Lifecycle events could be helpful { this.SetEinheitAndKategorieDropDowns(db); if (!this.Page.IsPostBack && RezeptIdForEditing != 0) { this.PreparePageForEditing(); } else { Rezept rezept; if (RezeptIdForEditing != 0) { //prepare page for editing rezept = db.Rezepts.First(d => d.ID == RezeptIdForEditing); this.Literal_Überschrift.Text = "Rezept bearbeiten"; this.Button_abbrechen.Visible = true; } else { //prepare for adding new recipe rezept = new Rezept(); this.Literal_Überschrift.Text = "Neues Rezept"; this.Button_abbrechen.Visible = false; this.Button_löschen.Visible = false; } this.DisplayZutatenGroupedByRezeptabteilungen(db, rezept, false); } } }
/// <summary> /// Displays all Zutaten including the Rezeptabteilung for that Rezept /// </summary> /// <param name="db"></param> /// <param name="rezept"></param> /// <param name="setValues"></param> private void DisplayZutatenGroupedByRezeptabteilungen(rherzog_70515_rzvwContext db, Rezept rezept, bool setValues) { var zutatenOhneRezeptAbteilung = rezept.RezeptZutats.Where(d => d.RezeptabteilungID == null).ToList(); var zutatenNachRezeptAbteilung = rezept.RezeptZutats.GroupBy(d => d.Rezeptabteilung).Where(d => d.Key != null).OrderBy(d => d.Key.Name).ToList(); //Zutaten mit Rezeptabteilung anzeigen var zutatenNachRezeptAbteilungList = zutatenNachRezeptAbteilung.ToList(); for (int i = 1; i <= zutatenNachRezeptAbteilungList.Count(); i++) { this.DisplaySingleRezeptabteilung(db, zutatenNachRezeptAbteilungList[i-1].Key.RezeptZutats, setValues, i); } //Zutaten ohne Rezeptabteilung anzeigen this.DisplaySingleRezeptabteilung(db, zutatenOhneRezeptAbteilung, setValues, -1); //Neue Rezeptabteilungen anzeigen for (int i = 1; i <= ViewStateRezeptAbteilungPanelAnzahl; i++) { DisplaySingleRezeptabteilungNeu(i); } }
private void BestehendeZutatenAktualisieren(Rezept rezept, IEnumerable<TextBox> zutatCtrlList, List<TextBox> mengeCtrlList, List<DropDownList> einheitCtrlList) { foreach (var zutatCtrl in zutatCtrlList) { int? idFound = Helper.FindIdOnDynamicControl(zutatCtrl); if (idFound != null) { var zutat = rezept.RezeptZutats.First(d => d.ZutatID == idFound).Zutat; var rezZutat = rezept.RezeptZutats.First(d => d.ZutatID == idFound); //Zutat Name zutat.Name = zutatCtrl.Text; //Zutat Menge var mengeCtrl = this.GetMengeTextbox(idFound, mengeCtrlList); //Bruchzahlen umwandeln if (!String.IsNullOrEmpty(mengeCtrl.Text)) { rezZutat.Menge = mengeCtrl.Text; } else { rezZutat.MengeVon = null; rezZutat.MengeBis = null; } //Zutat Einheit var einheitCtrl = this.GetEinheitDropDownList(idFound, einheitCtrlList); if (einheitCtrl != null) { if (string.IsNullOrEmpty(einheitCtrl.SelectedItem.Value)) { rezZutat.EinheitID = null; } else { rezZutat.EinheitID = Int32.Parse(einheitCtrl.SelectedItem.Value); } } } } }
private static void NeueZutatEinfügen(Rezept rezept, TextBox zutatCtrlNew, IEnumerable<DropDownList> einheitCtrlListNew, IEnumerable<TextBox> mengeCtrlListNew, Rezeptabteilung rezeptAbteilung) { var idNummer = Helper.FindIdOnDynamicNewControl(zutatCtrlNew); //zugeh. Einheit suchen var einheitCtrlNew = einheitCtrlListNew.First(d => d.ID.Contains(""+idNummer)); //zugeh. Menge suchen var mengeCtrlNew = mengeCtrlListNew.First(d => d.ID.Contains(""+idNummer)); if (!string.IsNullOrEmpty(zutatCtrlNew.Text)) { var rezZutat = new RezeptZutat { Menge = mengeCtrlNew.Text, Rezeptabteilung = rezeptAbteilung }; var zutat = new Zutat {Name = zutatCtrlNew.Text}; rezZutat.Zutat = zutat; if(einheitCtrlNew.SelectedIndex != 0) rezZutat.EinheitID = Int32.Parse(einheitCtrlNew.SelectedItem.Value); rezept.RezeptZutats.Add(rezZutat); } }
protected void ButtonSpeichernClick(object sender, EventArgs e) { using (var db = new rherzog_70515_rzvwContext()) { //Rezept bearbeiten Rezept rezept; if (RezeptIdForEditing != 0) { //DB Abfrage rezept = db.Rezepts.FirstOrDefault(d => d.ID == RezeptIdForEditing); } //Neu einfügen else { rezept = new Rezept(); db.Rezepts.Add(rezept); } if(rezept == null) return; //Textboxen rezept.Anleitung = TextBox_Anleitung.Text; rezept.Menge = TextBox_Menge.Text; rezept.Name = TextBox_Rezept.Text; //Bild speichern var bild = (byte[])Session[RezeptBild]; if (bild != null) { rezept.Bild = bild; } Session.Remove(RezeptBild); //Einheit speichern rezept.EinheitID = Int32.Parse(DropDownList_AnzahlEinheit.SelectedItem.Value); //Kategorie speichern rezept.KategorieID = Int32.Parse(DropDownList_Kategorie.SelectedItem.Value); //Rezeptabteilungen speichern this.RezeptAbteilungenSpeichern(rezept, db); db.SaveChanges(); //Page refresh //Nach Neuerfassung Editieren if (RezeptIdForEditing != 0) Response.Redirect(Request.Url.ToString()); else Response.Redirect(this.Request.Url + "?RezeptID=" + rezept.ID); } }
private void SeiteBefüllenRezeptabteilungen(Rezept rezept) { var zutatenNachRezeptAbteilung = rezept.RezeptZutats.GroupBy(d => d.Rezeptabteilung).Where(d => d.Key != null).OrderBy(d => d.Key.Name).ToList(); var zutatenOhneRezeptAbteilung = rezept.RezeptZutats.Where(d => d.RezeptabteilungID == null).ToList(); //Zutaten mit Rezeptabteilung anzeigen var zutatenNachRezeptAbteilungList = zutatenNachRezeptAbteilung.ToList(); for (int i = 1; i <= zutatenNachRezeptAbteilungList.Count(); i++) { this.DisplaySingleRezeptabteilung(zutatenNachRezeptAbteilungList[i - 1].Key.RezeptZutats); } //Zutaten ohne Rezeptabteilung anzeigen this.DisplaySingleRezeptabteilung(zutatenOhneRezeptAbteilung); }