コード例 #1
0
 public void load_image(object arg, DoWorkEventArgs e)
 {
     int contribution_id = (int)e.Argument;
     if (!window_manager.downloaded_contributions.Contains(contribution_id))
     {
         naturenet_dataclassDataContext db = new naturenet_dataclassDataContext();
         var result1 = from c in db.Contributions
                       where c.id == contribution_id
                       select c;
         if (result1.Count() != 0)
         {
             Contribution contrib = result1.First<Contribution>();
             bool result = file_manager.download_file_from_googledirve(contrib.media_url, contribution_id);
             if (result) window_manager.downloaded_contributions.Add(contribution_id);
         }
     }
     try
     {
         ImageSource src = new BitmapImage(new Uri(configurations.GetAbsoluteContributionPath() + contribution_id.ToString() + ".jpg"));
         src.Freeze();
         the_image = src;
         //window_manager.contributions.Add(contribution_id, src);
         e.Result = (object)contribution_id;
     }
     catch (Exception)
     {
         /// write log
         e.Result = -1;
     }
 }
コード例 #2
0
        private void button_submit_Click(object sender, RoutedEventArgs e)
        {
            reset();
            desc.Visibility = System.Windows.Visibility.Visible;
            if (textbox_name.Text == "")
            {
                textbox_name.BorderBrush = Brushes.Red;
                textbox_name.BorderThickness = new Thickness(5);
                desc.Text = "Name is empty.";
                textbox_name.Focus();
                log.WriteInteractionLog(37, "Name was empty.", ((TouchEventArgs)e).TouchDevice);
                return;
            }
            if (textbox_email.Text == "")
            {
                textbox_email.BorderBrush = Brushes.Red;
                textbox_email.BorderThickness = new Thickness(5);
                desc.Text = "Email is empty.";
                textbox_email.Focus();
                log.WriteInteractionLog(37, "Email was empty.", ((TouchEventArgs)e).TouchDevice);
                return;
            }
            if (!IsValid(textbox_email.Text))
            {
                textbox_email.BorderBrush = Brushes.Red;
                textbox_email.BorderThickness = new Thickness(5);
                desc.Text = "Enter a valid email address.";
                textbox_email.Focus();
                log.WriteInteractionLog(37, "Email was not valid.", ((TouchEventArgs)e).TouchDevice);
                return;
            }
            if (user_pin.IsEmpty())
            {
                user_pin.BorderBrush = Brushes.Red;
                user_pin.BorderThickness = new Thickness(5);
                desc.Text = "Choose a PIN.";
                user_pin.Focus();
                log.WriteInteractionLog(37, "PIN was empty.", ((TouchEventArgs)e).TouchDevice);
                return;
            }
            if (avatar_list_control.Tag == null)
            {
                avatar_border.BorderBrush = Brushes.Red;
                avatar_border.BorderThickness = new Thickness(5);
                desc.Text = "Please select an avatar.";
                avatar_image.Focus();
                log.WriteInteractionLog(37, "Avatar was empty.", ((TouchEventArgs)e).TouchDevice);
                return;
            }
            naturenet_dataclassDataContext db = new naturenet_dataclassDataContext();
            List<string> usernames = new List<string>();
            var r = from us in db.Users
                    select us.name;
            if (r != null)
                usernames = r.ToList<string>();
            if (UserExists(usernames, textbox_name.Text))
            {
                textbox_name.BorderBrush = Brushes.Red;
                textbox_name.BorderThickness = new Thickness(5);
                desc.Text = "This name has already been taken, choose another.";
                log.WriteInteractionLog(37, "User exists.", ((TouchEventArgs)e).TouchDevice);
                return;
            }

            User u = new User();
            u.name = textbox_name.Text;
            u.email = textbox_email.Text;
            u.avatar = (string)(avatar_list_control.Tag);
            u.password = user_pin.pin_string;

            //UnicodeEncoding encode = new UnicodeEncoding();
            //byte[] pass_byte = encode.GetBytes(textbox_password.Password);
            //SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
            //byte[] pass_hash = sha1.ComputeHash(pass_byte);

            string consent_checkboxes = "";
            if (checkbox_agreement1.IsChecked.Value)
                consent_checkboxes = consent_checkboxes + configurations.GetTextBlockText((TextBlock)(checkbox_agreement1.Content)) + ";" ;
            if (checkbox_agreement2.IsChecked.Value)
                consent_checkboxes = consent_checkboxes + configurations.GetTextBlockText((TextBlock)(checkbox_agreement2.Content)) + ";";
            if (checkbox_agreement3.IsChecked.Value)
                consent_checkboxes = consent_checkboxes + configurations.GetTextBlockText((TextBlock)(checkbox_agreement3.Content)) + ";";
            if (checkbox_agreement4.IsChecked.Value)
                consent_checkboxes = consent_checkboxes + configurations.GetTextBlockText((TextBlock)(checkbox_agreement4.Content));

            u.technical_info = textbox_name.Text + " signed the consent form on " + DateTime.Now.ToString() + "; " + consent_checkboxes;

            try
            {
                database_manager.InsertUser(u);
                desc.Text = "Congratulations!";
                //file_manager.add_user_to_googledrive(u.id, u.name, u.avatar);
                window_manager.close_signup_window((window_frame)parent, u.name);
                log.WriteInteractionLog(38, "Username="******"Could not complete the operation."; log.WriteErrorLog(ex); }
        }
コード例 #3
0
 public void get_all_users(object arg, DoWorkEventArgs e)
 {
     e.Result = (object)(new List<user_item>());
     try
     {
         naturenet_dataclassDataContext db = new naturenet_dataclassDataContext();
         var r = from u in db.Users
                 where u.id != 0
                 orderby u.name
                 select u;
         if (r == null)
         {
             e.Result = (object)(new List<user_item>());
             return;
         }
         List<user_item> users = new List<user_item>();
         foreach (User u in r)
         {
             user_item i = new user_item();
             ImageSource src = new BitmapImage(new Uri(configurations.GetAbsoluteAvatarPath() + u.avatar));
             src.Freeze();
             i.img = src;
             i.user = u;
             users.Add(i);
         }
         e.Result = (object)users;
     }
     catch (Exception ex)
     {
         log.WriteErrorLog(ex);
     }
 }
コード例 #4
0
 public void get_all_comments(object arg, DoWorkEventArgs e)
 {
     if (e.Argument == null) return;
     e.Result = (object)(new List<Feedback>());
     try
     {
         comment_item item = (comment_item)e.Argument;
         naturenet_dataclassDataContext db = new naturenet_dataclassDataContext();
         var r = from c in db.Feedbacks
                 where (c.Feedback_Type.name == "Comment") && (c.object_type == item._object_type.ToString())
                 && (c.object_id == item._object_id)
                 orderby c.date descending
                 select c;
         if (r != null)
         {
             List<Feedback> comments = r.ToList<Feedback>();
             e.Result = (object)comments;
         }
         else
         {
             e.Result = (object)(new List<Feedback>());
         }
     }
     catch (Exception ex)
     {
         log.WriteErrorLog(ex);
     }
 }
コード例 #5
0
 public void get_all_design_ideas(object arg, DoWorkEventArgs e)
 {
     e.Result = (object)(new List<design_idea_item>());
     try
     {
         naturenet_dataclassDataContext db = new naturenet_dataclassDataContext();
         var r = from d in db.Design_Ideas
                 orderby d.date descending
                 select d;
         if (r == null)
         {
             e.Result = (object)(new List<design_idea_item>());
             return;
         }
         List<design_idea_item> ideas = new List<design_idea_item>();
         foreach (Design_Idea d in r)
         {
             design_idea_item i = new design_idea_item();
             ImageSource src = new BitmapImage(new Uri(configurations.GetAbsoluteAvatarPath() + d.avatar));
             src.Freeze();
             i.img = src;
             i.design_idea = d;
             ideas.Add(i);
         }
         e.Result = (object)ideas;
     }
     catch (Exception ex)
     {
         log.WriteErrorLog(ex);
     }
 }
コード例 #6
0
 void submit_comment_auth_clicked(object sender, RoutedEventArgs e)
 {
     if (this.GetActiveTextBox().Text == "")
     {
         this.error_desc.Visibility = System.Windows.Visibility.Visible;
         this.error_desc.Content = "Comment text is empty.";
         if (is_reply)
             log.WriteInteractionLog(41, (hide_expander?"Idea":"Comment") + "; Reply id: " + reply_id + "; Text is empty; object_type: " + _object_type + "; object_id: " + _object_id.ToString(), ((TouchEventArgs)e).TouchDevice);
         else
             log.WriteInteractionLog(41, (hide_expander?"Idea":"Comment") + "; Text is empty; object_type: " + _object_type + "; object_id: " + _object_id.ToString(), ((TouchEventArgs)e).TouchDevice);
         return;
     }
     // authenticate
     naturenet_dataclassDataContext db = new naturenet_dataclassDataContext();
     var auth_user = from u in db.Users
                     where (u.name == this.selected_user.title.Text) && (u.password == this.pin.pin_string)
                     select u;
     if (auth_user.Count() == 1)
     {
         if (is_reply)
             log.WriteInteractionLog(31, (hide_expander ? "Idea" : "Comment") + "; Reply id: " + reply_id + "; Text: " + this.GetActiveTextBox().Text + "; object_type: " + _object_type + "; object_id: " + _object_id.ToString(), ((TouchEventArgs)e).TouchDevice);
         else
             log.WriteInteractionLog(31, (hide_expander ? "Idea" : "Comment") + "; Text: " + this.GetActiveTextBox().Text + "; object_type: " + _object_type + "; object_id: " + _object_id.ToString(), ((TouchEventArgs)e).TouchDevice);
         submit_text(e);
     }
     else
     {
         if (is_reply)
             log.WriteInteractionLog(30, (hide_expander?"Idea":"Comment") + "; Reply id: " + reply_id + "; Text: " + this.GetActiveTextBox().Text + "; object_type: " + _object_type + "; object_id: " + _object_id.ToString(), ((TouchEventArgs)e).TouchDevice);
         else
             log.WriteInteractionLog(30, (hide_expander ? "Idea" : "Comment") + "; Text: " + this.GetActiveTextBox().Text + "; object_type: " + _object_type + "; object_id: " + _object_id.ToString(), ((TouchEventArgs)e).TouchDevice);
         this.error_desc.Visibility = System.Windows.Visibility.Visible;
         this.error_desc.Content = configurations.authentication_failed_text;
         pin.Reset(true);
         error_timer = new System.Threading.Timer(new System.Threading.TimerCallback(this.fade_error), null, 5000, System.Threading.Timeout.Infinite);
     }
 }
コード例 #7
0
 public void get_all_activities(object arg, DoWorkEventArgs e)
 {
     e.Result = (object)(new List<Activity>());
     try
     {
         naturenet_dataclassDataContext db = new naturenet_dataclassDataContext();
         var r = from a in db.Activities
                 where (a.name != "Free Observation") && (a.name != "Design Idea")
                 select a;
         if (r != null)
         {
             List<Activity> activities = r.ToList<Activity>();
             e.Result = (object)activities;
         }
         else
         {
             e.Result = (object)(new List<Activity>());
         }
     }
     catch (Exception ex)
     {
         log.WriteErrorLog(ex);
     }
 }
コード例 #8
0
        public void get_all_contributions(object arg, DoWorkEventArgs e)
        {
            naturenet_dataclassDataContext db = new naturenet_dataclassDataContext();
            var result1 = from c in db.Collection_Contribution_Mappings
                          where (c.Collection.User.name == (string)e.Argument) && (c.Collection.activity_id != 1)
                          select c.Contribution;
            if (result1 == null)
            {
                e.Result = (object)(new List<collection_item>());
                return;
            }
            //List<int> contribution_ids = result1.ToList<int>();
            //var result2 = from m in db.Contributions
            //              where contribution_ids.Contains(m.id)
            //              select m;
            List<Contribution> medias = result1.ToList<Contribution>();
            List<collection_item> loaded_items = new List<collection_item>();
            loading_progress lp0 = new loading_progress();
            lp0.current_progress = 0; lp0.total = medias.Count;
            lp0.loaded_items = loaded_items;
            worker.ReportProgress(0, lp0);
            // download the image if there is no image
            // create thumbnail if there is no thumbnail
            List<collection_item> items = new List<collection_item>();

            for (int counter = 0; counter < medias.Count; counter++)
            {
                collection_item ci = create_collection_item_from_contribution(medias[counter]);
                items.Add(ci);
                loaded_items.Add(ci);
                loading_progress lp = new loading_progress();
                lp.current_progress = counter + 1;
                lp.total = medias.Count;
                lp.loaded_items = loaded_items;
                worker.ReportProgress(counter + 1, lp);
            }
            e.Result = (object)items;
        }
コード例 #9
0
        public void get_contributions_in_location(object arg, DoWorkEventArgs e)
        {
            naturenet_dataclassDataContext db = new naturenet_dataclassDataContext();
            var result1 = from c in db.Collection_Contribution_Mappings
                          where (c.Contribution.location_id == (int)e.Argument) && (c.Collection.activity_id != 1)
                          select c.Contribution;
            //var result1 = from c in db.Contributions
            //              where c.location_id == (int)e.Argument
            //              select c;
            if (result1 == null)
            {
                e.Result = (object)(new List<collection_item>());
                return;
            }
            List<Contribution> medias = result1.ToList<Contribution>();
            List<collection_item> loaded_items = new List<collection_item>();
            loading_progress lp0 = new loading_progress();
            lp0.current_progress = 0; lp0.total = medias.Count;
            lp0.loaded_items = loaded_items;
            worker.ReportProgress(0, lp0);

            List<collection_item> items = new List<collection_item>();
            for (int counter = 0; counter < medias.Count; counter++)
            {
                collection_item ci = create_collection_item_from_contribution(medias[counter]);
                items.Add(ci);
                loaded_items.Add(ci);
                loading_progress lp = new loading_progress();
                lp.current_progress = counter + 1;
                lp.total = medias.Count;
                lp.loaded_items = loaded_items;
                worker.ReportProgress(counter + 1, lp);
            }
            e.Result = (object)items;
        }
コード例 #10
0
 private void add_comment_items_for(Feedback c, ref int level, List<comment_item_generic> current_items, naturenet_dataclassDataContext db)
 {
     var r = from c2 in db.Feedbacks
             where (c2.Feedback_Type.name == "Comment") && (c2.parent_id == c.id)
             orderby c2.date descending
             select c2;
     if (r != null)
     {
         List<Feedback> comments = r.ToList<Feedback>();
         level++;
         List<List<comment_item_generic>> children_items = new List<List<comment_item_generic>>();
         foreach (Feedback f in comments)
         {
             List<comment_item_generic> tmp_list = new List<comment_item_generic>();
             int new_level = level;
             tmp_list.Add(create_comment_item(f, new_level));
             add_comment_items_for(f, ref new_level, tmp_list, db);
             add_children_to_list(tmp_list, children_items);
         }
         condense_lists(children_items, current_items);
     }
 }
コード例 #11
0
 public List<user_item> get_all_users()
 {
     try
     {
         naturenet_dataclassDataContext db = new naturenet_dataclassDataContext();
         var r = from u in db.Users
                 where u.id != 0
                 orderby u.name
                 select u;
         if (r == null)
         {
             return new List<user_item>();
         }
         List<user_item> users = new List<user_item>();
         foreach (User u in r)
         {
             var n1 = from m in db.Collection_Contribution_Mappings
                      where m.Collection.user_id == u.id
                      orderby m.Contribution.date descending
                      select m.Contribution.date;
             //var n2 = from f in db.Feedbacks
             //         where f.user_id == u.id
             //         orderby f.date descending
             //         select f.date;
             List<DateTime> n2 = null;
             int cnt = 0;
             if (n1 != null)
                 cnt = n1.Count();
             if (n2 != null)
                 cnt = cnt + n2.Count();
             user_item i = new user_item();
             ImageSource src = new BitmapImage(new Uri(configurations.GetAbsoluteAvatarPath() + u.avatar));
             src.Freeze();
             i.img = src;
             i.user = u;
             i.count = cnt;
             i.has_date = false;
             if (n1 != null)
             {
                 if (n1.Count() > 0)
                 {
                     i.last_date = n1.First();
                     i.has_date = true;
                 }
             }
             if (n2 != null)
             {
                 if (n2.Count() > 0)
                 {
                     if (i.has_date)
                     {
                         if (i.last_date.CompareTo(n2.First()) < 0)
                             i.last_date = n2.First();
                     }
                     else
                     {
                         i.last_date = n2.First();
                         i.has_date = true;
                     }
                 }
             }
             users.Add(i);
         }
         return users;
     }
     catch (Exception ex)
     {
         log.WriteErrorLog(ex);
         return new List<user_item>();
     }
 }
コード例 #12
0
 public List<design_idea_item> get_all_design_ideas()
 {
     try
     {
         naturenet_dataclassDataContext db = new naturenet_dataclassDataContext();
         var r = from d in db.Design_Ideas
                 orderby d.date descending
                 select d;
         if (r == null)
         {
             return new List<design_idea_item>();
         }
         List<design_idea_item> ideas = new List<design_idea_item>();
         foreach (Design_Idea d in r)
         {
             DateTime last_time = d.date;
             var n1 = from f in db.Feedbacks
                      where (f.object_type == "nature_net.Contribution") && (f.object_id == d.id)
                      orderby f.date descending
                      select f;
             int cnt = 0; int num_like = 0; int num_dislike = 0; int num_comments = 0;
             if (n1 != null)
                 cnt = n1.Count();
             if (cnt != 0)
             {
                 last_time = n1.First().date;
                 foreach (Feedback f2 in n1)
                 {
                     if (f2.Feedback_Type.name == "Like")
                         if (Convert.ToBoolean(f2.note))
                             num_like++;
                         else
                             num_dislike++;
                     if (f2.Feedback_Type.name == "Comment")
                         num_comments++;
                 }
             }
             design_idea_item i = new design_idea_item();
             ImageSource src = new BitmapImage(new Uri(configurations.GetAbsoluteAvatarPath() + d.avatar));
             src.Freeze();
             i.img = src;
             i.design_idea = d;
             i.count = num_comments;
             i.last_date = last_time;
             i.num_dislike = num_dislike;
             i.num_like = num_like;
             ideas.Add(i);
         }
         return ideas;
     }
     catch (Exception ex)
     {
         log.WriteErrorLog(ex);
         return new List<design_idea_item>();
     }
 }
コード例 #13
0
 public void get_all_comments(object arg, DoWorkEventArgs e)
 {
     if (e.Argument == null) return;
     e.Result = (object)(new List<comment_item_generic>());
     try
     {
         comment_item item = (comment_item)e.Argument;
         naturenet_dataclassDataContext db = new naturenet_dataclassDataContext();
         var r = from c in db.Feedbacks
                 where (c.Feedback_Type.name == "Comment") && (c.object_type == item._object_type.ToString())
                 && (c.object_id == item._object_id) && (c.parent_id == 0)
                 orderby c.date descending
                 select c;
         if (r != null)
         {
             List<Feedback> comments = r.ToList<Feedback>();
             List<comment_item_generic> comment_items = new List<comment_item_generic>();
             List<List<comment_item_generic>> children_items = new List<List<comment_item_generic>>();
             for (int counter=0;counter<comments.Count; counter++)
             {
                 Feedback f = comments[counter];
                 int level = 0;
                 List<comment_item_generic> tmp_list = new List<comment_item_generic>();
                 tmp_list.Add(create_comment_item(f, level));
                 add_comment_items_for(f, ref level, tmp_list, db);
                 add_children_to_list(tmp_list, children_items);
             }
             condense_lists(children_items, comment_items);
             e.Result = (object)comment_items;
         }
         else
         {
             e.Result = (object)(new List<comment_item_generic>());
         }
     }
     catch (Exception ex)
     {
         log.WriteErrorLog(ex);
     }
 }
コード例 #14
0
        public void get_all_activities(object arg, DoWorkEventArgs e)
        {
            e.Result = (object)(new List<activity_item>());
            try
            {
                naturenet_dataclassDataContext db = new naturenet_dataclassDataContext();
                var r = from a in db.Activities
                        where (a.name != "Free Observation") && (a.name != "Design Idea")
                        select a;
                if (r != null)
                {
                    //List<Activity> activities = r.ToList<Activity>();
                    List<activity_item> activity_items = new List<activity_item>();
                    foreach (Activity a in r)
                    {
                        DateTime last_time = a.creation_date;
                        var n1 = from m in db.Collection_Contribution_Mappings
                                 where m.Collection.activity_id == a.id
                                 orderby m.Contribution.date descending
                                 select new { m.Contribution.date, m.Collection.User.name };
                        int cnt = 0;
                        if (n1 != null)
                            cnt = n1.Count();

                        activity_item ai = new activity_item();
                        ai.activity = a;
                        ai.count = cnt;
                        if (cnt != 0)
                            ai.username = n1.First().name;
                        else
                            ai.username = "";
                        if (cnt != 0)
                            last_time = n1.First().date;

                        ai.last_date = last_time;
                        activity_items.Add(ai);
                    }
                    e.Result = (object)activity_items;
                }
                else
                {
                    e.Result = (object)(new List<activity_item>());
                }
            }
            catch (Exception ex)
            {
                log.WriteErrorLog(ex);
            }
        }