/// <summary> /// Deseriliazes a singular Jobs with childrem. /// This method is not fully completed and should be used with caution. /// </summary> /// <param name="jsonString">Serialized data contain information about job and its children</param> /// <returns>A deserialized Jobs object</returns> private Job Deserialize(string jsonString) { DbJob db = new DbJob(); Dictionary <string, object> dict = JsonConvert.DeserializeObject <Dictionary <string, object> >(jsonString); System.Diagnostics.Debug.WriteLine("DeserializeApiData. Printing Key Value:"); string[] keys = dict.Keys.ToArray(); Job j = new Job(); j.companies = new List <Company>(); j.jobTypes = new List <JobType>(); j.locations = new List <Location>(); j.studyGroups = new List <StudyGroup>(); CompaniesController cp = new CompaniesController(); foreach (var key in keys) { System.Diagnostics.Debug.WriteLine("key: " + key); System.Diagnostics.Debug.WriteLine("value: " + dict[key].ToString()); /* * if (!key.Equals("companies") || !key.Equals("courses") || !key.Equals("degrees") || !key.Equals("jobTypes") || !key.Equals("studyGroup")) {} */ if (key.Equals("uuid")) { j.uuid = dict[key].ToString(); } if (key.Equals("title")) { j.title = dict[key].ToString(); } if (key.Equals("description")) { j.description = dict[key].ToString(); } if (key.Equals("webpage")) { j.webpage = dict[key].ToString(); } if (key.Equals("expiryDate")) { DateTime dateTime = (DateTime)dict[key]; j.expiryDate = long.Parse(dateTime.ToString("yyyyMMddHHmmss")); } if (key.Equals("modified")) { DateTime dateTime = (DateTime)dict[key]; j.modified = long.Parse(dateTime.ToString("yyyyMMddHHmmss")); } if (key.Equals("published")) { DateTime dateTime = (DateTime)dict[key]; j.published = long.Parse(dateTime.ToString("yyyyMMddHHmmss")); } if (key.Equals("companies")) { CompaniesController cc = new CompaniesController(); DbCompany dbCompany = new DbCompany(); IEnumerable companies = (IEnumerable)dict[key]; //Newtonsoft.Json.Linq.JArray' System.Diagnostics.Debug.WriteLine("companies created"); foreach (var comp in companies) { System.Diagnostics.Debug.WriteLine("foreach initiated"); Dictionary <string, object> companyDict = JsonConvert.DeserializeObject <Dictionary <string, object> >(comp.ToString()); Company company = cc.DeserializeCompany(companyDict); System.Diagnostics.Debug.WriteLine("DeserializeOneJobs: company.id: " + company.id); j.companies.Add(company); dbCompany.UpdateCompany(company); System.Diagnostics.Debug.WriteLine("DeserializeOneJobs: After j.companies.Add(company)"); string jobUuid = dict["uuid"].ToString(); dbCompany.InsertCompanyJob(company.id, jobUuid); } } if (key.Equals("studyGroups")) { IEnumerable studyGroups = (IEnumerable)dict[key]; //Newtonsoft.Json.Linq.JArray' System.Diagnostics.Debug.WriteLine("studyGroups created"); DbStudyGroup dbStudyGroup = new DbStudyGroup(); foreach (var studyGroup in studyGroups) { System.Diagnostics.Debug.WriteLine("foreach initiated"); Dictionary <string, object> studyGroupDict = JsonConvert.DeserializeObject <Dictionary <string, object> >(studyGroup.ToString()); StudyGroup sg = new StudyGroup(); if (studyGroupDict.ContainsKey("id")) { sg.id = studyGroupDict["id"].ToString(); } if (studyGroupDict.ContainsKey("name")) { sg.name = studyGroupDict["name"].ToString(); } j.studyGroups.Add(sg); string jobUuid = dict["uuid"].ToString(); dbStudyGroup.InsertStudyGroupJob(sg.id, jobUuid); } } if (key.Equals("locations")) { IEnumerable locations = (IEnumerable)dict[key]; //Newtonsoft.Json.Linq.JArray' DbLocation dbLocation = new DbLocation(); System.Diagnostics.Debug.WriteLine("location created"); foreach (var location in locations) { System.Diagnostics.Debug.WriteLine("foreach initiated"); Dictionary <string, object> locationDict = JsonConvert.DeserializeObject <Dictionary <string, object> >(location.ToString()); Location loc = new Location(); if (locationDict.ContainsKey("id")) { loc.id = locationDict["id"].ToString(); System.Diagnostics.Debug.WriteLine("location id: " + loc.id); } if (locationDict.ContainsKey("name")) { loc.name = locationDict["name"].ToString(); } dbLocation.InsertLocation(loc); j.locations.Add(loc); string jobUuid = dict["uuid"].ToString(); dbLocation.InsertLocationJob(loc.id, jobUuid); } } if (key.Equals("jobTypes")) { IEnumerable jobTypes = (IEnumerable)dict[key]; //Newtonsoft.Json.Linq.JArray' DbJobType dbJobType = new DbJobType(); System.Diagnostics.Debug.WriteLine("jobTypes created"); foreach (var jobType in jobTypes) { System.Diagnostics.Debug.WriteLine("foreach initiated"); Dictionary <string, object> jtDict = JsonConvert.DeserializeObject <Dictionary <string, object> >(jobType.ToString()); JobType jt = new JobType(); if (jtDict.ContainsKey("id")) { jt.id = jtDict["id"].ToString(); } if (jtDict.ContainsKey("name")) { jt.name = jtDict["name"].ToString(); } dbJobType.InsertJobType(jt); System.Diagnostics.Debug.WriteLine("before j.jobTypes.Add(jt);"); j.jobTypes.Add(jt); string jobUuid = dict["uuid"].ToString(); dbJobType.InsertJobTypeJob(jt.id, jobUuid); } } } db.UpdateJob(j); return(j); }