예제 #1
0
        /// <summary>
        /// Beendet den Bearbeitungsvorgang einer Zone.
        /// </summary>
        /// <param name="viewmodel">Enthalt alle Daten</param>
        /// <returns>Eine Seite mit einer Übersicht über aller Standorte</returns>
        public IActionResult EndEdit(EditZoneViewModel viewmodel)
        {
            // Die Liste der Standorte wird aus dem Cache geladen.
            if (!cache.TryGetValue(CacheKeys.LOCATION, out locations))
            {
                locations = new List <ILocation>();
            }

            // Ermitteln des richtigen Standorts.
            foreach (ILocation location in locations)
            {
                if (viewmodel.id.ToString().Equals(location.id))
                {
                    // Ermittelt die richtige Zone.
                    foreach (Zone z in location.zones)
                    {
                        if (viewmodel.site == z.site)
                        {
                            z.maxPower = viewmodel.zone.maxPower;
                            // Validiert das Model
                            if (!TryValidateModel(z))
                            {
                                RedirectToAction("EditZone", viewmodel.id, viewmodel.site);
                            }
                        }
                    }
                    break;
                }
            }

            return(RedirectToAction("Index"));
        }
예제 #2
0
        public IActionResult EndEditZoneHistory(EditZoneViewModel viewmodel)
        {
            ExecutedScenario scenario = null;

            if (!cache.TryGetValue("ChangeInfrastrukture", out scenario))
            {
                return(RedirectToAction("Index"));
            }


            // Ermittelt die richtige Zone.
            foreach (Zone z in scenario.location.zones)
            {
                if (viewmodel.site == z.site)
                {
                    z.maxPower = viewmodel.zone.maxPower;
                    // Validiert das Model
                    if (!TryValidateModel(z))
                    {
                        RedirectToAction("EditZoneHistory", viewmodel.id, viewmodel.site);
                    }
                    break;
                }
            }
            return(View("EditLocationHistory", scenario.location));
        }
예제 #3
0
        public IActionResult EndEditZoneScenario(EditZoneViewModel viewmodel)
        {
            Scenario scenario = null;

            if (!cache.TryGetValue("ScenarioEdit", out scenario))
            {
                scenario = new Scenario();
            }


            // Ermittelt die richtige Zone.
            foreach (Zone z in scenario.location.zones)
            {
                if (viewmodel.site == z.site)
                {
                    z.maxPower = viewmodel.zone.maxPower;
                    // Validiert das Model
                    if (!TryValidateModel(z))
                    {
                        RedirectToAction("EditZoneScenario", viewmodel.id, viewmodel.site);
                    }
                    break;
                }
            }
            return(RedirectToAction("EditLocationScenario"));
        }
예제 #4
0
        public IActionResult StartEditStationHistory(char site, int idStation)
        {
            ExecutedScenario scenario = null;

            if (!cache.TryGetValue("ChangeInfrastrukture", out scenario))
            {
                return(RedirectToAction("Index"));
            }

            EditZoneViewModel viewmodel = new EditZoneViewModel();

            viewmodel.name = scenario.location.name;

            // Ermitteln der richtigen Station
            foreach (Zone z in scenario.location.zones)
            {
                if (z.site == site)
                {
                    // Befüllen des ViewModels mit den bereits bekannten Werten.
                    viewmodel.zone = z;
                    viewmodel.site = site;

                    // Ermitteln der richtigen Station
                    foreach (Station s in z.stations)
                    {
                        if (s.id == idStation)
                        {
                            // Befüllen des ViewModels mit den bereits bekannten Werten.
                            viewmodel.station = s;

                            viewmodel.ccs   = 0;
                            viewmodel.type2 = 0;
                            foreach (Plug p in s.plugs)
                            {
                                if (p.type == PlugType.CCS)
                                {
                                    viewmodel.ccsPower = p.power;
                                    viewmodel.ccs++;
                                }
                                else
                                {
                                    viewmodel.type2++;
                                    viewmodel.type2Power = p.power;
                                }
                            }
                            // Entfernen der Station aus der Zone um doppelungen zu vermeiden.
                            viewmodel.zone.deleteStation(s);
                            return(View("EditZoneHistory", viewmodel));
                        }
                    }
                    break;
                }
            }

            // Station nicht gefunden.
            return(RedirectToAction("Index"));
        }
예제 #5
0
        /// <summary>
        /// Fügt einem Standort eine neue Zone hinzu.
        /// </summary>
        /// <param name="id">Id des Standorts, welchem eine neue Zone hinzugefügt werden.</param>
        /// <returns>Eine Seite auf der man die Zone bearbeiten kann.</returns>
        public IActionResult CreateZone(string id)
        {
            Zone zone      = new Zone();
            char site      = 'A';
            bool siteValid = false;

            // Die Liste der Standorte wird aus dem Cache geladen.
            if (!cache.TryGetValue(CacheKeys.LOCATION, out locations))
            {
                locations = new List <ILocation>();
            }

            EditZoneViewModel viewmodel = new EditZoneViewModel();
            // Ermittelt den Standort richtigen Standort mithilfe der Id.
            ILocation location = null;

            foreach (ILocation l in locations)
            {
                if (l.id.Equals(id.ToString()))
                {
                    location = l;
                    break;
                }
            }

            // Ermittelt einen Validen site char und setzen.
            while (!siteValid)
            {
                siteValid = true;
                foreach (Zone z in location.zones)
                {
                    if (z.site == site)
                    {
                        siteValid = false;
                        site++;
                        break;
                    }
                }
            }
            zone.site = site;
            // Initialisieren der Zone und hinzufügen zum Standort.
            zone.stations = new List <Station>();
            location.addZone(zone);

            // Befüllen des Viemodels für die Seite.
            viewmodel.name    = location.name;
            viewmodel.id      = id;
            viewmodel.site    = site;
            viewmodel.zone    = zone;
            viewmodel.station = new Station();

            return(View("EditZone", viewmodel));
        }
예제 #6
0
        /// <summary>
        /// Löschen der Station.
        /// </summary>
        /// <param name="_id">Id der Location</param>
        /// <param name="_site">Site der Zone</param>
        /// <param name="idStation">id der Station, welche zu Löschen ist.</param>
        /// <returns>Seite, auf welcher man die Zone bearbeiten kann.</returns>
        public IActionResult DeleteStation(string _id, char _site, int idStation)
        {
            // Die Liste der Standorte wird aus dem Cache geladen.
            if (!cache.TryGetValue(CacheKeys.LOCATION, out locations))
            {
                locations = new List <ILocation>();
            }

            // Ermitteln des richtigen Standorts.
            EditZoneViewModel viewmodel = new EditZoneViewModel();

            foreach (ILocation l in locations)
            {
                if (l.id.Equals(_id))
                {
                    // Befüllen des ViewModels mit den bereits bekannten Werten.
                    viewmodel.name = l.name;
                    viewmodel.id   = _id;

                    // Ermittelt die richtige Zone.
                    foreach (Zone z in l.zones)
                    {
                        if (z.site == _site)
                        {
                            // Befüllen des ViewModels mit den bereits bekannten Werten.
                            viewmodel.site = z.site;
                            viewmodel.zone = z;

                            // Ermitteln der richtigen Station
                            foreach (Station s in z.stations)
                            {
                                if (s.id == idStation)
                                {
                                    // entfernen der Station.
                                    z.deleteStation(s);

                                    viewmodel.station = new Station();
                                    return(View("EditZone", viewmodel));
                                }
                            }
                            break;
                        }
                    }
                    break;
                }
            }
            // Station nicht gefunden.
            return(RedirectToAction("Index"));
        }
예제 #7
0
        public IActionResult DeleteStationHistory(char site, int idStation)
        {
            ExecutedScenario scenario = null;

            if (!cache.TryGetValue("ChangeInfrastrukture", out scenario))
            {
                return(RedirectToAction("Index"));
            }

            EditZoneViewModel viewmodel = new EditZoneViewModel();

            viewmodel.name = scenario.location.name;

            // Ermitteln der richtigen Station
            foreach (Zone z in scenario.location.zones)
            {
                if (z.site == site)
                {
                    // Befüllen des ViewModels mit den bereits bekannten Werten.
                    viewmodel.zone = z;
                    viewmodel.site = site;

                    // Ermitteln der richtigen Station
                    foreach (Station s in z.stations)
                    {
                        if (s.id == idStation)
                        {
                            viewmodel.station = new Station();
                            // Entfernen der Station aus der Zone
                            viewmodel.zone.deleteStation(s);
                            return(View("EditZoneHistory", viewmodel));
                        }
                    }
                    break;
                }
            }

            // Station nicht gefunden.
            return(RedirectToAction("EditLocationHistory"));
        }
예제 #8
0
        public IActionResult EditZone(string id, char site)
        {
            // Die Liste der Standorte wird aus dem Cache geladen.
            if (!cache.TryGetValue(CacheKeys.LOCATION, out locations))
            {
                locations = new List <ILocation>();
            }

            // Ermitteln der Location.
            EditZoneViewModel viewmodel;

            foreach (ILocation l in locations)
            {
                if (l.id.Equals(id.ToString()))
                {
                    // Vorbereiten des Viewmodels, für die Seite.
                    viewmodel         = new EditZoneViewModel();
                    viewmodel.name    = l.name;
                    viewmodel.id      = id;
                    viewmodel.station = new Station();

                    // Ermitteln der richtigen Zone, befüllen des VieModels und anzeigen der Seite.
                    foreach (Zone z in l.zones)
                    {
                        if (z.site == site)
                        {
                            viewmodel.zone = z;
                            viewmodel.site = site;
                            return(View(viewmodel));
                        }
                    }
                    break;
                }
            }
            // Sollte die Zone nicht gefunden werden wird auf die Index Methode weitergeleitet.
            return(RedirectToAction("Index"));
        }
예제 #9
0
        public IActionResult EditStationHistory(EditZoneViewModel viewmodel)
        {
            ExecutedScenario scenario = null;

            if (!cache.TryGetValue("ChangeInfrastrukture", out scenario))
            {
                return(RedirectToAction("Index"));
            }

            Station station = viewmodel.station;

            // Erzeugt die Stecker der Station.
            station.plugs = new List <Plug>();
            for (int i = 0; i < viewmodel.ccs; i++)
            {
                station.addPlug(new Plug()
                {
                    power = viewmodel.ccsPower, type = PlugType.CCS
                });
            }
            for (int i = 0; i < viewmodel.type2; i++)
            {
                station.addPlug(new Plug()
                {
                    power = viewmodel.type2Power, type = PlugType.TYPE2
                });
            }

            viewmodel.name = scenario.location.name;
            foreach (Zone z in scenario.location.zones)
            {
                if (viewmodel.site == z.site)
                {
                    viewmodel.zone = z;
                    break;
                }
            }

            bool idValid = false;
            int  id      = 0;

            while (!idValid)
            {
                idValid = true;
                foreach (Station s in viewmodel.zone.stations)
                {
                    if (id == s.id)
                    {
                        idValid = false;
                        id++;
                        break;
                    }
                }
            }
            station.id = id;

            //Validiert die Station.
            if (TryValidateModel(station))
            {
                // Zurücksetzten des viewmodels und hinzufügen der Station.
                viewmodel.zone.addStation(station);
                viewmodel.station          = new Station();
                viewmodel.ccs              = 0;
                viewmodel.type2            = 0;
                viewmodel.ccsPower         = 0;
                viewmodel.type2Power       = 0;
                station.maxParallelUseable = Math.Min(station.maxParallelUseable, station.plugs.Count);
                return(View("EditZoneHistory", viewmodel));
            }
            return(View("EditZoneHistory", viewmodel));
        }
예제 #10
0
        /// <summary>
        /// Beginnt das Bearbeiten einer Station.
        /// </summary>
        /// <param name="id">Id der Location</param>
        /// <param name="site">Site der Zone</param>
        /// <param name="idStation">Id der zu bearbeitenden Station.</param>
        /// <returns>Lädt die Daten aus der Station in das Create Formular.</returns>
        public IActionResult StartEditStation(string id, char site, int idStation)
        {
            // Die Liste der Standorte wird aus dem Cache geladen.
            if (!cache.TryGetValue(CacheKeys.LOCATION, out locations))
            {
                locations = new List <ILocation>();
            }

            // Ermitteln des richtigen Standorts.
            EditZoneViewModel viewmodel = new EditZoneViewModel();

            foreach (ILocation l in locations)
            {
                if (l.id.Equals(id.ToString()))
                {
                    // Befüllen des ViewModels mit den bereits bekannten Werten.
                    viewmodel.name = l.name;
                    viewmodel.id   = id;

                    // Ermitteln der richtigen Station
                    foreach (Zone z in l.zones)
                    {
                        if (z.site == site)
                        {
                            // Befüllen des ViewModels mit den bereits bekannten Werten.
                            viewmodel.zone = z;
                            viewmodel.site = site;

                            // Ermitteln der richtigen Station
                            foreach (Station s in z.stations)
                            {
                                if (s.id == idStation)
                                {
                                    // Befüllen des ViewModels mit den bereits bekannten Werten.
                                    viewmodel.station = s;

                                    viewmodel.ccs   = 0;
                                    viewmodel.type2 = 0;
                                    foreach (Plug p in s.plugs)
                                    {
                                        if (p.type == PlugType.CCS)
                                        {
                                            viewmodel.ccsPower = p.power;
                                            viewmodel.ccs++;
                                        }
                                        else
                                        {
                                            viewmodel.type2++;
                                            viewmodel.type2Power = p.power;
                                        }
                                    }
                                    // Entfernen der Station aus der Zone um doppelungen zu vermeiden.
                                    viewmodel.zone.deleteStation(s);
                                    return(View("EditZone", viewmodel));
                                }
                            }
                            break;
                        }
                    }
                    break;
                }
            }

            // Station nicht gefunden.
            return(RedirectToAction("Index"));
        }
예제 #11
0
        /// <summary>
        /// Erstellt eine neue Ladestation und fügt diese der Zone hinzu.
        /// </summary>
        /// <param name="viewmodel">Enthält die nötigen Daten.</param>
        /// <returns>Seite, auf welcher man die Zone bearbeiten kann.</returns>
        public IActionResult EditStation(EditZoneViewModel viewmodel)
        {
            Station station = viewmodel.station;

            // Erzeugt die Stecker der Station.
            station.plugs = new List <Plug>();
            for (int i = 0; i < viewmodel.ccs; i++)
            {
                station.addPlug(new Plug()
                {
                    power = viewmodel.ccsPower, type = PlugType.CCS
                });
            }
            for (int i = 0; i < viewmodel.type2; i++)
            {
                station.addPlug(new Plug()
                {
                    power = viewmodel.type2Power, type = PlugType.TYPE2
                });
            }

            // Die Liste der Standorte wird aus dem Cache geladen.
            if (!cache.TryGetValue(CacheKeys.LOCATION, out locations))
            {
                locations = new List <ILocation>();
            }

            // Ermitteln des richtigen Standorts.
            foreach (ILocation location in locations)
            {
                if (viewmodel.id.ToString().Equals(location.id))
                {
                    // Ermittelt die richtige Zone.
                    viewmodel.name = location.name;
                    foreach (Zone z in location.zones)
                    {
                        if (viewmodel.site == z.site)
                        {
                            viewmodel.zone = z;
                            break;
                        }
                    }
                    break;
                }
            }
            //Ermittelt eine Valide Id.
            bool idValid = false;
            int  id      = 0;

            while (!idValid)
            {
                idValid = true;
                foreach (Station s in viewmodel.zone.stations)
                {
                    if (id == s.id)
                    {
                        idValid = false;
                        id++;
                        break;
                    }
                }
            }
            station.id = id;

            //Validiert die Station.
            if (TryValidateModel(station))
            {
                // Zurücksetzten des viewmodels und hinzufügen der Station.
                viewmodel.zone.addStation(station);
                viewmodel.station          = new Station();
                viewmodel.ccs              = 0;
                viewmodel.type2            = 0;
                viewmodel.ccsPower         = 0;
                viewmodel.type2Power       = 0;
                station.maxParallelUseable = Math.Min(station.maxParallelUseable, station.plugs.Count);
                return(View("EditZone", viewmodel));
            }
            return(View("EditZone", viewmodel));
        }