//========================================================================================================== //Call form add/edit io public ActionResult IOForm(int id) { var userName = User.Identity.GetUserName(); var xmlDB = new XMLDatabase(userName, _context.Users.First(c => c.Name == userName).ActProject); String pageName; if (String.IsNullOrEmpty(userName)) { pageName = ""; } else { pageName = _context.Users.First(c => c.Name == userName).ActProject; } var io = xmlDB.IOs.SingleOrDefault(c => c.Id == id); if (io == null) { return(HttpNotFound()); } var viewModel = new EditIOIOListViewModel { IO = io, IOLocations = xmlDB.Locations, Parents = xmlDB.Components.Where(c => c.Dependancy == Enums.Dependancy.Parent), PageName = pageName }; return(View("IOForm", viewModel)); }
public ActionResult Save(IO io) { var userName = User.Identity.GetUserName(); var xmlDB = new XMLDatabase(userName, _context.Users.First(c => c.Name == userName).ActProject); //Load page name String pageName; if (String.IsNullOrEmpty(userName)) { pageName = ""; } else { pageName = _context.Users.First(c => c.Name == userName).ActProject; } if (!ModelState.IsValid) { var viewModel = new EditIOIOListViewModel { IO = io, IOLocations = xmlDB.Locations.ToList(), Parents = xmlDB.Components.Where(c => c.Dependancy == Enums.Dependancy.Parent), PageName = pageName }; return(View("IOForm", viewModel)); } //Component created by user -> set to match io.MatchStatus = Enums.MatchStatus.Match; if (String.IsNullOrWhiteSpace(io.ParentName) || String.IsNullOrEmpty(io.ParentName)) { // UPDATE/ADD Single IOs Component var componentInDb = xmlDB.Components.SingleOrDefault(c => c.IOId == io.Id); if (componentInDb == null) { // Create single component var component = new Component(); component.IOId = io.Id; component.Name = io.Name; component.Comment = io.Comment; component.Location = io.Location; component.Dependancy = Enums.Dependancy.Single; component.MatchStatus = Enums.MatchStatus.No_Match; xmlDB.Components.Add(component); } else { //Update single component componentInDb.Comment = io.Comment; componentInDb.Location = io.Location; componentInDb.Name = io.Name; } } else { // Update/Add parent component var componentInDb = xmlDB.Components.SingleOrDefault(c => c.Name == io.ParentName); if (componentInDb == null) { // Create parent component var component = new Component(); component.IOId = io.Id; component.Name = io.Name; component.Comment = io.Comment; component.Location = io.Location; component.Dependancy = Enums.Dependancy.Parent; component.MatchStatus = Enums.MatchStatus.No_Match; xmlDB.Components.Add(component); } } xmlDB.Save(); //UPDATE/ADD IO var IOInDb = xmlDB.IOs.SingleOrDefault(c => c.Id == io.Id); if (IOInDb == null) { xmlDB.IOs.Add(io); } else { IOInDb.Name = io.Name; IOInDb.Comment = io.Comment; IOInDb.Location = io.Location; IOInDb.IOAddress = io.IOAddress; IOInDb.ComponentId = io.ComponentId; IOInDb.ConnectionType = io.ConnectionType; IOInDb.MatchStatus = io.MatchStatus; } xmlDB.Save(); //UPDATE IDs var ioIDUpdate = xmlDB.IOs.First(c => c.Name == io.Name); var ComponentIDUpdate = new Component(); // Search for component when it is single/parent if (String.IsNullOrEmpty(io.ParentName)) { ComponentIDUpdate = xmlDB.Components.First(c => c.Name == io.Name); //Update single components IO ID ComponentIDUpdate.IOId = ioIDUpdate.Id; } else { ComponentIDUpdate = xmlDB.Components.First(c => c.Name == io.ParentName); //Parent component has on IO ID because they are multiple } ioIDUpdate.ComponentId = ComponentIDUpdate.Id; xmlDB.Save(); return(RedirectToAction("Index", "IOList")); }