private void PrintSuchErgebnis(string seachString) { //bestehenden Text löschen //Table_Suchergebnis.Rows.Clear(); using (var db = new rherzog_70515_rzvwContext()) { //Rezeptnamen und Zutaten durchsuchen var rezepte = db.Rezepts.Where(d => d.RezeptZutats.Where(i => i.Zutat.Name.Contains(seachString)).Count() != 0 || d.Name.Contains(seachString)) .ToList(); //GUI Darstellung //nichts gefunden if (rezepte.Count == 0) { Literal lit = new Literal {Text = Helper.DivPrependAppend("nichts gefunden...")}; Panel_Suchergebnis.Controls.Add(lit); return; } //darstellung ergebnis foreach (var rezept in rezepte) { //rezept Name LinkButton linkButton = new LinkButton(); linkButton.PostBackUrl = "RezeptDetail.aspx?RezeptID=" + rezept.ID; linkButton.CssClass = "RezeptSuche_Rezept"; linkButton.Text = rezept.Name; Panel_Suchergebnis.Controls.Add(linkButton); Panel_Suchergebnis.Controls.Add(new Literal { Text = " " }); //Zutaten Liste var sb = new StringBuilder(); for (int i = 0; i < rezept.RezeptZutats.Count; i++) { var zutats = (List<RezeptZutat>)rezept.RezeptZutats; sb.Append(zutats[i].Zutat.Name); if (i != rezept.RezeptZutats.Count() - 1) sb.Append(", "); } Panel_Suchergebnis.Controls.Add(new Literal { Text = sb.ToString() }); //Zeilenumbruch Panel_Suchergebnis.Controls.Add(new Literal { Text = "<br />" }); } } }
private void SeiteBefüllen() { var rezeptID = Int32.Parse(Request.Params["RezeptID"]); SetEditLink(rezeptID); using (var db = new rherzog_70515_rzvwContext()) { //DB Abfrage var rezept = db.Rezepts.Where(d => d.ID == rezeptID).FirstOrDefault(); //Rezept und Kategorie Literal_Rezept.Text = rezept.Name; Literal_Kategorie.Text = rezept.Kategorie.Name; //Zutatüberschrift var sb = new StringBuilder(); sb.Append("Zutaten für "); sb.Append(rezept.Menge); sb.Append(" "); sb.Append(rezept.Einheit.Bezeichnung); sb.Append(":"); sb.Append("</br>"); Literal_Zutatenüberschrift.Text = sb.ToString(); //Zutaten SeiteBefüllenRezeptabteilungen(rezept); //Bild var bytes = rezept.Bild; if (bytes != null) { Helper.SetImageFromByteArray(Image_Rezept, bytes); } //Anleitung Literal_Anleitung.Text = rezept.Anleitung; } }
protected void ButtonLöschenClick(object sender, EventArgs e) { if (RezeptIdForEditing == 0) return; using(var db = new rherzog_70515_rzvwContext()) { var rezept = db.Rezepts.Where(d => d.ID == rezeptIdForEditing).First(); db.Rezepts.Remove(rezept); db.SaveChanges(); } Response.Redirect("../RezeptSuche.aspx"); }
private void SetEinheitAndKategorieDropDowns(rherzog_70515_rzvwContext db) { //Einheiten Liste befüllen var listItem = new ListItem(string.Empty, string.Empty); this.DropDownList_AnzahlEinheit.Items.Add(listItem); foreach (var item in db.Einheits) { listItem = new ListItem(item.Bezeichnung, item.ID.ToString(CultureInfo.InvariantCulture)); this.DropDownList_AnzahlEinheit.Items.Add(listItem); } //Kategorie Liste befüllen listItem = new ListItem(string.Empty, string.Empty); this.DropDownList_Kategorie.Items.Add(listItem); foreach (var item in db.Kategories) { listItem = new ListItem(item.Name, item.ID.ToString(CultureInfo.InvariantCulture)); this.DropDownList_Kategorie.Items.Add(listItem); } }
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 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 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); } } }
private void PreparePageForEditing() { using (var db = new rherzog_70515_rzvwContext()) { //DB Abfrage var rezept = db.Rezepts.FirstOrDefault(d => d.ID == RezeptIdForEditing); if(rezept == null) return; //rezept TextBox_Rezept.Text = rezept.Name; //Menge und Einheit TextBox_Menge.Text = rezept.Menge.Trim(); DropDownList_AnzahlEinheit.SelectedIndex = DropDownList_AnzahlEinheit.Items.IndexOf(DropDownList_AnzahlEinheit.Items.FindByText(rezept.Einheit.Bezeichnung)); //Kategorie DropDownList_Kategorie.SelectedIndex = DropDownList_Kategorie.Items.IndexOf(DropDownList_Kategorie.Items.FindByText(rezept.Kategorie.Name)); //Anleitung TextBox_Anleitung.Text = rezept.Anleitung; //Bild var bytes = rezept.Bild; if (bytes != null) { Helper.SetImageFromByteArray(Image_Rezept, bytes); } //Zutaten DisplayZutatenGroupedByRezeptabteilungen(db, rezept, true); } }
/// <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); } }
/// <summary> /// Displays the Zutaten including the rezeptateilung textbox for the given rezeptZutatenList all RezeptZutaten must be of the same Rezeptabteilung /// </summary> /// <param name="db"></param> /// <param name="rezeptZutatenList"></param> /// <param name="rezepAbteilungNumber">Number of the displayed rezeptpalen - needed for numbering the panels</param> /// <param name="setValues"></param> private void DisplaySingleRezeptabteilung(rherzog_70515_rzvwContext db, ICollection<RezeptZutat> rezeptZutatenList, bool setValues, int rezeptAbteilungNr) { if (rezeptZutatenList.GroupBy(d=>d.Rezeptabteilung).Count() > 1) new ArgumentException("The parameter rezeptZutatenList contains more than one than one RezeptAbteilung. You must provide a list of RezeptZutaten that all have the same RezeptAbteilung or all have no RezeptAbteilung at all"); if (rezeptZutatenList.Count != 0) { var rezeptZutatFirst = rezeptZutatenList.First(); //Panel erstellen. Ein Panel je Rezeptabteilung. var rezeptAbteilungPanel = CreateAndAddRezeptAbteilungPanel(rezeptZutatFirst, null); //Rezeptabteilung anzeigen (leer, wenn keine Rezeptabteilung zugewiesen ist) this.DisplayRezeptabteilungTextbox(rezeptZutatFirst.Rezeptabteilung, rezeptAbteilungPanel, null, rezeptAbteilungNr); //Zutaten anzeigen DisplayExistingZutatenForRezeptabteilung(db, rezeptZutatenList, rezeptAbteilungPanel, setValues); //Neue Zutatenliste anzeigen this.DisplayNeueZutatentenListe(rezeptAbteilungPanel, false); } }
private void DisplayNeueZutatenListeEingaben(Panel rezeptAbteilungPanel, int zutatenAnzahl) { using (var db = new rherzog_70515_rzvwContext()) { //Name var textbox = new TextBox { ID = Helper.REZEPBEARBEITEN_IDENT_ZUTAT + Helper.REZEPBEARBEITEN_IDENT_NEU + rezeptAbteilungPanel.ID + zutatenAnzahl, Text = string.Empty, Width = RezeptNameFeldBreite }; rezeptAbteilungPanel.Controls.Add(textbox); textbox.Focus(); //Menge textbox = new TextBox { ID = Helper.REZEPBEARBEITEN_IDENT_MENGE + Helper.REZEPBEARBEITEN_IDENT_NEU + rezeptAbteilungPanel.ID + zutatenAnzahl, Text = string.Empty, Width = RezeptMengeFeldBreite }; rezeptAbteilungPanel.Controls.Add(textbox); //Einheit var dropdownlist = new DropDownList { ID = Helper.REZEPBEARBEITEN_IDENT_EINHEIT + Helper.REZEPBEARBEITEN_IDENT_NEU + rezeptAbteilungPanel.ID + zutatenAnzahl, Width = RezeptEinheitFeldBreite }; //leerer Eintrag var listItem = new ListItem(string.Empty, string.Empty); dropdownlist.Items.Add(listItem); foreach (var item in db.Einheits) { listItem = new ListItem(item.Bezeichnung, item.ID.ToString(CultureInfo.InvariantCulture)); dropdownlist.Items.Add(listItem); } rezeptAbteilungPanel.Controls.Add(dropdownlist); //Zeilenumbruch var literalPageBreak = new Literal {Text = "<br/>"}; rezeptAbteilungPanel.Controls.Add(literalPageBreak); } }
/// <summary> /// Displays the existing Zutaten (Zutaten that are loaded from the database) /// </summary> /// <param name="db"></param> /// <param name="rezeptZutatenList"></param> /// <param name="rezeptAbteilungPanel">The panel to which the Zutaten are added to</param> /// <param name="setValues">if true the textboxes, dropdowns etc. have their value set - used for editing an existing recipe</param> private void DisplayExistingZutatenForRezeptabteilung(rherzog_70515_rzvwContext db, IEnumerable<RezeptZutat> rezeptZutatenList, Panel rezeptAbteilungPanel, bool setValues) { foreach (var rZut in rezeptZutatenList) { //Name var textbox = new TextBox {ID = Helper.REZEPBEARBEITEN_IDENT_ZUTAT + rZut.ZutatID}; if (setValues) textbox.Text = rZut.Zutat.Name; textbox.Width = RezeptNameFeldBreite; rezeptAbteilungPanel.Controls.Add(textbox); //Menge textbox = new TextBox {ID = Helper.REZEPBEARBEITEN_IDENT_MENGE + rZut.ZutatID}; if (setValues && rZut.Menge != null) { textbox.Text = rZut.Menge; } textbox.Width = RezeptMengeFeldBreite; rezeptAbteilungPanel.Controls.Add(textbox); //Einheit var dropdownlist = new DropDownList {ID = Helper.REZEPBEARBEITEN_IDENT_EINHEIT + rZut.ZutatID}; //leerer Eintrag var listItem = new ListItem(string.Empty, string.Empty); dropdownlist.Items.Add(listItem); foreach (var item in db.Einheits.OrderBy(d => d.Bezeichnung)) { listItem = new ListItem(item.Bezeichnung, item.ID.ToString(CultureInfo.InvariantCulture)); dropdownlist.Items.Add(listItem); } rezeptAbteilungPanel.Controls.Add(dropdownlist); if (setValues && rZut.Einheit != null) { dropdownlist.SelectedIndex = dropdownlist.Items.IndexOf(dropdownlist.Items.FindByText(rZut.Einheit.Bezeichnung)); } //Lösch Knopf var deleteButton = new Button {Text = "löschen", ID = rZut.ID.ToString(CultureInfo.InvariantCulture)}; deleteButton.Click += this.DeleteButtonClick; rezeptAbteilungPanel.Controls.Add(deleteButton); Helper.InsertLineBreak(rezeptAbteilungPanel); } }
void DeleteButtonClick(object sender, EventArgs e) { var button = (Button)sender; var rezZutatId = Int32.Parse(button.ID); using (var db = new rherzog_70515_rzvwContext()) { db.RezeptZutats.Remove(db.RezeptZutats.First(d => d.ID == rezZutatId)); db.SaveChanges(); } //Page refresh Response.Redirect(Request.Url.ToString()); }
protected void ImageButtonRezeptAbteilungDeleteClick(object sender, EventArgs e) { var imageButton = (ImageButton)sender; var rezeptAbteilungID = Int32.Parse(Helper.IsolateRezepAbteilungIDFromRezeptabteilungDeleteString(imageButton.ID)); using(var db = new rherzog_70515_rzvwContext()) { var rezeptAbteilung = db.Rezeptabteilungs.Where(d => d.ID == rezeptAbteilungID).First(); db.Rezeptabteilungs.Remove(rezeptAbteilung); db.SaveChanges(); } //Page refresh Response.Redirect(Request.Url.ToString()); }
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); } }