public ActionResult EditRoad(int?roadmapId, int?id)
        {
            var model = new ManageRoadViewModel();

            if (id != null)
            {
                var road = Db.Roads
                           .Include(x => x.RoadXRoadSteps.Select(y => y.RoadStep))
                           .FirstOrDefault(p => p.Id == id);
                if (road != null)
                {
                    model.Id          = road.Id;
                    model.Name        = road.Name;
                    model.Description = road.Description;
                    model.RoadSteps   = road.RoadXRoadSteps.Select(p => p.RoadStep).ToList();

                    if (roadmapId != null)
                    {
                        model.RoadmapId = roadmapId;
                    }
                }
            }

            return(View(model));
        }
        public ActionResult EditRoad(ManageRoadViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            Road road = null;

            if (model.Id != null)
            {
                road = Db.Roads.FirstOrDefault(p => p.Id == model.Id);
                if (road != null)
                {
                    road.Name        = model.Name;
                    road.Description = model.Description;
                }
            }
            else
            {
                var currentUserId = User.Identity.GetUserId();

                RoadMap roadmap = null;
                if (model.RoadmapId != null)
                {
                    roadmap = Db.RoadMaps.FirstOrDefault(p => p.Id == model.RoadmapId);
                }

                road = new Road(model.Name, model.Description, currentUserId, roadmap);
                Db.Roads.Add(road);
            }

            Db.SaveChanges();

            return(RedirectToAction("List"));
        }