Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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("");
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }