コード例 #1
0
        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 />" });
                }
            }
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        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");
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
        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;
        }
コード例 #6
0
        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);
            }
        }
コード例 #7
0
        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);
                }
            }
        }
コード例 #8
0
        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);
            }
        }
コード例 #9
0
        /// <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);
            }
        }
コード例 #10
0
        /// <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);
            }
        }
コード例 #11
0
        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);
            }
        }
コード例 #12
0
        /// <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);
            }
        }
コード例 #13
0
        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());
        }
コード例 #14
0
        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());
        }
コード例 #15
0
        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);
            }
        }