static void Main(string[] args) { string _apiUrlRoot = "https://run.journeyapps.com/api/v1/"; var apiPath = String.Format("{0}/{1}.{2}", _apiUrlRoot, "site", "json"); var client = CreateWebClient(); var response = client.DownloadString(apiPath); var result = JsonConvert.DeserializeObject<List<jny_site>>(response); //result.Reverse(); logger("Site Count = " + result.Count.ToString()); foreach (var site in result) { if (site.id != null) { var db = new FSSCDBI_Entities(); if (db.jny_site.Any(s => s.id == site.id)) { logger(site.id + " Imported "); continue; } // check if site is concluded, 0 = 'yes', 1 = 'no' if (site.is_complete == 1) { logger(site.id + " In_Progress "); } else { if (!site.worker_id.HasValue) { logger(site.id + " Not_Allocated "); continue; } string id = site.id.ToString(); //Guid Newsiteid = Guid.TryParse(site.id); bool allPhotosSynced = AllPhotosSynced(id); if (allPhotosSynced) { logger(site.id + " Ready_For_Import "); logger(site.id + " " + site.display_name + " Importing "); SaveApiSite(site.id); continue; } else { logger(site.id + " Not_Fully_Synced "); continue; } } } } logger(" Update Done "); Console.ReadLine(); }
public static bool SaveApiSite(Guid? id) { var db = new FSSCDBI_Entities(); if (id == null) { return false; } //json_serializer = new JavaScriptSerializer(); jsonObjects = new HashSet<Hashtable>(); // initialise RESTful API Data Context //InitializeApiRepositories(instanceId); string sids = id.ToString(); var site = JsonConvert.DeserializeObject<jny_site>(GetById(sids, "site")); var rawSite = GetById(sids, "site"); jsonObjects = GetObjectsFromJSON(rawSite, "gps"); if (jsonObjects.ToList().Count > 0) { site.latitude = jsonObjects.ToList()[0]["latitude"].ToString(); site.longitude = jsonObjects.ToList()[0]["longitude"].ToString(); site.altitude = jsonObjects.ToList()[0]["altitude"] != null ? jsonObjects.ToList()[0]["altitude"].ToString() : ""; site.horizontal_accuracy = jsonObjects.ToList()[0]["horizontal_accuracy"] != null ? jsonObjects.ToList()[0]["horizontal_accuracy"].ToString() : ""; } db.jny_site.Add(site); logger(site.id + " Site Data Recieved "); if (site.worker_id != null) { string widw = site.worker_id.ToString(); //var worker = GetById(widw,"workers"); var worker = JsonConvert.DeserializeObject<jny_worker>(GetById(widw, "workers")); db.jny_worker.Add(worker); } logger(site.id + " Worker Data Recieved "); var generals = Get("general", "q[site_id]=" + site.id); var generalsList = JsonConvert.DeserializeObject<List<jny_general>>(generals); //var result = JsonConvert.DeserializeObject<List<jny_site>>(response); if (generalsList.Count > 0) { foreach (var g in generalsList) { db.jny_general.Add(g); } } logger(site.id + " General Data Recieved " + generalsList.Count.ToString()); var areas = Get("area", "q[site_id]=" + site.id); var areasList = JsonConvert.DeserializeObject<List<jny_area>>(areas); if (areasList.Count > 0) { foreach (var a in areasList) { db.jny_area.Add(a); } } logger(site.id + " Area Data Recieved " + areasList.Count.ToString()); var subAreas = Get("sub_area", "q[site_id]=" + site.id); var subAreasList = JsonConvert.DeserializeObject<List<jny_sub_area>>(subAreas); if (subAreasList.Count > 0) { foreach (var s in subAreasList) { db.jny_sub_area.Add(s); } } logger(site.id + " Sub Area Data Recieved " + subAreasList.Count.ToString()); var elementgroups = Get("element_group", "q[site_id]=" + site.id); var elementGroupsList = JsonConvert.DeserializeObject<List<jny_element_group>>(elementgroups); if (elementGroupsList.Count > 0) { foreach (var eg in elementGroupsList) { db.jny_element_group.Add(eg); } } logger(site.id + " Element Group Data Recieved " + elementGroupsList.Count.ToString()); var elements = Get("element", "q[site_id]=" + site.id); var elementsList = JsonConvert.DeserializeObject<List<jny_element>>(elements); if (elementsList.Count > 0) { foreach (var e in elementsList) { db.jny_element.Add(e); } } logger(site.id + " Element Data Recieved " + elementsList.Count.ToString()); var materials = Get("material", "q[site_id]=" + site.id); var materialsList = JsonConvert.DeserializeObject<List<jny_material>>(materials); if (materialsList.Count > 0) { foreach (var m in materialsList) { db.jny_material.Add(m); } } logger(site.id + " Material Data Recieved " + materialsList.Count.ToString()); var conditions = Get("condition", "q[site_id]=" + site.id); var conditionsList = JsonConvert.DeserializeObject<List<jny_condition>>(conditions); if (conditionsList.Count > 0) { foreach (var cz in conditionsList) { db.jny_condition.Add(cz); } } logger(site.id + " Condition Data Recieved " + conditionsList.Count.ToString()); logger(site.id + " Recieveing Photos "); var photos = Get("photo_placeholder", "q[sync_site_id]=" + site.id); var photosList = JsonConvert.DeserializeObject<List<jny_photo_placeholder>>(photos); if (photosList.Count > 0) { foreach (var cpz in photosList) { var photo = new jny_photo_placeholder { }; string pids = cpz.id.ToString(); var rawPhoto = GetById(pids, "photo_placeholder"); var obj = GetObjectsFromJSON(rawPhoto, "gps"); var pic = GetObjectsFromJSON(rawPhoto, "picture"); photo._updated_at = cpz._updated_at; photo.area_id = cpz.area_id; photo.condition_id = cpz.condition_id; photo.element_id = cpz.element_id; photo.material_id = cpz.material_id; photo.site_id = cpz.site_id; photo.sub_area_id = cpz.sub_area_id; photo.sync_site_id = cpz.sync_site_id; photo.id = cpz.id; photo.display_name = cpz.display_name; //photo.latitude = obj.ToList()[0]["latitude"].ToString(); //photo.longitude = obj.ToList()[0]["longitude"].ToString(); //photo.altitude = obj.ToList()[0]["altitude"] != null ? obj.ToList()[0]["altitude"].ToString() : ""; //photo.horizontal_accuracy = obj.ToList()[0]["horizontal_accuracy"] != null ? obj.ToList()[0]["horizontal_accuracy"].ToString() : ""; photo.latitude = obj.ToList()[0]["latitude"] != null ? obj.ToList()[0]["latitude"].ToString() : ""; photo.longitude = obj.ToList()[0]["longitude"] != null ? obj.ToList()[0]["longitude"].ToString() : ""; photo.altitude = obj.ToList()[0]["altitude"] != null ? obj.ToList()[0]["altitude"].ToString() : ""; photo.horizontal_accuracy = obj.ToList()[0]["horizontal_accuracy"] != null ? obj.ToList()[0]["horizontal_accuracy"].ToString() : ""; photo.vertical_accuracy = obj.ToList()[0]["vertical_accuracy"] != null ? obj.ToList()[0]["vertical_accuracy"].ToString() : ""; photo.image_data = pic.ToList()[0]["fullscreen"] != null ? GetImageData(pic.ToList()[0]["fullscreen"].ToString()) : ""; photo.thumbnail = pic.ToList()[0]["thumbnail"] != null ? pic.ToList()[0]["thumbnail"].ToString() : ""; photo.fullscreen = pic.ToList()[0]["fullscreen"] != null ? pic.ToList()[0]["fullscreen"].ToString() : ""; photo.original = pic.ToList()[0]["original"] != null ? pic.ToList()[0]["original"].ToString().Replace("}", "").Replace("]", "").Trim() : ""; db.jny_photo_placeholder.Add(photo); } } logger(site.id + " Photo Data Recieved " + photosList.Count.ToString()); var siteInDb = db.jny_site.FirstOrDefault(s => s.id == site.id); bool existsInDb = siteInDb != null; if (!existsInDb) { if (generalsList.Count > 0) { foreach (var g in generalsList) { db.jny_general.Add(g); } } if (areasList.Count > 0) { foreach (var a in areasList) { db.jny_area.Add(a); } } if (subAreasList.Count > 0) { foreach (var s in subAreasList) { db.jny_sub_area.Add(s); } } if (elementGroupsList.Count > 0) { foreach (var eg in elementGroupsList) { db.jny_element_group.Add(eg); } } if (elementsList.Count > 0) { foreach (var e in elementsList) { db.jny_element.Add(e); } } if (materialsList.Count > 0) { foreach (var m in materialsList) { db.jny_material.Add(m); } } if (conditionsList.Count > 0) { foreach (var c in conditionsList) { db.jny_condition.Add(c); } } db.SaveChanges(); logger(site.id + " Data Saved to SQL Server "); //return site; } return true; }