コード例 #1
0
 public ActionResult SaveNetworkAs(NetworkViewModel model)
 {
     using (var c = new DataModelContext())
     {
         var net = c.Networks.Find(model.ID);
         net.Name = model.Name;
         net.LastEdit = DateTime.Now;
         c.SaveChanges();
     }
     return TempEdit(model.ID, 0);
 }
コード例 #2
0
        public JsonResult removeNode(NetworkViewModel model)
        {
            ICollection<Node> nodeArray = new List<Node>();
            ICollection<Link> linkArray = new List<Link>();
            ICollection<Order> orderArray = new List<Order>();
            killOptimization(model.ID);

            using(var c = new DataModelContext())
            {
                foreach(Node n in c.Networks.Find(model.ID).Nodes)
                {
                    if(n.StationCode == model.NewNode.StationCode)
                    {
                        nodeArray.Add(n);
                    }
                }
                foreach(Link l in c.Networks.Find(model.ID).Links)
                {

                    if(l.From.StationCode == model.NewNode.StationCode || l.To.StationCode == model.NewNode.StationCode)
                    {
                        linkArray.Add(l);
                    }

                }
                foreach(Order o in c.Networks.Find(model.ID).Orders)
                {

                    if(o.Origin.StationCode == model.NewNode.StationCode || o.Destination.StationCode == model.NewNode.StationCode)
                    {

                        orderArray.Add(o);
                    }
                }

                var net = c.Networks.Find(model.ID);
                foreach(Node n in nodeArray)
                {
                    net.Nodes.Remove(n);
                }

                foreach(Link l in linkArray)
                {
                    net.Links.Remove(l);
                }

                foreach(Order o in orderArray)
                {
                    net.Orders.Remove(o);
                }
                net.LastEdit = DateTime.Now;

                c.SaveChanges();
            }
            return Json(new { success=true });
        }
コード例 #3
0
        public JsonResult removeOrder(NetworkViewModel model)
        {
            ICollection<Order> orderArray = new List<Order>();
            killOptimization(model.ID);

            using(var c = new DataModelContext())
            {
                var net = c.Networks
                    .Include("Orders.Origin")
                    .Include("Orders.Destination")
                    .FirstOrDefault(n => n.ID == model.ID);

                foreach(Order o in net.Orders)
                {
                    Order whyistherenoorder = o;
                    if(o.Origin.StationCode == model.NewOrder.Origin.StationCode && o.Destination.StationCode == model.NewOrder.Destination.StationCode)
                    {
                        orderArray.Add(o);
                    }
                }

                foreach(Order o in orderArray)
                {
                    net.Orders.Remove(o);
                }
                net.LastEdit = DateTime.Now;
                c.SaveChanges();
            }
            return Json(new { success=true });
        }
コード例 #4
0
        public JsonResult editOrder(NetworkViewModel model)
        {
            ICollection<Order> orderArray = new List<Order>();
            killOptimization(model.ID);

            using (var c = new DataModelContext())
            {
                foreach (Order n in c.Networks.Find(model.ID).Orders)
                {
                    if (n.ID == model.NewOrder.ID)
                    {
                        foreach (Node node in c.Networks.Find(model.ID).Nodes)
                        {
                            if (node.StationCode == model.NewOrder.Origin.StationCode)
                            {
                                n.Origin = node;
                            }
                            else if (node.StationCode == model.NewOrder.Destination.StationCode)
                            {
                                n.Destination = node;
                            }
                        }
                        n.Revenue = model.NewOrder.Revenue;
                        n.Cars = model.NewOrder.Cars;
                    }
                }

                var net = c.Networks.Find(model.ID);

                net.LastEdit = DateTime.Now;

                c.SaveChanges();
            }
            return Json(new { success = true });
        }
コード例 #5
0
        public JsonResult removeLink(NetworkViewModel model)
        {
            killOptimization(model.ID);
            ICollection<Link> linkArray = new List<Link>();

            using(var c = new DataModelContext())
            {
                var net = c.Networks.Find(model.ID);

                foreach(Link l in net.Links)
                {

                    if(l.From.StationCode == model.NewLink.From.StationCode &&
                        l.To.StationCode == model.NewLink.To.StationCode)
                    {
                        linkArray.Add(l);
                    }

                    if (!model.IsOneDirectional)
                    {
                        if (l.To.StationCode == model.NewLink.From.StationCode &&
                            l.From.StationCode == model.NewLink.To.StationCode)
                        {
                            linkArray.Add(l);
                        }
                    }

                }

                foreach(Link l in linkArray)
                {
                    net.Links.Remove(l);
                }

                net.LastEdit = DateTime.Now;
                c.SaveChanges();
            }
            return Json(new { success=true });
        }
コード例 #6
0
        public ActionResult editNetwork(NetworkViewModel model)
        {
            killOptimization(model.ID);
            using (var c = new DataModelContext())
            {
                var net = c.Networks.Find(model.ID);

                net.MaxCarsPerTrain = model.MaxCarsPerTrain;
                net.NonFuelCostPerMile = model.NonFuelCostPerMile;
                net.FuelCostPerMile = model.FuelCostPerMile;
                net.CarCostPerMile = model.CarCostPerMile;
                net.OptimizationResult = null;

                net.LastEdit = DateTime.Now;
                c.SaveChanges();

            }
            return Json(new { success = true });
        }
コード例 #7
0
        public JsonResult editNode(NetworkViewModel model)
        {
            ICollection<Node> nodeArray = new List<Node>();
            killOptimization(model.ID);

            using (var c = new DataModelContext())
            {
                foreach (Node n in c.Networks.Find(model.ID).Nodes)
                {
                    if (n.StationCode == model.NewNode.StationCode)
                    {
                        n.Name = model.NewNode.Name;
                        n.CarCapacity = model.NewNode.CarCapacity;
                        n.Location = model.NewNode.Location;

                    }
                }

                var net = c.Networks.Find(model.ID);
                net.LastEdit = DateTime.Now;

                c.SaveChanges();
            }
            return Json(new { success = true });
        }
コード例 #8
0
        public JsonResult addLink(NetworkViewModel model)
        {
            Link newLink = model.NewLink;
            Link newLink2 = model.NewLink;

            Node to = new Node();
            Node from = new Node();

            Node to2 = new Node();
            Node from2 = new Node();
            killOptimization(model.ID);

            using(var c = new DataModelContext())
            {
                foreach(Node n in c.Networks.Find(model.ID).Nodes)
                {

                    if(n.StationCode == model.NewLink.To.StationCode)
                    {

                        to = n;
                    }
                    else if(n.StationCode == model.NewLink.From.StationCode)
                    {
                        from = n;
                    }
                }

                newLink.From = from;
                newLink.To = to;

                try
                {
                    var net = c.Networks.Find(model.ID);
                    net.Links.Add(newLink);
                    net.LastEdit = DateTime.Now;
                }
                catch(Exception e)
                {
                    throw e;
                }
                c.SaveChanges();
            }

            if (!model.IsOneDirectional)
            {
                using (var d = new DataModelContext())
                {

                    foreach (Node n in d.Networks.Find(model.ID).Nodes)
                    {

                        if (n.StationCode == model.NewLink.To.StationCode)
                        {

                            to2 = n;
                        }
                        else if (n.StationCode == model.NewLink.From.StationCode)
                        {
                            from2 = n;
                        }
                    }
                    newLink2.From = to2;
                    newLink2.To = from2;
                    try
                    {
                        var net = d.Networks.Find(model.ID);
                        net.Links.Add(newLink2);
                        net.LastEdit = DateTime.Now;
                    }
                    catch (Exception e)
                    {
                        throw e;
                    }
                    d.SaveChanges();
                }
            }
            return Json(new { success=true });
        }
コード例 #9
0
        public JsonResult editLink(NetworkViewModel model)
        {
            ICollection<Link> linkArray = new List<Link>();
            killOptimization(model.ID);

            using (var c = new DataModelContext())
            {
                foreach (Link n in c.Networks.Find(model.ID).Links)
                {
                    if (n.ID == model.NewLink.ID)
                    {
                        foreach (Node node in c.Networks.Find(model.ID).Nodes)
                        {
                            if (node.StationCode == model.NewLink.From.StationCode)
                            {

                                n.From = node;
                            }
                            else if (node.StationCode == model.NewLink.To.StationCode)
                            {
                                n.To = node;
                            }
                        }
                        n.FuelAdjustment = model.NewLink.FuelAdjustment;
                        n.Distance = model.NewLink.Distance;
                        n.MaxTrains = model.NewLink.MaxTrains;
                    }
                }

                var net = c.Networks.Find(model.ID);

                net.LastEdit = DateTime.Now;

                c.SaveChanges();
            }
            return Json(new { success = true });
        }
コード例 #10
0
        public JsonResult addOrder(NetworkViewModel model)
        {
            Order newOrder = model.NewOrder;

            Node to = new Node();
            Node from = new Node();
            killOptimization(model.ID);

            using(var c = new DataModelContext())
            {
                foreach(Node n in c.Networks.Find(model.ID).Nodes)
                {

                    if(n.StationCode == model.NewOrder.Destination.StationCode)
                    {

                        to = n;
                    }
                    else if(n.StationCode == model.NewOrder.Origin.StationCode)
                    {
                        from = n;
                    }
                }
                newOrder.Destination = to;
                newOrder.Origin = from;

                var net = c.Networks.Find(model.ID);
                net.Orders.Add(newOrder);

                net.LastEdit = DateTime.Now;
                c.SaveChanges();
            }
            return Json(new { success=true });
        }
コード例 #11
0
        public ActionResult View(long id)
        {
            var nvm = new NetworkViewModel();

            using(var c = new DataModelContext())
            {
                var network = c.Networks.Find(id);
                if(network == null)
                {
                    TempData["Alert"] = "The selected network does not exist.";
                    return RedirectToAction("Index");
                }

                List<Node> tempList = (from n in network.Nodes
                                       where n.StationCode != null
                                       select n).ToList();

                nvm.ID = network.ID;
                nvm.Nodes = network.Nodes;
                nvm.Links = network.Links;
                nvm.sCodeList = tempList;
                nvm.Revision = network.Revision;

                var nameNet = network;
                while(nameNet.Parent != null && nameNet.Name == null)
                    nameNet = nameNet.Parent;
                nvm.Name = nameNet.Name;

                if(network.OptimizationResult == null)
                {
                    nvm.OutOfDate = false;
                    nvm.Optimized = false;
                }
                else
                {
                    nvm.OutOfDate = network.OptimizationResult.OutOfDate;
                    nvm.Optimized = true;
                }
            }

            return View("View", nvm);
        }
コード例 #12
0
        public JsonResult addNode(NetworkViewModel model)
        {
            Node newNode = model.NewNode;

            killOptimization(model.ID);

            using(var c = new DataModelContext())
            {
                var net = c.Networks.Find(model.ID);
                net.Nodes.Add(newNode);
                net.LastEdit = DateTime.Now;
                c.SaveChanges();
            }
            return Json(new { success=true });
        }