public IActionResult SaveXfer(string id, string name, string periodStart, string periodEnd, string jobs) { JObject meta = new JObject(); JObject Xfer = new JObject(); JArray jobList = JArray.Parse(jobs); JArray selectedJobs = new JArray(); JArray servers = new JArray(); JArray ouMapping = new JArray(); Guid xferID = Guid.NewGuid(); if (id != null) { xferID = Guid.Parse(id); } meta["id"] = xferID.ToString(); meta["name"] = name; meta["periodStart"] = periodStart; meta["periodEnd"] = periodEnd; meta["count"] = jobList.Count(); meta["jobs"] = new JArray(); Xfer["meta"] = meta; //Loop through and add job data foreach (var j in jobList) { string jobID = j.ToString(); JArray metaJobs = meta["jobs"].Value <JArray>(); metaJobs.Add(jobID); JObject job = DataFactory.GetJob(jobID, directory); JObject jobMeta = (JObject)job.GetValue("meta"); string source = jobMeta.GetValue("source").ToString(); string destination = jobMeta.GetValue("destination").ToString(); selectedJobs.Add(job); //Add server data for each job DataFactory.CheckServerExists(source, servers, directory); DataFactory.CheckServerExists(destination, servers, directory); DataFactory.CheckOUMappingExists(source, destination, ouMapping, directory); } Xfer["jobs"] = selectedJobs; Xfer["servers"] = servers; Xfer["ouMapping"] = ouMapping; FileFactory.WriteFile(Xfer, xferID.ToString(), XferFactory.FileType.Xfer, directory); //Meta file for when we want to list Xfer files but not load all the data FileFactory.WriteFile(meta, xferID.ToString(), XferFactory.FileType.XferMeta, directory); return(Json(new { success = true })); }