private Table ReadOrNewTable(int?id, ReadOrNewOperation op)
        {
            Table table;

            switch (op)
            {
            case ReadOrNewOperation.Read:
                table = db.Tables.Find(id);
                if (table == null)
                {
                    return(null);
                }

                //szólni kell az Entity Frameworknek, hogy
                //az asztalhoz töltse be a termet is, ahova rögzítettük.
                db.Entry(table)
                .Reference(x => x.Location)
                .Load();

                break;

            case ReadOrNewOperation.New:
                table = new Table();
                break;

            default:
                throw new Exception($"Erre a műveletre nem vagyunk felkészítve: {op}");
            }

            //A lenyílómező adatainak kitöltése
            // ?: feltételes null operátor,
            //      ha eddig a kifejezés értéke null, akkor megáll és a végeredmény null
            //      ha pedig nem null, akkor folytatódik a kiértékelés, és megy tovább

            //ugyanaz, mint ez:
            //int? eredmeny;
            //if (table.Location == null)
            //{
            //    eredmeny = null;
            //}
            //else
            //{
            //    eredmeny = table.Location.Id;
            //}

            // ??: null operátor, ha a bal oldalán szereplő érték null, akkor az eredmény a jobb oldalán szereplő érték
            //ugyanaz, mint ez
            //if (eredmeny == null)
            //{
            //    eredmeny = 0;
            //}

            table.LocationId = table.Location?.Id ?? 0;
            LoadAssignableLocations(table);

            return(table);
        }
Example #2
0
        private Table ReadOrNewTable(int?id, ReadOrNewOperation op)
        {
            Table table;

            switch (op)
            {
            case ReadOrNewOperation.Read:
                table = db.Tables.Find(id);
                if (table == null)
                {
                    return(null);
                }

                //Szolni kell az EF-nek, hogy az asztalhoz toltse be a termet is.
                db.Entry(table)
                .Reference(x => x.Location)
                .Load();
                break;

            case ReadOrNewOperation.New:
                table = new Table();
                break;

            default:
                throw new Exception($"Erre a muveletre nem vagyunk felkeszulve: {op}");
            }

            //A lenyilo mezo adatainak kitoltese
            //?: felteteles null operator:
            //      ha eddig a kifejezes ertekes null, akkor megall, es a vegeredmeny null
            //      ha pedig nem null, akkor folytatodik a kiertekeles, es megy tovabb

            //ugyanaz, mint ez:
            //int? eredmeny;
            //if (table.Location == null)
            //{
            //    eredmeny = null;
            //}
            //else
            //{
            //    eredmeny = table.Location.Id;
            //}

            //??: null operator: ha a bal oldalan szereplo ertek null, akkor az ererdmeny a jobb oldalan szereplo ertek
            //ugyanaz, mint ez:

            //if (eredmeny == null)
            //{
            //    eredmeny = 0;
            //}

            table.LocationId = table.Location?.Id ?? 0;
            LoadAssignableLocations(table);

            return(table);
        }
Example #3
0
        /// <summary>
        /// Ez a függvény felelős a model betöltéséért minden megjelenítő (get) action esetén
        /// </summary>
        /// <param name="id">MenuItem azonosító, lehet null is.</param>
        /// <param name="op">Művelet: Read vagy New</param>
        /// <returns></returns>
        private MenuItem ReadOrNewMenuItem(int?id, ReadOrNewOperation op)
        {
            MenuItem menuItem;

            switch (op)                   //Az op változó értékétől függ, hogy merre megyünk tovább
            {
            case ReadOrNewOperation.Read: //ha Read az érték akkor erre
                //1. Adatok betöltése az Adatbázisból (Model)
                /////////////////////////////////////////////
                menuItem = db.MenuItems.Find(id);

                if (menuItem == null)
                {
                    //return menuItem; //ez ugyanaz:
                    return(null);
                }

                //Ahhoz, hogy legyen, be kell töltenünk a menuItem Category property-jét,
                //amit magától az EF (EntityFramework) nem tölt be
                db.Entry(menuItem)
                .Reference(x => x.Category)
                .Load();
                break;

            case ReadOrNewOperation.New:     //ha new az érték akkor erre
                //1. Adat (model) példányosítása "röptében"
                menuItem = new MenuItem();
                break;

            default:     //Ha egyik sem igaz a fentiek közül akkor van ez
                throw new Exception($"Erre nem készültünk fel: {op}");
            }


            //2. Megjelenítési adatok feltöltése (ViewModel)
            //hogy be tudjuk állítani a lenyílót, megadjuk az aktuális Category azonosítóját

            if (menuItem.Category != null)
            {
                menuItem.CategoryId = menuItem.Category.Id;
            }
            //leküldjük a Categories tábla tartalmát (db.Categories.ToList())
            //megadjuk, hogy melyik mező azonosítja a sort, és adja azt az értéket, ami a végeredmény (Id),
            //megadjuk, hogy a lenyíló egyes soraiba, melyik property értékei kerüljenek (Name)
            LoadAssignableCategories(menuItem);

            return(menuItem);
        }
        /// <summary>
        /// Ez a fuggveny felelos a model betolteseert minden megjelenito (get) action eseten
        /// </summary>
        /// <param name="id">Menuitem azonosito, lehet null is.</param>
        /// <param name="op">Muvelet: Read vagy New</param>
        /// <returns></returns>
        private MenuItem ReadOrNewMenuItem(int?id, ReadOrNewOperation op)
        {
            MenuItem menuItem;

            switch (op)
            {
            case ReadOrNewOperation.Read:
                //1. Adatok betoltese az adatbazisbol (Model)
                menuItem = db.MenuItems.Find(id);

                if (menuItem == null)
                {
                    return(null);
                }

                //Ahhoz, hogy legyen, be kell toltenunk a menuItem Category property-jet,
                //amit magatol az EF nem tolt be
                db.Entry(menuItem)
                .Reference(x => x.Category)
                .Load();
                break;

            case ReadOrNewOperation.New:
                //1. Adat (model) peldanyositasa
                menuItem = new MenuItem();
                break;

            default:
                throw new Exception($"Erre nem keszultnk fel: {op}");
            }

            //2. Megjelentesi adatok feltoltese (ViewModel)
            //Hogy be tudjuk allitani a lenyilot, ezert megadjuk az aktualis Category azonositojat
            if (menuItem.Category != null)
            {
                menuItem.CategoryId = menuItem.Category.Id;
            }

            //Lekuldjuk a Categories adatbazistabla tartalmat (db.Categories.ToList()),
            //megadjuk, hogy melyik mezo azonositja a sort, es adja azt az erteket, ami a a vegeredmeny (Id)
            //megadjuk, hogy a lenyilo egyes soraiba melyik property (oszlop) ertekei keruljenek. (Name)
            LoadAssignableCategories(menuItem);

            return(menuItem);
        }
        /// <summary>
        /// Ez a függvény felelős a model betöltéséért minden megjelenítő (get) action esetén
        /// </summary>
        /// <param name="id">MenuItem azonosító, lehet null érték is</param>
        /// <param name="op">Művelet: Read or New</param>
        /// <returns></returns>
        private MenuItem ReadOrNewMenuItem(int?id, ReadOrNewOperation op)
        {
            MenuItem menuItem;

            switch (op)
            {
            case ReadOrNewOperation.Read:
                // 1. Adatok betöltése az adatbázisból (Model)
                menuItem = db.MenuItems.Find(id);
                if (menuItem == null)
                {
                    // return menuItem;
                    return(null);
                }
                //return db.MenuItems.Find(id);
                // Be kell töltenünk a menuItem Category property-jét, amit az Entity Framework magától nem tölt be
                db.Entry(menuItem)
                .Reference(x => x.Category)
                .Load();
                break;

            case ReadOrNewOperation.New:
                // 1. Adat (model) példányosítása
                menuItem = new MenuItem();
                break;

            default:
                throw new Exception($"Erre nem készültünk fel: {op}");
            }

            // 2. Megjelenítési adatok feltöltése (ViewModel)
            // hogy be tudjuk állítani a lenyílót, megadjuk az aktuális kategória azonosítóját
            if (menuItem.Category != null)
            {
                menuItem.CategoryId = menuItem.Category.Id;
            }
            // letöltjük a Categories tábla tartalmát (db.Categories.Tolist())
            // megadjuk, hogy melyik mező azonosítja a sort, és adja azt az értéket, ami a végeredmény (Id)
            // megadjuk, hogy a lenyíló egyes soraiba melyik property értékei kerüljenek (Name)
            LoadAssignableCategories(menuItem);
            // menuItem.AssignableCategories = new SelectList(db.Categories.OrderBy(x=>x.Name).ToList(), "Id", "Name");

            return(menuItem);
        }