Пример #1
0
        // GET: Admin/Netzbetreibers/Details/5
        public ActionResult Details(int?id, int?rpId, string returnURL)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Netzbetreiber netzbetreiber = db.Netzbetreiber.GetByID(id);

            if (netzbetreiber == null)
            {
                return(HttpNotFound());
            }
            //Wenn keine RegPId angegeben wurde, liefere die zum aktuellen Zeitpunkt aktuelle RegP, sonst die angegebene RegP.
            Regulierungsperiode rp;

            if (rpId == null)
            {
                //Hole aktuelle RegP, falls keine rpId angegeben wurde
                rp = db.Regulierungsperioden.Get(
                    o => o.StartDate <= DateTime.Now &&
                    o.EndDate >= DateTime.Now).FirstOrDefault();
            }
            else
            {
                //Hole angegebene RP
                rp = db.Regulierungsperioden.GetByID(rpId);
            }
            if (rp != null)
            {
                //Es wurde eine RP gefunden
                EOGViewModel vm = new EOGViewModel()
                {
                    RegPNumber    = rp.RegPId,
                    RegPStart     = rp.StartDate,
                    RegPEnd       = rp.EndDate,
                    RegPMax       = db.Regulierungsperioden.dbSet.Max(r => r.RegPId),
                    Netzbetreiber = new List <Netzbetreiber>()
                };
                //Nur die Netze übernehmen, die in der aktuellen RP vorhanden sind
                netzbetreiber.Netze = (from n in netzbetreiber.Netze
                                       where n.RegPId == rp.RegPId
                                       select n).ToList();
                vm.Netzbetreiber.Add(netzbetreiber);
                ViewBag.ReturnURL = returnURL;
                return(View(vm));
            }
            //Es wurde keine RP gefunden
            return(HttpNotFound());
        }
Пример #2
0
        // GET: EOG
        public ActionResult Index(int?id)
        {
            Regulierungsperiode rp;

            if (id == null)
            {
                //Hole aktuelle RegP
                rp = db.Regulierungsperioden.Get(
                    o => o.StartDate <= DateTime.Now &&
                    o.EndDate >= DateTime.Now).FirstOrDefault();
            }
            else
            {
                //Hole angegebene RP
                rp = db.Regulierungsperioden.GetByID(id);
            }
            //Es wurde eine RP gefunden
            if (rp != null)
            {
                EOGViewModel vm = new EOGViewModel()
                {
                    RegPNumber    = rp.RegPId,
                    RegPStart     = rp.StartDate,
                    RegPEnd       = rp.EndDate,
                    RegPMax       = db.Regulierungsperioden.dbSet.Max(r => r.RegPId),
                    Netzbetreiber = new List <Netzbetreiber>()
                };
                //Das automatische Nachladen von Daten wird deaktiviert
                db.Users.context.Configuration.LazyLoadingEnabled = false;

                ApplicationUser user = db.Users.GetByID(User.Identity.GetUserId());

                //Lade die verknüpften und bestätigten NBs des Nutzers sowie alle Netze, EOGs etc.
                db.Users.context.Entry(user)
                .Collection(u => u.NetzbetreiberRelationships)      //integriere die Beziehungen des Nutzers
                .Query()                                            //filtere die Beziehungen
                .Where(rs => rs.Confirmed == true)
                .Include(rs => rs.Netzbetreiber.Netze               //integriere die Netzbetreiber und Netze der einzelnen Beziehungen
                         .Select(n => n.EOGs))                      //integriere alle EOGs der Netze
                .Load();                                            //lade die Daten aus der DB

                //Nur falls der Nutzer bestätigte NBs hat
                if (user.NetzbetreiberRelationships != null)
                {
                    //Filtere alle Netzbetreiber nach vorhandenen Netzen in der Periode
                    List <Netzbetreiber> nbs = (from rs in user.NetzbetreiberRelationships
                                                select rs.Netzbetreiber).ToList();
                    foreach (Netzbetreiber nb in nbs)
                    {
                        List <Netz> netze = (from n in nb.Netze
                                             where n.RegPId == rp.RegPId
                                             select n).ToList();

                        if (netze.Count == 0)
                        {
                            continue;
                        }
                        nb.Netze = netze;
                        vm.Netzbetreiber.Add(nb);
                    }
                    //Das automatische Nachladen wird wieder aktiviert
                    db.Users.context.Configuration.LazyLoadingEnabled = true;
                    return(View(vm));
                }
                //Das automatische Nachladen wird wieder aktiviert
                db.Users.context.Configuration.LazyLoadingEnabled = true;
                //Hier ein Redirect zur Beantragung ohne bestätigten NB
                return(View(vm));
            }
            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
        }