private int find_location(string location_id) { List <SContext> contexts = server_api.GetContextsForSite(Configurations.GetSiteNameForServer()); for (int counter = 0; counter < contexts.Count; counter++) { if (contexts[counter].name.ToLower() == (Configurations.GetSiteNameForServer() + "_landmark" + location_id) && contexts[counter].kind == "Landmark") { return(contexts[counter].id); } } return(-1); }
private int find_activity(string activity_name) { List <SContext> contexts = server_api.GetContextsForSite(Configurations.GetSiteNameForServer()); for (int counter = 0; counter < contexts.Count; counter++) { if (contexts[counter].title.ToLower() == activity_name.ToLower() && contexts[counter].kind == "Activity") { return(contexts[counter].id); } } return(-1); }
private int find_location_id(SNote note) { int location_id = 0; string landmark = find_landmark(note); if (landmark != "") { try { location_id = Convert.ToInt32(landmark.Substring(Configurations.GetSiteNameForServer().Length + "landmark".Length + 1)); } catch (Exception) { location_id = Configurations.FindLocationID(note.latitude, note.longitude); } } else { location_id = Configurations.FindLocationID(note.latitude, note.longitude); } return(location_id); }
private string find_context(int context_id) { List <SContext> contexts = server_api.GetContextsForSite(Configurations.GetSiteNameForServer()); for (int counter = 0; counter < contexts.Count; counter++) { if (contexts[counter].id == context_id) { if (contexts[counter].kind == "Landmark") { return(contexts[counter].name); } else { return(contexts[counter].title); } } } return(""); }
public bool UpdateLocalActivitites() { try { List <SContext> contexts = server_api.GetContextsForSite(Configurations.GetSiteNameForServer()); TableTopDataClassesDataContext db = Configurations.GetTableTopDB(); if (contexts != null) { if (contexts.Count > 0) { var activities = from ac in db.Activities select ac; for (int counter = 0; counter < contexts.Count; counter++) { if (contexts[counter].kind != "Landmark" && contexts[counter].title != "Pilot") { Activity a = null; foreach (Activity activity in activities) { if (activity.technical_info.Split(new char[] { ';' })[0] == contexts[counter].id.ToString()) { a = activity; break; } } if (a == null) { //create the activity a = new Activity(); a.name = contexts[counter].title; a.location_id = 0; a.description = contexts[counter].description; a.creation_date = DateTime.UtcNow; Extras ex = JsonConvert.DeserializeObject <Extras>(contexts[counter].extras); a.technical_info = contexts[counter].id.ToString() + ";" + contexts[counter].kind + ";" + contexts[counter].extras; if (ex != null) { a.avatar = ex.icon; if (!ex.active) { a.expire_date = DateTime.Now; } } db.Activities.InsertOnSubmit(a); } else { //modify it a.name = contexts[counter].title; a.description = contexts[counter].description; Extras ex = JsonConvert.DeserializeObject <Extras>(contexts[counter].extras); a.technical_info = contexts[counter].id.ToString() + ";" + contexts[counter].kind + ";" + contexts[counter].extras; a.avatar = ex.icon; if (!ex.active) { a.expire_date = DateTime.Now; } else { a.expire_date = null; } } if (!SubmitChangesToLocalDB(db)) { return(false); } } } } } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace); } return(true); }
public bool ProcessFeedbackChanges() { DateTime save_time = DateTime.UtcNow; List <SFeedback> feedbacks = server_api.GetFeedbacksCreatedSince(Configurations.last_change_server_feedbacks.Year.ToString(), Configurations.last_change_server_feedbacks.Month.ToString(), Configurations.last_change_server_feedbacks.Day.ToString(), Configurations.last_change_server_feedbacks.Hour.ToString(), Configurations.last_change_server_feedbacks.Minute.ToString(), true); if (feedbacks == null) { return(false); } else { current_feedbacks = feedbacks; } TableTopDataClassesDataContext db = Configurations.GetTableTopDB(); bool all_fine = true; for (int counter = 0; counter < feedbacks.Count; counter++) { if (feedbacks[counter].kind == "Landmark") { continue; } var fdbacks = from f in db.Feedbacks where f.technical_info == feedbacks[counter].id.ToString() select f; if (fdbacks.Count() > 1) { continue; } if (fdbacks.Count() == 1) { // update feedback Feedback f = fdbacks.Single <Feedback>(); f.note = feedbacks[counter].content; f.web_username = feedbacks[counter].webusername; //f.date = (Configurations.unix_epoch.AddMilliseconds(feedbacks[counter].modified_at)).ToLocalTime(); var usrs = from u in db.Users where u.name == feedbacks[counter].account.username select u; if (usrs.Count() > 0) { f.user_id = usrs.First <User>().id; } else { f.user_id = 0; } db.SubmitChanges(); continue; } Feedback fb = new Feedback(); fb.date = (Configurations.unix_epoch.AddMilliseconds(feedbacks[counter].created_at)).ToLocalTime(); fb.web_username = feedbacks[counter].webusername; if (feedbacks[counter].kind.ToLower() == "comment") { fb.type_id = 1; // comment } if (feedbacks[counter].kind.ToLower() == "like") { fb.type_id = 2; // like } if (feedbacks[counter].kind.ToLower() == "rating") { fb.type_id = 3; // rating } if (feedbacks[counter].kind.ToLower() == "like") { fb.note = "true"; } else { fb.note = feedbacks[counter].content; } // find local user id var users = from u in db.Users where u.name == feedbacks[counter].account.username select u; if (users.Count() > 0) { fb.user_id = users.First <User>().id; } else { fb.user_id = 0; } fb.parent_id = 0; if (feedbacks[counter].parent_id != 0) { // find local parent id var parents = from p in db.Feedbacks where p.technical_info == feedbacks[counter].parent_id.ToString() select p; if (parents.Count() == 1) { fb.parent_id = parents.Single <Feedback>().id; } } if (feedbacks[counter].target.model.ToLower() == "note") { // search for the object_id in local database var cntribs = from c in db.Contributions where c.technical_info == feedbacks[counter].target.id.ToString() select c; if (cntribs.Count() > 0) { fb.object_id = cntribs.First <Contribution>().id; fb.object_type = "nature_net.Contribution"; } } if (feedbacks[counter].target.model.ToLower() == "account") { string username = find_account(feedbacks[counter].target.id); // search for the object_id in local database var cntribs = from c in db.Users where c.name == username select c; if (cntribs.Count() > 0) { fb.object_id = cntribs.First <User>().id; fb.object_type = "nature_net.User"; } } if (feedbacks[counter].target.model.ToLower() == "context") { string context_name = find_context(feedbacks[counter].target.id); // search for the object_id in local database if (context_name.StartsWith(Configurations.GetSiteNameForServer() + "_landmark")) { //search for locations var cntribs = from c in db.Locations where c.id == Convert.ToInt32(context_name.Substring(Configurations.GetSiteNameForServer().Length + "_landmark".Length)) select c; if (cntribs.Count() > 0) { fb.object_id = cntribs.First <Location>().id; fb.object_type = "nature_net.Location"; } } else { //search for activities var cntribs = from c in db.Activities where c.name == context_name select c; if (cntribs.Count() > 0) { fb.object_id = cntribs.First <Activity>().id; fb.object_type = "nature_net.Activity"; } } } fb.technical_info = feedbacks[counter].id.ToString(); //fb.technical_info = ""; db.Feedbacks.InsertOnSubmit(fb); if (!SubmitChangesToLocalDB(db)) { all_fine = false; return(false); } } if (feedbacks.Count == 0) { return(true); } if (all_fine) { Configurations.last_change_server_feedbacks = save_time; Configurations.SaveSettings(); return(true); } return(false); }
public bool ProcessContributionChanges() { DateTime save_time = DateTime.UtcNow; List <SNote> notes; notes = server_api.GetNotesCreatedSince(Configurations.last_change_server_contributions.Year.ToString(), Configurations.last_change_server_contributions.Month.ToString(), Configurations.last_change_server_contributions.Day.ToString(), Configurations.last_change_server_contributions.Hour.ToString(), Configurations.last_change_server_contributions.Minute.ToString(), true); if (notes == null) { return(false); } else { this.current_notes = notes; } bool submit_changes = true; TableTopDataClassesDataContext db = Configurations.GetTableTopDB(); for (int counter = 0; counter < notes.Count; counter++) { var cntribs = from c in db.Contributions where c.technical_info == notes[counter].id.ToString() select c; if (cntribs.Count() > 0) { // existing contribution -- update it Contribution c1 = cntribs.First <Contribution>(); c1.modified_date = (Configurations.unix_epoch.AddMilliseconds(notes[counter].modified_at)).ToLocalTime(); c1.location_id = find_location_id(notes[counter]); c1.note = notes[counter].content; c1.status = notes[counter].status; c1.web_username = notes[counter].webusername; if (notes[counter].kind == "DesignIdea") { c1.tags = "Design Idea"; } else { if (notes[counter].medias != null && notes[counter].medias.Count > 0) { c1.tags = notes[counter].medias[0].kind; c1.media_url = notes[counter].medias[0].link; } } int a_id = 0; // free observation if (notes[counter].context.name.Substring(Configurations.GetSiteNameForServer().Count() + 1) == "design_idea") { a_id = 1; // design idea } var activities0 = from a in db.Activities where a.name == notes[counter].context.title select a; if (activities0.Count() > 0) { a_id = activities0.First <Activity>().id; } c1.technical_info = notes[counter].id.ToString(); db.SubmitChanges(); //if (a_id != 1) update_or_create_collection(db, c1.id, a_id, c1.date); // updating the user string new_username = notes[counter].account.username; int new_user_id = 0; var usrs = from u in db.Users where u.name == new_username select u; if (usrs.Count() == 1) { new_user_id = usrs.Single <User>().id; } this.update_user_for_contribution(db, c1.id, new_user_id, c1.date); continue; } string username = notes[counter].account.username; DateTime note_date = (Configurations.unix_epoch.AddMilliseconds(notes[counter].created_at)).ToLocalTime(); DateTime note_modified_date = note_date; if (notes[counter].modified_at != null && notes[counter].modified_at > 0) { note_modified_date = (Configurations.unix_epoch.AddMilliseconds(notes[counter].modified_at)).ToLocalTime(); } //DateTime note_date= DateTime.FromOADate(notes[counter].created_at //int activity_id = notes[counter].context.?? int activity_id = 0; // free observation //int activity_id = 1; // design idea //int activity_id = other; // other activities if (notes[counter].context.name.Substring(Configurations.GetSiteNameForServer().Count() + 1) == "design_idea") { activity_id = 1; } var activities = from a in db.Activities where a.name == notes[counter].context.title select a; if (activities.Count() > 0) { activity_id = activities.First <Activity>().id; } int col_id = this.get_or_create_collection(db, username, activity_id, note_date); if (col_id == -1) { continue; } foreach (SMedia media in notes[counter].medias) { bool could_create = create_contribution(notes[counter], media, note_date, note_modified_date, notes[counter].content, notes[counter].id.ToString(), (notes[counter].kind == "DesignIdea"), col_id, notes[counter].status, db); if (!could_create) { submit_changes = false; } } if (notes[counter].medias == null) { notes[counter].medias = new List <SMedia>(); } if (notes[counter].medias.Count == 0) { bool could_create = create_contribution(notes[counter], null, note_date, note_modified_date, notes[counter].content, notes[counter].id.ToString(), (notes[counter].kind == "DesignIdea"), col_id, notes[counter].status, db); if (!could_create) { submit_changes = false; } } } if (notes.Count == 0) { return(true); } if (submit_changes) { Configurations.last_change_server_contributions = save_time; Configurations.SaveSettings(); return(true); } return(false); }