<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ygui2</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ygui2"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Ygui2"/>
	<updated>2026-05-16T18:42:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017&amp;diff=113813</id>
		<title>CSC/ECE 517 Fall 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017&amp;diff=113813"/>
		<updated>2017-11-28T04:25:20Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Design Project Documentation'''&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A2 Lightweight Badging System]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A8. Use a profiler to identify the problems / pages that take some time to load &amp;amp; fix them]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1793.  Help students find teams to join]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A4 Allow calibration to be part of an assignment]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A0 Team-based reviewing]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1793. Help students find teams to join_Team1964]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1791. Track the time that students look at the other submissions - logging improvement]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1799 Improve self-review Link peer review &amp;amp; self-review to derive grades]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1797_Timestamps_for_students_submissions]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E17A1|CSC/ECE_517_Fall_2017/E17A1 - Let experts as well as students do reviews]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/M1753_OffscreenCanvas]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/M1754_Mutation_Testing]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1794. Student-generated questions added to rubric]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1795 Single signon for Peerlogic web services (WS intergration)]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A6. Fix account creation over web to work reasonably]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1792 OSS Visualizations for instructors]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A4 Allow calibration to be part of an assignment_Team34]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A7_Allow_Reviewers_to_bid_on_what_to_review]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A9 Lazy loading (infinite scroll) for assignments courses questionnaires and user lists with Jscroll]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1796. Unify Create Assignment and Edit Assignment pages]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A5 Allow users to create an account and submit work to an &amp;quot;assignment&amp;quot; (e.g., for conference reviewing)]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A3 Upgrade review input UI and sanitize text input]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17AA Nomination for Badges]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1790 Text metrics]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A1 Expert Review.rb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Writing Assignment 2'''&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1779. Fix teammate advertisements and requests to join a team]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1773 Investigate and Fix Expertiza Production Version Runtime Exceptions.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1774 Metareview fixes and improvements.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1788 OSS project Maroon Heatmap fixes]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1781 Topic Management]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1745_Refactor_response_controller.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1752 Refactor assignments controller]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1776_Enhance_Imports]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1756 TLD Refactor response.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1772_Refactor reputation_web_service_controller.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/M1753_OffscreenCanvas API]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/M1754_Mutation Testing on Servo]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1753 OSS project bidding tests]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1766_Test team functionality]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1767 Improve imports]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1786_OSS project Juniper Bookmark Enhancements]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1787_OSS project Bronze Score calculations]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1763 Fix Staggered-Deadline Assignments]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1757 Introduce a Student View for instructors]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1769_Refactor assignment_form.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1754_Feature_test_of_rubric_advice]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1748 Add past-due assignments to task list]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1761 Test First Development Refactor assignment.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1780_OSS_Project_Teal_Email_Notification_Enhancements]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1762 Test various kinds of response-map hierarchies]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1759 ]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1749_Test First Development Refactor questionnaire_controller.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1771_Refactor_team.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1784 Fix mass assignments reported by Brakeman.rb]]&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017&amp;diff=113812</id>
		<title>CSC/ECE 517 Fall 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017&amp;diff=113812"/>
		<updated>2017-11-28T04:24:59Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Design Project Documentation'''&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A2 Lightweight Badging System]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A8. Use a profiler to identify the problems / pages that take some time to load &amp;amp; fix them]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1793_Team2607.  Help students find teams to join]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A4 Allow calibration to be part of an assignment]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A0 Team-based reviewing]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1793. Help students find teams to join_Team1964]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1791. Track the time that students look at the other submissions - logging improvement]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1799 Improve self-review Link peer review &amp;amp; self-review to derive grades]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1797_Timestamps_for_students_submissions]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E17A1|CSC/ECE_517_Fall_2017/E17A1 - Let experts as well as students do reviews]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/M1753_OffscreenCanvas]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/M1754_Mutation_Testing]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1794. Student-generated questions added to rubric]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1795 Single signon for Peerlogic web services (WS intergration)]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A6. Fix account creation over web to work reasonably]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1792 OSS Visualizations for instructors]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A4 Allow calibration to be part of an assignment_Team34]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A7_Allow_Reviewers_to_bid_on_what_to_review]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A9 Lazy loading (infinite scroll) for assignments courses questionnaires and user lists with Jscroll]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1796. Unify Create Assignment and Edit Assignment pages]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A5 Allow users to create an account and submit work to an &amp;quot;assignment&amp;quot; (e.g., for conference reviewing)]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A3 Upgrade review input UI and sanitize text input]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17AA Nomination for Badges]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1790 Text metrics]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A1 Expert Review.rb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Writing Assignment 2'''&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1779. Fix teammate advertisements and requests to join a team]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1773 Investigate and Fix Expertiza Production Version Runtime Exceptions.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1774 Metareview fixes and improvements.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1788 OSS project Maroon Heatmap fixes]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1781 Topic Management]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1745_Refactor_response_controller.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1752 Refactor assignments controller]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1776_Enhance_Imports]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1756 TLD Refactor response.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1772_Refactor reputation_web_service_controller.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/M1753_OffscreenCanvas API]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/M1754_Mutation Testing on Servo]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1753 OSS project bidding tests]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1766_Test team functionality]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1767 Improve imports]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1786_OSS project Juniper Bookmark Enhancements]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1787_OSS project Bronze Score calculations]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1763 Fix Staggered-Deadline Assignments]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1757 Introduce a Student View for instructors]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1769_Refactor assignment_form.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1754_Feature_test_of_rubric_advice]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1748 Add past-due assignments to task list]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1761 Test First Development Refactor assignment.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1780_OSS_Project_Teal_Email_Notification_Enhancements]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1762 Test various kinds of response-map hierarchies]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1759 ]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1749_Test First Development Refactor questionnaire_controller.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1771_Refactor_team.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1784 Fix mass assignments reported by Brakeman.rb]]&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017&amp;diff=113811</id>
		<title>CSC/ECE 517 Fall 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017&amp;diff=113811"/>
		<updated>2017-11-28T04:23:50Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Design Project Documentation'''&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A2 Lightweight Badging System]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A8. Use a profiler to identify the problems / pages that take some time to load &amp;amp; fix them]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1793_Team2607  Help students find teams to join]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A4 Allow calibration to be part of an assignment]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A0 Team-based reviewing]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1793. Help students find teams to join_Team1964]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1791. Track the time that students look at the other submissions - logging improvement]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1799 Improve self-review Link peer review &amp;amp; self-review to derive grades]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1797_Timestamps_for_students_submissions]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E17A1|CSC/ECE_517_Fall_2017/E17A1 - Let experts as well as students do reviews]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/M1753_OffscreenCanvas]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/M1754_Mutation_Testing]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1794. Student-generated questions added to rubric]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1795 Single signon for Peerlogic web services (WS intergration)]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A6. Fix account creation over web to work reasonably]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1792 OSS Visualizations for instructors]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A4 Allow calibration to be part of an assignment_Team34]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A7_Allow_Reviewers_to_bid_on_what_to_review]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A9 Lazy loading (infinite scroll) for assignments courses questionnaires and user lists with Jscroll]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1796. Unify Create Assignment and Edit Assignment pages]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A5 Allow users to create an account and submit work to an &amp;quot;assignment&amp;quot; (e.g., for conference reviewing)]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A3 Upgrade review input UI and sanitize text input]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17AA Nomination for Badges]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1790 Text metrics]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A1 Expert Review.rb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Writing Assignment 2'''&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1779. Fix teammate advertisements and requests to join a team]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1773 Investigate and Fix Expertiza Production Version Runtime Exceptions.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1774 Metareview fixes and improvements.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1788 OSS project Maroon Heatmap fixes]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1781 Topic Management]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1745_Refactor_response_controller.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1752 Refactor assignments controller]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1776_Enhance_Imports]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1756 TLD Refactor response.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1772_Refactor reputation_web_service_controller.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/M1753_OffscreenCanvas API]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/M1754_Mutation Testing on Servo]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1753 OSS project bidding tests]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1766_Test team functionality]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1767 Improve imports]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1786_OSS project Juniper Bookmark Enhancements]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1787_OSS project Bronze Score calculations]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1763 Fix Staggered-Deadline Assignments]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1757 Introduce a Student View for instructors]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1769_Refactor assignment_form.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1754_Feature_test_of_rubric_advice]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1748 Add past-due assignments to task list]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1761 Test First Development Refactor assignment.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1780_OSS_Project_Teal_Email_Notification_Enhancements]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1762 Test various kinds of response-map hierarchies]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1759 ]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1749_Test First Development Refactor questionnaire_controller.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1771_Refactor_team.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1784 Fix mass assignments reported by Brakeman.rb]]&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017&amp;diff=113810</id>
		<title>CSC/ECE 517 Fall 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017&amp;diff=113810"/>
		<updated>2017-11-28T04:23:36Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Design Project Documentation'''&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A2 Lightweight Badging System]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A8. Use a profiler to identify the problems / pages that take some time to load &amp;amp; fix them]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1793__Team2607  Help students find teams to join]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A4 Allow calibration to be part of an assignment]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A0 Team-based reviewing]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1793. Help students find teams to join_Team1964]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1791. Track the time that students look at the other submissions - logging improvement]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1799 Improve self-review Link peer review &amp;amp; self-review to derive grades]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1797_Timestamps_for_students_submissions]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E17A1|CSC/ECE_517_Fall_2017/E17A1 - Let experts as well as students do reviews]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/M1753_OffscreenCanvas]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/M1754_Mutation_Testing]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1794. Student-generated questions added to rubric]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1795 Single signon for Peerlogic web services (WS intergration)]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A6. Fix account creation over web to work reasonably]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1792 OSS Visualizations for instructors]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A4 Allow calibration to be part of an assignment_Team34]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A7_Allow_Reviewers_to_bid_on_what_to_review]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A9 Lazy loading (infinite scroll) for assignments courses questionnaires and user lists with Jscroll]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1796. Unify Create Assignment and Edit Assignment pages]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A5 Allow users to create an account and submit work to an &amp;quot;assignment&amp;quot; (e.g., for conference reviewing)]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A3 Upgrade review input UI and sanitize text input]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17AA Nomination for Badges]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1790 Text metrics]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E17A1 Expert Review.rb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Writing Assignment 2'''&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1779. Fix teammate advertisements and requests to join a team]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1773 Investigate and Fix Expertiza Production Version Runtime Exceptions.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1774 Metareview fixes and improvements.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1788 OSS project Maroon Heatmap fixes]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1781 Topic Management]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1745_Refactor_response_controller.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1752 Refactor assignments controller]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1776_Enhance_Imports]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1756 TLD Refactor response.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1772_Refactor reputation_web_service_controller.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/M1753_OffscreenCanvas API]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/M1754_Mutation Testing on Servo]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1753 OSS project bidding tests]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1766_Test team functionality]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1767 Improve imports]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1786_OSS project Juniper Bookmark Enhancements]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1787_OSS project Bronze Score calculations]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1763 Fix Staggered-Deadline Assignments]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1757 Introduce a Student View for instructors]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1769_Refactor assignment_form.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1754_Feature_test_of_rubric_advice]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1748 Add past-due assignments to task list]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1761 Test First Development Refactor assignment.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1780_OSS_Project_Teal_Email_Notification_Enhancements]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1762 Test various kinds of response-map hierarchies]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1759 ]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1749_Test First Development Refactor questionnaire_controller.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1771_Refactor_team.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1784 Fix mass assignments reported by Brakeman.rb]]&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113809</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113809"/>
		<updated>2017-11-28T04:21:28Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Screenshots of new feature */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
==Modified Files ==&lt;br /&gt;
1)app/views/student_teams/view.html.erb&lt;br /&gt;
&lt;br /&gt;
2)app/views/join_team_requests/_list_received.erb&lt;br /&gt;
&lt;br /&gt;
3)app/controllers/join_team_requests_controller.rb&lt;br /&gt;
&lt;br /&gt;
4)app/models/join_team_request.rb&lt;br /&gt;
&lt;br /&gt;
5)app/models/sign_up_sheet.rb&lt;br /&gt;
&lt;br /&gt;
6)app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
&lt;br /&gt;
7)app/views/sign_up_sheet/_all_actions.html.erb&lt;br /&gt;
&lt;br /&gt;
8)app/views/teams/list.html.erb&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
===Issue1===&lt;br /&gt;
When someone creates an ad ,the horny icon does not  appear in the the last column of the signup sheet.the code that show horny icon is below:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;% if SignUpSheet.has_teammate_ads?(topic.id) %&amp;gt;&lt;br /&gt;
 &amp;lt;%= link_to image_tag('ad.png', :border =&amp;gt; 0, :title =&amp;gt; 'Ad', :align =&amp;gt; 'middle', :style =&amp;gt; 'width: 24px; height:24px'), :controller=&amp;gt;'sign_up_sheet', &lt;br /&gt;
 :action=&amp;gt; 'show_team',assignment_id=&amp;gt;@assignment.id, :id=&amp;gt;topic.id%&amp;gt;&lt;br /&gt;
 &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After debugging ,I found even if you create an ad before ,the if block of code will not be executed. Therefore something must be wrong with has_teammate_ads? method.Then I rewrite that method.Signupteam has an attribute:advertise_for_partner ,it will be set true after team members create an ad for their team.i  return this attribute to the has_teammate_ads? method and the horny icon appears.This method code is below:&lt;br /&gt;
   def self.has_teammate_ads?(topic_id)&lt;br /&gt;
     @ads_exsit=false&lt;br /&gt;
     @result=SignedUpTeam.where(&amp;quot;topic_id = ?&amp;quot;, topic_id.to_s)&lt;br /&gt;
     @result.each do |result|&lt;br /&gt;
      team=result.team&lt;br /&gt;
      @ads_exsit=team.advertise_for_partner&lt;br /&gt;
      end&lt;br /&gt;
      @ads_exsit&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
===Issue2===&lt;br /&gt;
I found currently when you sent join team request in the ad,the team received that request would see invite and decline button on their student teams#view page.if they are willing to add the student who send request as member ,they have to send invitation and wait for reply. This is not reasonable and convenient. what should happen is that when the student send join team request,the team members could see accept and decline button ,After they click accept button ,the student would leave his/her original team and join the new team. &lt;br /&gt;
What I have done is that I  add accept method in join team request controller.The method is below:&lt;br /&gt;
 &lt;br /&gt;
   def accept&lt;br /&gt;
      unless JoinTeamRequest.accept_invite(params[:team_id], @inviter_userid,  @invited_userid, @assignment_id)&lt;br /&gt;
      flash[:error] = 'The system failed to add you to the team that invited you.'&lt;br /&gt;
     end&lt;br /&gt;
     redirect_to view_student_teams_path student_id: params[:student_id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
Here @invited_userid is acquired from the student who sent join team request. inviter_userid is from the team members who received the request.  team_id is invited student's team id.&lt;br /&gt;
&lt;br /&gt;
===Issue3===&lt;br /&gt;
&lt;br /&gt;
We build a new feature to help students find teams to join. Students who do not have teams or whose team is not full are able to see a list of students who do not haven a team.The code for this issue is showed below:&lt;br /&gt;
  &amp;lt;% if @student.user_id!=nil %&amp;gt;&lt;br /&gt;
  &amp;lt;%if @student.assignment.max_team_size &amp;gt; 1 %&amp;gt;&lt;br /&gt;
  &amp;lt;% if @student.team==nil|| !@student.team.full? %&amp;gt;&lt;br /&gt;
  Students without teams&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;%if @student.team==nil&lt;br /&gt;
             @teamid=&amp;quot;0&amp;quot;&lt;br /&gt;
           else&lt;br /&gt;
           @teamid=@student.team.id&lt;br /&gt;
         end%&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%=  form_tag :controller =&amp;gt; 'invitations', :action =&amp;gt; 'create' do %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'team_id', @teamid %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'student_id', @student.id %&amp;gt;&lt;br /&gt;
             &amp;lt;%= hidden_field_tag 'session[:dummy][:assignment_id]', @student.parent_id %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'user[name]',  participant.user.name%&amp;gt;&lt;br /&gt;
              &amp;lt;%=  submit_tag &amp;quot;invite&amp;quot;%&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
               &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
           &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;/table&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the code above, if @student.assignment.max_team_size &amp;gt; 1 we then execute the below code ,this is because our new feature is only available when assignment team size greater than 1.we use  if @student.team==nil|| !@student.team.full?  to allow students who have no team or whose team is not full to see this list.Next we found all participants ,we use if statement to sample those who has no team , their role are students and they won't see themselves if they do not have teams.We then put these sampled participants on the list .these achieved by the code below&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
We also need to add invitation links next to students without teams,before adding links , we need to know whether  students who want to invite the students on the list have team or not .if they do not have their own teams. we will automatically create a team for them ,this mechanism is called team lazy initialization.the code for this part is below&lt;br /&gt;
       &amp;lt;%if @student.team==nil&lt;br /&gt;
       @teamid=&amp;quot;0&amp;quot;&lt;br /&gt;
       else&lt;br /&gt;
       @teamid=@student.team.id&lt;br /&gt;
       end%&amp;gt;&lt;br /&gt;
       def check_inviterteam_before_invitation&lt;br /&gt;
      @student = AssignmentParticipant.find(params[:student_id])&lt;br /&gt;
      @team_id=params[:team_id]&lt;br /&gt;
      if @team_id==&amp;quot;0&amp;quot;&lt;br /&gt;
      team = AssignmentTeam.create_team_and_node(@student.parent_id)&lt;br /&gt;
      user = User.find(@student.user_id)&lt;br /&gt;
      # create TeamsUser and TeamUserNode&lt;br /&gt;
      teamuser = ApplicationController.helpers.create_team_users(user, team.id)&lt;br /&gt;
      @team_id=team.id&lt;br /&gt;
      end&lt;br /&gt;
      end&lt;br /&gt;
Finally we just use form_tag to create invite button which is related to invitation controller and create method in it .&lt;br /&gt;
&lt;br /&gt;
===Issue4===&lt;br /&gt;
we also display a list of students who do not have team in teams#list page for instructor.This part of code is showed below.&lt;br /&gt;
      &amp;lt;% @assignment.participants.each do |participant| %&amp;gt; &amp;lt;!--start team member content--&amp;gt;&lt;br /&gt;
      &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
       &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
     &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Screenshots of new feature==&lt;br /&gt;
1)The horny icons appear in the the last column of the signup sheet.&lt;br /&gt;
[[File:30.png]]&lt;br /&gt;
[[File:31.png]]&lt;br /&gt;
&lt;br /&gt;
2)Received request  from advertisement  and the changed team members after clicking accept button.&lt;br /&gt;
[[File:32.png]]&lt;br /&gt;
[[File:33.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3)For student end ,the list of students who do not have a team with invitation links&lt;br /&gt;
[[File:35.png]]&lt;br /&gt;
&lt;br /&gt;
4)For instructor end ,the list of students who do not have a team.&lt;br /&gt;
[[File:36.png]]&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:36.png&amp;diff=113808</id>
		<title>File:36.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:36.png&amp;diff=113808"/>
		<updated>2017-11-28T04:21:02Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:35.png&amp;diff=113807</id>
		<title>File:35.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:35.png&amp;diff=113807"/>
		<updated>2017-11-28T04:15:19Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:34.png&amp;diff=113806</id>
		<title>File:34.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:34.png&amp;diff=113806"/>
		<updated>2017-11-28T04:13:09Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113805</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113805"/>
		<updated>2017-11-28T04:09:43Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Screenshots of new feature */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
==Modified Files ==&lt;br /&gt;
1)app/views/student_teams/view.html.erb&lt;br /&gt;
&lt;br /&gt;
2)app/views/join_team_requests/_list_received.erb&lt;br /&gt;
&lt;br /&gt;
3)app/controllers/join_team_requests_controller.rb&lt;br /&gt;
&lt;br /&gt;
4)app/models/join_team_request.rb&lt;br /&gt;
&lt;br /&gt;
5)app/models/sign_up_sheet.rb&lt;br /&gt;
&lt;br /&gt;
6)app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
&lt;br /&gt;
7)app/views/sign_up_sheet/_all_actions.html.erb&lt;br /&gt;
&lt;br /&gt;
8)app/views/teams/list.html.erb&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
===Issue1===&lt;br /&gt;
When someone creates an ad ,the horny icon does not  appear in the the last column of the signup sheet.the code that show horny icon is below:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;% if SignUpSheet.has_teammate_ads?(topic.id) %&amp;gt;&lt;br /&gt;
 &amp;lt;%= link_to image_tag('ad.png', :border =&amp;gt; 0, :title =&amp;gt; 'Ad', :align =&amp;gt; 'middle', :style =&amp;gt; 'width: 24px; height:24px'), :controller=&amp;gt;'sign_up_sheet', &lt;br /&gt;
 :action=&amp;gt; 'show_team',assignment_id=&amp;gt;@assignment.id, :id=&amp;gt;topic.id%&amp;gt;&lt;br /&gt;
 &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After debugging ,I found even if you create an ad before ,the if block of code will not be executed. Therefore something must be wrong with has_teammate_ads? method.Then I rewrite that method.Signupteam has an attribute:advertise_for_partner ,it will be set true after team members create an ad for their team.i  return this attribute to the has_teammate_ads? method and the horny icon appears.This method code is below:&lt;br /&gt;
   def self.has_teammate_ads?(topic_id)&lt;br /&gt;
     @ads_exsit=false&lt;br /&gt;
     @result=SignedUpTeam.where(&amp;quot;topic_id = ?&amp;quot;, topic_id.to_s)&lt;br /&gt;
     @result.each do |result|&lt;br /&gt;
      team=result.team&lt;br /&gt;
      @ads_exsit=team.advertise_for_partner&lt;br /&gt;
      end&lt;br /&gt;
      @ads_exsit&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
===Issue2===&lt;br /&gt;
I found currently when you sent join team request in the ad,the team received that request would see invite and decline button on their student teams#view page.if they are willing to add the student who send request as member ,they have to send invitation and wait for reply. This is not reasonable and convenient. what should happen is that when the student send join team request,the team members could see accept and decline button ,After they click accept button ,the student would leave his/her original team and join the new team. &lt;br /&gt;
What I have done is that I  add accept method in join team request controller.The method is below:&lt;br /&gt;
 &lt;br /&gt;
   def accept&lt;br /&gt;
      unless JoinTeamRequest.accept_invite(params[:team_id], @inviter_userid,  @invited_userid, @assignment_id)&lt;br /&gt;
      flash[:error] = 'The system failed to add you to the team that invited you.'&lt;br /&gt;
     end&lt;br /&gt;
     redirect_to view_student_teams_path student_id: params[:student_id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
Here @invited_userid is acquired from the student who sent join team request. inviter_userid is from the team members who received the request.  team_id is invited student's team id.&lt;br /&gt;
&lt;br /&gt;
===Issue3===&lt;br /&gt;
&lt;br /&gt;
We build a new feature to help students find teams to join. Students who do not have teams or whose team is not full are able to see a list of students who do not haven a team.The code for this issue is showed below:&lt;br /&gt;
  &amp;lt;% if @student.user_id!=nil %&amp;gt;&lt;br /&gt;
  &amp;lt;%if @student.assignment.max_team_size &amp;gt; 1 %&amp;gt;&lt;br /&gt;
  &amp;lt;% if @student.team==nil|| !@student.team.full? %&amp;gt;&lt;br /&gt;
  Students without teams&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;%if @student.team==nil&lt;br /&gt;
             @teamid=&amp;quot;0&amp;quot;&lt;br /&gt;
           else&lt;br /&gt;
           @teamid=@student.team.id&lt;br /&gt;
         end%&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%=  form_tag :controller =&amp;gt; 'invitations', :action =&amp;gt; 'create' do %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'team_id', @teamid %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'student_id', @student.id %&amp;gt;&lt;br /&gt;
             &amp;lt;%= hidden_field_tag 'session[:dummy][:assignment_id]', @student.parent_id %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'user[name]',  participant.user.name%&amp;gt;&lt;br /&gt;
              &amp;lt;%=  submit_tag &amp;quot;invite&amp;quot;%&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
               &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
           &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;/table&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the code above, if @student.assignment.max_team_size &amp;gt; 1 we then execute the below code ,this is because our new feature is only available when assignment team size greater than 1.we use  if @student.team==nil|| !@student.team.full?  to allow students who have no team or whose team is not full to see this list.Next we found all participants ,we use if statement to sample those who has no team , their role are students and they won't see themselves if they do not have teams.We then put these sampled participants on the list .these achieved by the code below&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
We also need to add invitation links next to students without teams,before adding links , we need to know whether  students who want to invite the students on the list have team or not .if they do not have their own teams. we will automatically create a team for them ,this mechanism is called team lazy initialization.the code for this part is below&lt;br /&gt;
       &amp;lt;%if @student.team==nil&lt;br /&gt;
       @teamid=&amp;quot;0&amp;quot;&lt;br /&gt;
       else&lt;br /&gt;
       @teamid=@student.team.id&lt;br /&gt;
       end%&amp;gt;&lt;br /&gt;
       def check_inviterteam_before_invitation&lt;br /&gt;
      @student = AssignmentParticipant.find(params[:student_id])&lt;br /&gt;
      @team_id=params[:team_id]&lt;br /&gt;
      if @team_id==&amp;quot;0&amp;quot;&lt;br /&gt;
      team = AssignmentTeam.create_team_and_node(@student.parent_id)&lt;br /&gt;
      user = User.find(@student.user_id)&lt;br /&gt;
      # create TeamsUser and TeamUserNode&lt;br /&gt;
      teamuser = ApplicationController.helpers.create_team_users(user, team.id)&lt;br /&gt;
      @team_id=team.id&lt;br /&gt;
      end&lt;br /&gt;
      end&lt;br /&gt;
Finally we just use form_tag to create invite button which is related to invitation controller and create method in it .&lt;br /&gt;
&lt;br /&gt;
===Issue4===&lt;br /&gt;
we also display a list of students who do not have team in teams#list page for instructor.This part of code is showed below.&lt;br /&gt;
      &amp;lt;% @assignment.participants.each do |participant| %&amp;gt; &amp;lt;!--start team member content--&amp;gt;&lt;br /&gt;
      &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
       &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
     &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Screenshots of new feature==&lt;br /&gt;
1)The horny icons appear in the the last column of the signup sheet.&lt;br /&gt;
[[File:30.png]]&lt;br /&gt;
[[File:31.png]]&lt;br /&gt;
&lt;br /&gt;
2)Received request  from advertisement  and the changed team members after clicking accept button.&lt;br /&gt;
[[File:32.png]]&lt;br /&gt;
[[File:33.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3)For student end ,the list of students who do not have a team with invitation links&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:33.png&amp;diff=113804</id>
		<title>File:33.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:33.png&amp;diff=113804"/>
		<updated>2017-11-28T04:08:33Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:32.png&amp;diff=113803</id>
		<title>File:32.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:32.png&amp;diff=113803"/>
		<updated>2017-11-28T04:07:32Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113802</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113802"/>
		<updated>2017-11-28T03:50:25Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Issue3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
==Modified Files ==&lt;br /&gt;
1)app/views/student_teams/view.html.erb&lt;br /&gt;
&lt;br /&gt;
2)app/views/join_team_requests/_list_received.erb&lt;br /&gt;
&lt;br /&gt;
3)app/controllers/join_team_requests_controller.rb&lt;br /&gt;
&lt;br /&gt;
4)app/models/join_team_request.rb&lt;br /&gt;
&lt;br /&gt;
5)app/models/sign_up_sheet.rb&lt;br /&gt;
&lt;br /&gt;
6)app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
&lt;br /&gt;
7)app/views/sign_up_sheet/_all_actions.html.erb&lt;br /&gt;
&lt;br /&gt;
8)app/views/teams/list.html.erb&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
===Issue1===&lt;br /&gt;
When someone creates an ad ,the horny icon does not  appear in the the last column of the signup sheet.the code that show horny icon is below:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;% if SignUpSheet.has_teammate_ads?(topic.id) %&amp;gt;&lt;br /&gt;
 &amp;lt;%= link_to image_tag('ad.png', :border =&amp;gt; 0, :title =&amp;gt; 'Ad', :align =&amp;gt; 'middle', :style =&amp;gt; 'width: 24px; height:24px'), :controller=&amp;gt;'sign_up_sheet', &lt;br /&gt;
 :action=&amp;gt; 'show_team',assignment_id=&amp;gt;@assignment.id, :id=&amp;gt;topic.id%&amp;gt;&lt;br /&gt;
 &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After debugging ,I found even if you create an ad before ,the if block of code will not be executed. Therefore something must be wrong with has_teammate_ads? method.Then I rewrite that method.Signupteam has an attribute:advertise_for_partner ,it will be set true after team members create an ad for their team.i  return this attribute to the has_teammate_ads? method and the horny icon appears.This method code is below:&lt;br /&gt;
   def self.has_teammate_ads?(topic_id)&lt;br /&gt;
     @ads_exsit=false&lt;br /&gt;
     @result=SignedUpTeam.where(&amp;quot;topic_id = ?&amp;quot;, topic_id.to_s)&lt;br /&gt;
     @result.each do |result|&lt;br /&gt;
      team=result.team&lt;br /&gt;
      @ads_exsit=team.advertise_for_partner&lt;br /&gt;
      end&lt;br /&gt;
      @ads_exsit&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
===Issue2===&lt;br /&gt;
I found currently when you sent join team request in the ad,the team received that request would see invite and decline button on their student teams#view page.if they are willing to add the student who send request as member ,they have to send invitation and wait for reply. This is not reasonable and convenient. what should happen is that when the student send join team request,the team members could see accept and decline button ,After they click accept button ,the student would leave his/her original team and join the new team. &lt;br /&gt;
What I have done is that I  add accept method in join team request controller.The method is below:&lt;br /&gt;
 &lt;br /&gt;
   def accept&lt;br /&gt;
      unless JoinTeamRequest.accept_invite(params[:team_id], @inviter_userid,  @invited_userid, @assignment_id)&lt;br /&gt;
      flash[:error] = 'The system failed to add you to the team that invited you.'&lt;br /&gt;
     end&lt;br /&gt;
     redirect_to view_student_teams_path student_id: params[:student_id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
Here @invited_userid is acquired from the student who sent join team request. inviter_userid is from the team members who received the request.  team_id is invited student's team id.&lt;br /&gt;
&lt;br /&gt;
===Issue3===&lt;br /&gt;
&lt;br /&gt;
We build a new feature to help students find teams to join. Students who do not have teams or whose team is not full are able to see a list of students who do not haven a team.The code for this issue is showed below:&lt;br /&gt;
  &amp;lt;% if @student.user_id!=nil %&amp;gt;&lt;br /&gt;
  &amp;lt;%if @student.assignment.max_team_size &amp;gt; 1 %&amp;gt;&lt;br /&gt;
  &amp;lt;% if @student.team==nil|| !@student.team.full? %&amp;gt;&lt;br /&gt;
  Students without teams&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;%if @student.team==nil&lt;br /&gt;
             @teamid=&amp;quot;0&amp;quot;&lt;br /&gt;
           else&lt;br /&gt;
           @teamid=@student.team.id&lt;br /&gt;
         end%&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%=  form_tag :controller =&amp;gt; 'invitations', :action =&amp;gt; 'create' do %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'team_id', @teamid %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'student_id', @student.id %&amp;gt;&lt;br /&gt;
             &amp;lt;%= hidden_field_tag 'session[:dummy][:assignment_id]', @student.parent_id %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'user[name]',  participant.user.name%&amp;gt;&lt;br /&gt;
              &amp;lt;%=  submit_tag &amp;quot;invite&amp;quot;%&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
               &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
           &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;/table&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the code above, if @student.assignment.max_team_size &amp;gt; 1 we then execute the below code ,this is because our new feature is only available when assignment team size greater than 1.we use  if @student.team==nil|| !@student.team.full?  to allow students who have no team or whose team is not full to see this list.Next we found all participants ,we use if statement to sample those who has no team , their role are students and they won't see themselves if they do not have teams.We then put these sampled participants on the list .these achieved by the code below&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
We also need to add invitation links next to students without teams,before adding links , we need to know whether  students who want to invite the students on the list have team or not .if they do not have their own teams. we will automatically create a team for them ,this mechanism is called team lazy initialization.the code for this part is below&lt;br /&gt;
       &amp;lt;%if @student.team==nil&lt;br /&gt;
       @teamid=&amp;quot;0&amp;quot;&lt;br /&gt;
       else&lt;br /&gt;
       @teamid=@student.team.id&lt;br /&gt;
       end%&amp;gt;&lt;br /&gt;
       def check_inviterteam_before_invitation&lt;br /&gt;
      @student = AssignmentParticipant.find(params[:student_id])&lt;br /&gt;
      @team_id=params[:team_id]&lt;br /&gt;
      if @team_id==&amp;quot;0&amp;quot;&lt;br /&gt;
      team = AssignmentTeam.create_team_and_node(@student.parent_id)&lt;br /&gt;
      user = User.find(@student.user_id)&lt;br /&gt;
      # create TeamsUser and TeamUserNode&lt;br /&gt;
      teamuser = ApplicationController.helpers.create_team_users(user, team.id)&lt;br /&gt;
      @team_id=team.id&lt;br /&gt;
      end&lt;br /&gt;
      end&lt;br /&gt;
Finally we just use form_tag to create invite button which is related to invitation controller and create method in it .&lt;br /&gt;
&lt;br /&gt;
===Issue4===&lt;br /&gt;
we also display a list of students who do not have team in teams#list page for instructor.This part of code is showed below.&lt;br /&gt;
      &amp;lt;% @assignment.participants.each do |participant| %&amp;gt; &amp;lt;!--start team member content--&amp;gt;&lt;br /&gt;
      &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
       &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
     &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Screenshots of new feature==&lt;br /&gt;
1)The horny icons appear in the the last column of the signup sheet.&lt;br /&gt;
[[File:30.png]]&lt;br /&gt;
[[File:31.png]]&lt;br /&gt;
&lt;br /&gt;
2)For student end ,the list of students who do not have a team with invitation links&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113801</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113801"/>
		<updated>2017-11-28T03:46:18Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Issue3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
==Modified Files ==&lt;br /&gt;
1)app/views/student_teams/view.html.erb&lt;br /&gt;
&lt;br /&gt;
2)app/views/join_team_requests/_list_received.erb&lt;br /&gt;
&lt;br /&gt;
3)app/controllers/join_team_requests_controller.rb&lt;br /&gt;
&lt;br /&gt;
4)app/models/join_team_request.rb&lt;br /&gt;
&lt;br /&gt;
5)app/models/sign_up_sheet.rb&lt;br /&gt;
&lt;br /&gt;
6)app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
&lt;br /&gt;
7)app/views/sign_up_sheet/_all_actions.html.erb&lt;br /&gt;
&lt;br /&gt;
8)app/views/teams/list.html.erb&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
===Issue1===&lt;br /&gt;
When someone creates an ad ,the horny icon does not  appear in the the last column of the signup sheet.the code that show horny icon is below:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;% if SignUpSheet.has_teammate_ads?(topic.id) %&amp;gt;&lt;br /&gt;
 &amp;lt;%= link_to image_tag('ad.png', :border =&amp;gt; 0, :title =&amp;gt; 'Ad', :align =&amp;gt; 'middle', :style =&amp;gt; 'width: 24px; height:24px'), :controller=&amp;gt;'sign_up_sheet', &lt;br /&gt;
 :action=&amp;gt; 'show_team',assignment_id=&amp;gt;@assignment.id, :id=&amp;gt;topic.id%&amp;gt;&lt;br /&gt;
 &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After debugging ,I found even if you create an ad before ,the if block of code will not be executed. Therefore something must be wrong with has_teammate_ads? method.Then I rewrite that method.Signupteam has an attribute:advertise_for_partner ,it will be set true after team members create an ad for their team.i  return this attribute to the has_teammate_ads? method and the horny icon appears.This method code is below:&lt;br /&gt;
   def self.has_teammate_ads?(topic_id)&lt;br /&gt;
     @ads_exsit=false&lt;br /&gt;
     @result=SignedUpTeam.where(&amp;quot;topic_id = ?&amp;quot;, topic_id.to_s)&lt;br /&gt;
     @result.each do |result|&lt;br /&gt;
      team=result.team&lt;br /&gt;
      @ads_exsit=team.advertise_for_partner&lt;br /&gt;
      end&lt;br /&gt;
      @ads_exsit&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
===Issue2===&lt;br /&gt;
I found currently when you sent join team request in the ad,the team received that request would see invite and decline button on their student teams#view page.if they are willing to add the student who send request as member ,they have to send invitation and wait for reply. This is not reasonable and convenient. what should happen is that when the student send join team request,the team members could see accept and decline button ,After they click accept button ,the student would leave his/her original team and join the new team. &lt;br /&gt;
What I have done is that I  add accept method in join team request controller.The method is below:&lt;br /&gt;
 &lt;br /&gt;
   def accept&lt;br /&gt;
      unless JoinTeamRequest.accept_invite(params[:team_id], @inviter_userid,  @invited_userid, @assignment_id)&lt;br /&gt;
      flash[:error] = 'The system failed to add you to the team that invited you.'&lt;br /&gt;
     end&lt;br /&gt;
     redirect_to view_student_teams_path student_id: params[:student_id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
Here @invited_userid is acquired from the student who sent join team request. inviter_userid is from the team members who received the request.  team_id is invited student's team id.&lt;br /&gt;
&lt;br /&gt;
===Issue3===&lt;br /&gt;
&lt;br /&gt;
We build a new feature to help students find teams to join. Students who do not have teams or whose team is not full are able to see a list of students who do not haven a team.The code for this issue is showed below:&lt;br /&gt;
  &amp;lt;% if @student.user_id!=nil %&amp;gt;&lt;br /&gt;
  &amp;lt;%if @student.assignment.max_team_size &amp;gt; 1 %&amp;gt;&lt;br /&gt;
  &amp;lt;% if @student.team==nil|| !@student.team.full? %&amp;gt;&lt;br /&gt;
  Students without teams&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;%if @student.team==nil&lt;br /&gt;
             @teamid=&amp;quot;0&amp;quot;&lt;br /&gt;
           else&lt;br /&gt;
           @teamid=@student.team.id&lt;br /&gt;
         end%&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%=  form_tag :controller =&amp;gt; 'invitations', :action =&amp;gt; 'create' do %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'team_id', @teamid %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'student_id', @student.id %&amp;gt;&lt;br /&gt;
             &amp;lt;%= hidden_field_tag 'session[:dummy][:assignment_id]', @student.parent_id %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'user[name]',  participant.user.name%&amp;gt;&lt;br /&gt;
              &amp;lt;%=  submit_tag &amp;quot;invite&amp;quot;%&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
               &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
           &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;/table&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the code above, if @student.assignment.max_team_size &amp;gt; 1 we then execute the below code ,this is because our new feature is only available when assignment team size greater than 1.we use  if @student.team==nil|| !@student.team.full?  to allow students who have no team or whose team is not full to see this list.Next we found all participants ,we use if statement to sample those who has no team , their role are students and they won't see themselves if they do not have teams.We then put these sampled participants on the list .these achieved by the code below&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
We also need to add invitation links next to students without teams,before adding links , we need to know whether  students who want to invite the students on the list have team or not .if they do not have their own teams. we will automatically create a team for them ,this mechanism is called team lazy initialization.the code for this part is below&lt;br /&gt;
            &amp;lt;%if @student.team==nil&lt;br /&gt;
             team = AssignmentTeam.create_team_and_node(@student.parent_id)&lt;br /&gt;
             user = User.find(@student.user_id)&lt;br /&gt;
             # create TeamsUser and TeamUserNode&lt;br /&gt;
             teamuser = ApplicationController.helpers.create_team_users(user, team.id)&lt;br /&gt;
             @teamid=team.id&lt;br /&gt;
Finally we just use form_tag to create invite button which is related to invitation controller and create method in it .&lt;br /&gt;
&lt;br /&gt;
===Issue4===&lt;br /&gt;
we also display a list of students who do not have team in teams#list page for instructor.This part of code is showed below.&lt;br /&gt;
      &amp;lt;% @assignment.participants.each do |participant| %&amp;gt; &amp;lt;!--start team member content--&amp;gt;&lt;br /&gt;
      &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
       &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
     &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Screenshots of new feature==&lt;br /&gt;
1)The horny icons appear in the the last column of the signup sheet.&lt;br /&gt;
[[File:30.png]]&lt;br /&gt;
[[File:31.png]]&lt;br /&gt;
&lt;br /&gt;
2)For student end ,the list of students who do not have a team with invitation links&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113757</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113757"/>
		<updated>2017-11-27T23:16:17Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Screenshots of new feature */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
==Modified Files ==&lt;br /&gt;
1)app/views/student_teams/view.html.erb&lt;br /&gt;
&lt;br /&gt;
2)app/views/join_team_requests/_list_received.erb&lt;br /&gt;
&lt;br /&gt;
3)app/controllers/join_team_requests_controller.rb&lt;br /&gt;
&lt;br /&gt;
4)app/models/join_team_request.rb&lt;br /&gt;
&lt;br /&gt;
5)app/models/sign_up_sheet.rb&lt;br /&gt;
&lt;br /&gt;
6)app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
&lt;br /&gt;
7)app/views/sign_up_sheet/_all_actions.html.erb&lt;br /&gt;
&lt;br /&gt;
8)app/views/teams/list.html.erb&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
===Issue1===&lt;br /&gt;
When someone creates an ad ,the horny icon does not  appear in the the last column of the signup sheet.the code that show horny icon is below:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;% if SignUpSheet.has_teammate_ads?(topic.id) %&amp;gt;&lt;br /&gt;
 &amp;lt;%= link_to image_tag('ad.png', :border =&amp;gt; 0, :title =&amp;gt; 'Ad', :align =&amp;gt; 'middle', :style =&amp;gt; 'width: 24px; height:24px'), :controller=&amp;gt;'sign_up_sheet', &lt;br /&gt;
 :action=&amp;gt; 'show_team',assignment_id=&amp;gt;@assignment.id, :id=&amp;gt;topic.id%&amp;gt;&lt;br /&gt;
 &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After debugging ,I found even if you create an ad before ,the if block of code will not be executed. Therefore something must be wrong with has_teammate_ads? method.Then I rewrite that method.Signupteam has an attribute:advertise_for_partner ,it will be set true after team members create an ad for their team.i  return this attribute to the has_teammate_ads? method and the horny icon appears.This method code is below:&lt;br /&gt;
   def self.has_teammate_ads?(topic_id)&lt;br /&gt;
     @ads_exsit=false&lt;br /&gt;
     @result=SignedUpTeam.where(&amp;quot;topic_id = ?&amp;quot;, topic_id.to_s)&lt;br /&gt;
     @result.each do |result|&lt;br /&gt;
      team=result.team&lt;br /&gt;
      @ads_exsit=team.advertise_for_partner&lt;br /&gt;
      end&lt;br /&gt;
      @ads_exsit&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
===Issue2===&lt;br /&gt;
I found currently when you sent join team request in the ad,the team received that request would see invite and decline button on their student teams#view page.if they are willing to add the student who send request as member ,they have to send invitation and wait for reply. This is not reasonable and convenient. what should happen is that when the student send join team request,the team members could see accept and decline button ,After they click accept button ,the student would leave his/her original team and join the new team. &lt;br /&gt;
What I have done is that I  add accept method in join team request controller.The method is below:&lt;br /&gt;
 &lt;br /&gt;
   def accept&lt;br /&gt;
      unless JoinTeamRequest.accept_invite(params[:team_id], @inviter_userid,  @invited_userid, @assignment_id)&lt;br /&gt;
      flash[:error] = 'The system failed to add you to the team that invited you.'&lt;br /&gt;
     end&lt;br /&gt;
     redirect_to view_student_teams_path student_id: params[:student_id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
Here @invited_userid is acquired from the student who sent join team request. inviter_userid is from the team members who received the request.  team_id is invited student's team id.&lt;br /&gt;
&lt;br /&gt;
===Issue3===&lt;br /&gt;
&lt;br /&gt;
We build a new feature to help students find teams to join. Students who do not have teams or whose team is not full are able to see a list of students who do not haven a team.The code for this issue is showed below:&lt;br /&gt;
  &amp;lt;% if @student.user_id!=nil %&amp;gt;&lt;br /&gt;
  &amp;lt;%if @student.assignment.max_team_size &amp;gt; 1 %&amp;gt;&lt;br /&gt;
  &amp;lt;% if @student.team==nil|| !@student.team.full? %&amp;gt;&lt;br /&gt;
  Students without teams&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;%if @student.team==nil&lt;br /&gt;
       team = AssignmentTeam.create_team_and_node(@student.parent_id)&lt;br /&gt;
             user = User.find(@student.user_id)&lt;br /&gt;
             # create TeamsUser and TeamUserNode&lt;br /&gt;
             teamuser = ApplicationController.helpers.create_team_users(user, team.id)&lt;br /&gt;
             @teamid=team.id&lt;br /&gt;
           else&lt;br /&gt;
           @teamid=@student.team.id&lt;br /&gt;
            end%&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%=  form_tag :controller =&amp;gt; 'invitations', :action =&amp;gt; 'create' do %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'team_id', @teamid %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'student_id', @student.id %&amp;gt;&lt;br /&gt;
             &amp;lt;%= hidden_field_tag 'session[:dummy][:assignment_id]', @student.parent_id %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'user[name]',  participant.user.name%&amp;gt;&lt;br /&gt;
              &amp;lt;%=  submit_tag &amp;quot;invite&amp;quot;%&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
               &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
           &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;/table&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the code above, if @student.assignment.max_team_size &amp;gt; 1 we then execute the below code ,this is because our new feature is only available when assignment team size greater than 1.we use  if @student.team==nil|| !@student.team.full?  to allow students who have no team or whose team is not full to see this list.Next we found all participants ,we use if statement to sample those who has no team , their role are students and they won't see themselves if they do not have teams.We then put these sampled participants on the list .these achieved by the code below&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
We also need to add invitation links next to students without teams,before adding links , we need to know whether  students who want to invite the students on the list have team or not .if they do not have their own teams. we will automatically create a team for them ,this mechanism is called team lazy initialization.the code for this part is below&lt;br /&gt;
            &amp;lt;%if @student.team==nil&lt;br /&gt;
             team = AssignmentTeam.create_team_and_node(@student.parent_id)&lt;br /&gt;
             user = User.find(@student.user_id)&lt;br /&gt;
             # create TeamsUser and TeamUserNode&lt;br /&gt;
             teamuser = ApplicationController.helpers.create_team_users(user, team.id)&lt;br /&gt;
             @teamid=team.id&lt;br /&gt;
Finally we just use form_tag to create invite button which is related to invitation controller and create method in it .&lt;br /&gt;
&lt;br /&gt;
===Issue4===&lt;br /&gt;
we also display a list of students who do not have team in teams#list page for instructor.This part of code is showed below.&lt;br /&gt;
      &amp;lt;% @assignment.participants.each do |participant| %&amp;gt; &amp;lt;!--start team member content--&amp;gt;&lt;br /&gt;
      &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
       &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
     &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Screenshots of new feature==&lt;br /&gt;
1)The horny icons appear in the the last column of the signup sheet.&lt;br /&gt;
[[File:30.png]]&lt;br /&gt;
[[File:31.png]]&lt;br /&gt;
&lt;br /&gt;
2)For student end ,the list of students who do not have a team with invitation links&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113756</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113756"/>
		<updated>2017-11-27T23:09:30Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Screenshots of new feature */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
==Modified Files ==&lt;br /&gt;
1)app/views/student_teams/view.html.erb&lt;br /&gt;
&lt;br /&gt;
2)app/views/join_team_requests/_list_received.erb&lt;br /&gt;
&lt;br /&gt;
3)app/controllers/join_team_requests_controller.rb&lt;br /&gt;
&lt;br /&gt;
4)app/models/join_team_request.rb&lt;br /&gt;
&lt;br /&gt;
5)app/models/sign_up_sheet.rb&lt;br /&gt;
&lt;br /&gt;
6)app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
&lt;br /&gt;
7)app/views/sign_up_sheet/_all_actions.html.erb&lt;br /&gt;
&lt;br /&gt;
8)app/views/teams/list.html.erb&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
===Issue1===&lt;br /&gt;
When someone creates an ad ,the horny icon does not  appear in the the last column of the signup sheet.the code that show horny icon is below:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;% if SignUpSheet.has_teammate_ads?(topic.id) %&amp;gt;&lt;br /&gt;
 &amp;lt;%= link_to image_tag('ad.png', :border =&amp;gt; 0, :title =&amp;gt; 'Ad', :align =&amp;gt; 'middle', :style =&amp;gt; 'width: 24px; height:24px'), :controller=&amp;gt;'sign_up_sheet', &lt;br /&gt;
 :action=&amp;gt; 'show_team',assignment_id=&amp;gt;@assignment.id, :id=&amp;gt;topic.id%&amp;gt;&lt;br /&gt;
 &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After debugging ,I found even if you create an ad before ,the if block of code will not be executed. Therefore something must be wrong with has_teammate_ads? method.Then I rewrite that method.Signupteam has an attribute:advertise_for_partner ,it will be set true after team members create an ad for their team.i  return this attribute to the has_teammate_ads? method and the horny icon appears.This method code is below:&lt;br /&gt;
   def self.has_teammate_ads?(topic_id)&lt;br /&gt;
     @ads_exsit=false&lt;br /&gt;
     @result=SignedUpTeam.where(&amp;quot;topic_id = ?&amp;quot;, topic_id.to_s)&lt;br /&gt;
     @result.each do |result|&lt;br /&gt;
      team=result.team&lt;br /&gt;
      @ads_exsit=team.advertise_for_partner&lt;br /&gt;
      end&lt;br /&gt;
      @ads_exsit&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
===Issue2===&lt;br /&gt;
I found currently when you sent join team request in the ad,the team received that request would see invite and decline button on their student teams#view page.if they are willing to add the student who send request as member ,they have to send invitation and wait for reply. This is not reasonable and convenient. what should happen is that when the student send join team request,the team members could see accept and decline button ,After they click accept button ,the student would leave his/her original team and join the new team. &lt;br /&gt;
What I have done is that I  add accept method in join team request controller.The method is below:&lt;br /&gt;
 &lt;br /&gt;
   def accept&lt;br /&gt;
      unless JoinTeamRequest.accept_invite(params[:team_id], @inviter_userid,  @invited_userid, @assignment_id)&lt;br /&gt;
      flash[:error] = 'The system failed to add you to the team that invited you.'&lt;br /&gt;
     end&lt;br /&gt;
     redirect_to view_student_teams_path student_id: params[:student_id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
Here @invited_userid is acquired from the student who sent join team request. inviter_userid is from the team members who received the request.  team_id is invited student's team id.&lt;br /&gt;
&lt;br /&gt;
===Issue3===&lt;br /&gt;
&lt;br /&gt;
We build a new feature to help students find teams to join. Students who do not have teams or whose team is not full are able to see a list of students who do not haven a team.The code for this issue is showed below:&lt;br /&gt;
  &amp;lt;% if @student.user_id!=nil %&amp;gt;&lt;br /&gt;
  &amp;lt;%if @student.assignment.max_team_size &amp;gt; 1 %&amp;gt;&lt;br /&gt;
  &amp;lt;% if @student.team==nil|| !@student.team.full? %&amp;gt;&lt;br /&gt;
  Students without teams&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;%if @student.team==nil&lt;br /&gt;
       team = AssignmentTeam.create_team_and_node(@student.parent_id)&lt;br /&gt;
             user = User.find(@student.user_id)&lt;br /&gt;
             # create TeamsUser and TeamUserNode&lt;br /&gt;
             teamuser = ApplicationController.helpers.create_team_users(user, team.id)&lt;br /&gt;
             @teamid=team.id&lt;br /&gt;
           else&lt;br /&gt;
           @teamid=@student.team.id&lt;br /&gt;
            end%&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%=  form_tag :controller =&amp;gt; 'invitations', :action =&amp;gt; 'create' do %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'team_id', @teamid %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'student_id', @student.id %&amp;gt;&lt;br /&gt;
             &amp;lt;%= hidden_field_tag 'session[:dummy][:assignment_id]', @student.parent_id %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'user[name]',  participant.user.name%&amp;gt;&lt;br /&gt;
              &amp;lt;%=  submit_tag &amp;quot;invite&amp;quot;%&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
               &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
           &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;/table&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the code above, if @student.assignment.max_team_size &amp;gt; 1 we then execute the below code ,this is because our new feature is only available when assignment team size greater than 1.we use  if @student.team==nil|| !@student.team.full?  to allow students who have no team or whose team is not full to see this list.Next we found all participants ,we use if statement to sample those who has no team , their role are students and they won't see themselves if they do not have teams.We then put these sampled participants on the list .these achieved by the code below&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
We also need to add invitation links next to students without teams,before adding links , we need to know whether  students who want to invite the students on the list have team or not .if they do not have their own teams. we will automatically create a team for them ,this mechanism is called team lazy initialization.the code for this part is below&lt;br /&gt;
            &amp;lt;%if @student.team==nil&lt;br /&gt;
             team = AssignmentTeam.create_team_and_node(@student.parent_id)&lt;br /&gt;
             user = User.find(@student.user_id)&lt;br /&gt;
             # create TeamsUser and TeamUserNode&lt;br /&gt;
             teamuser = ApplicationController.helpers.create_team_users(user, team.id)&lt;br /&gt;
             @teamid=team.id&lt;br /&gt;
Finally we just use form_tag to create invite button which is related to invitation controller and create method in it .&lt;br /&gt;
&lt;br /&gt;
===Issue4===&lt;br /&gt;
we also display a list of students who do not have team in teams#list page for instructor.This part of code is showed below.&lt;br /&gt;
      &amp;lt;% @assignment.participants.each do |participant| %&amp;gt; &amp;lt;!--start team member content--&amp;gt;&lt;br /&gt;
      &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
       &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
     &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Screenshots of new feature==&lt;br /&gt;
1)The horny icons appear in the the last column of the signup sheet.&lt;br /&gt;
[[File:30.png]]&lt;br /&gt;
[[File:31.png]]&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:31.png&amp;diff=113755</id>
		<title>File:31.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:31.png&amp;diff=113755"/>
		<updated>2017-11-27T23:08:57Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113754</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113754"/>
		<updated>2017-11-27T23:07:21Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Screenshots of new feature */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
==Modified Files ==&lt;br /&gt;
1)app/views/student_teams/view.html.erb&lt;br /&gt;
&lt;br /&gt;
2)app/views/join_team_requests/_list_received.erb&lt;br /&gt;
&lt;br /&gt;
3)app/controllers/join_team_requests_controller.rb&lt;br /&gt;
&lt;br /&gt;
4)app/models/join_team_request.rb&lt;br /&gt;
&lt;br /&gt;
5)app/models/sign_up_sheet.rb&lt;br /&gt;
&lt;br /&gt;
6)app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
&lt;br /&gt;
7)app/views/sign_up_sheet/_all_actions.html.erb&lt;br /&gt;
&lt;br /&gt;
8)app/views/teams/list.html.erb&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
===Issue1===&lt;br /&gt;
When someone creates an ad ,the horny icon does not  appear in the the last column of the signup sheet.the code that show horny icon is below:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;% if SignUpSheet.has_teammate_ads?(topic.id) %&amp;gt;&lt;br /&gt;
 &amp;lt;%= link_to image_tag('ad.png', :border =&amp;gt; 0, :title =&amp;gt; 'Ad', :align =&amp;gt; 'middle', :style =&amp;gt; 'width: 24px; height:24px'), :controller=&amp;gt;'sign_up_sheet', &lt;br /&gt;
 :action=&amp;gt; 'show_team',assignment_id=&amp;gt;@assignment.id, :id=&amp;gt;topic.id%&amp;gt;&lt;br /&gt;
 &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After debugging ,I found even if you create an ad before ,the if block of code will not be executed. Therefore something must be wrong with has_teammate_ads? method.Then I rewrite that method.Signupteam has an attribute:advertise_for_partner ,it will be set true after team members create an ad for their team.i  return this attribute to the has_teammate_ads? method and the horny icon appears.This method code is below:&lt;br /&gt;
   def self.has_teammate_ads?(topic_id)&lt;br /&gt;
     @ads_exsit=false&lt;br /&gt;
     @result=SignedUpTeam.where(&amp;quot;topic_id = ?&amp;quot;, topic_id.to_s)&lt;br /&gt;
     @result.each do |result|&lt;br /&gt;
      team=result.team&lt;br /&gt;
      @ads_exsit=team.advertise_for_partner&lt;br /&gt;
      end&lt;br /&gt;
      @ads_exsit&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
===Issue2===&lt;br /&gt;
I found currently when you sent join team request in the ad,the team received that request would see invite and decline button on their student teams#view page.if they are willing to add the student who send request as member ,they have to send invitation and wait for reply. This is not reasonable and convenient. what should happen is that when the student send join team request,the team members could see accept and decline button ,After they click accept button ,the student would leave his/her original team and join the new team. &lt;br /&gt;
What I have done is that I  add accept method in join team request controller.The method is below:&lt;br /&gt;
 &lt;br /&gt;
   def accept&lt;br /&gt;
      unless JoinTeamRequest.accept_invite(params[:team_id], @inviter_userid,  @invited_userid, @assignment_id)&lt;br /&gt;
      flash[:error] = 'The system failed to add you to the team that invited you.'&lt;br /&gt;
     end&lt;br /&gt;
     redirect_to view_student_teams_path student_id: params[:student_id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
Here @invited_userid is acquired from the student who sent join team request. inviter_userid is from the team members who received the request.  team_id is invited student's team id.&lt;br /&gt;
&lt;br /&gt;
===Issue3===&lt;br /&gt;
&lt;br /&gt;
We build a new feature to help students find teams to join. Students who do not have teams or whose team is not full are able to see a list of students who do not haven a team.The code for this issue is showed below:&lt;br /&gt;
  &amp;lt;% if @student.user_id!=nil %&amp;gt;&lt;br /&gt;
  &amp;lt;%if @student.assignment.max_team_size &amp;gt; 1 %&amp;gt;&lt;br /&gt;
  &amp;lt;% if @student.team==nil|| !@student.team.full? %&amp;gt;&lt;br /&gt;
  Students without teams&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;%if @student.team==nil&lt;br /&gt;
       team = AssignmentTeam.create_team_and_node(@student.parent_id)&lt;br /&gt;
             user = User.find(@student.user_id)&lt;br /&gt;
             # create TeamsUser and TeamUserNode&lt;br /&gt;
             teamuser = ApplicationController.helpers.create_team_users(user, team.id)&lt;br /&gt;
             @teamid=team.id&lt;br /&gt;
           else&lt;br /&gt;
           @teamid=@student.team.id&lt;br /&gt;
            end%&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%=  form_tag :controller =&amp;gt; 'invitations', :action =&amp;gt; 'create' do %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'team_id', @teamid %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'student_id', @student.id %&amp;gt;&lt;br /&gt;
             &amp;lt;%= hidden_field_tag 'session[:dummy][:assignment_id]', @student.parent_id %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'user[name]',  participant.user.name%&amp;gt;&lt;br /&gt;
              &amp;lt;%=  submit_tag &amp;quot;invite&amp;quot;%&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
               &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
           &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;/table&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the code above, if @student.assignment.max_team_size &amp;gt; 1 we then execute the below code ,this is because our new feature is only available when assignment team size greater than 1.we use  if @student.team==nil|| !@student.team.full?  to allow students who have no team or whose team is not full to see this list.Next we found all participants ,we use if statement to sample those who has no team , their role are students and they won't see themselves if they do not have teams.We then put these sampled participants on the list .these achieved by the code below&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
We also need to add invitation links next to students without teams,before adding links , we need to know whether  students who want to invite the students on the list have team or not .if they do not have their own teams. we will automatically create a team for them ,this mechanism is called team lazy initialization.the code for this part is below&lt;br /&gt;
            &amp;lt;%if @student.team==nil&lt;br /&gt;
             team = AssignmentTeam.create_team_and_node(@student.parent_id)&lt;br /&gt;
             user = User.find(@student.user_id)&lt;br /&gt;
             # create TeamsUser and TeamUserNode&lt;br /&gt;
             teamuser = ApplicationController.helpers.create_team_users(user, team.id)&lt;br /&gt;
             @teamid=team.id&lt;br /&gt;
Finally we just use form_tag to create invite button which is related to invitation controller and create method in it .&lt;br /&gt;
&lt;br /&gt;
===Issue4===&lt;br /&gt;
we also display a list of students who do not have team in teams#list page for instructor.This part of code is showed below.&lt;br /&gt;
      &amp;lt;% @assignment.participants.each do |participant| %&amp;gt; &amp;lt;!--start team member content--&amp;gt;&lt;br /&gt;
      &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
       &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
     &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Screenshots of new feature==&lt;br /&gt;
1)The horny icons appear in the the last column of the signup sheet.&lt;br /&gt;
[[File:30.png]]&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:30.png&amp;diff=113753</id>
		<title>File:30.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:30.png&amp;diff=113753"/>
		<updated>2017-11-27T23:06:49Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: uploaded a new version of &amp;amp;quot;File:30.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:30.png&amp;diff=113751</id>
		<title>File:30.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:30.png&amp;diff=113751"/>
		<updated>2017-11-27T23:00:43Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113745</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113745"/>
		<updated>2017-11-27T22:06:45Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Issue4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
==Modified Files ==&lt;br /&gt;
1)app/views/student_teams/view.html.erb&lt;br /&gt;
&lt;br /&gt;
2)app/views/join_team_requests/_list_received.erb&lt;br /&gt;
&lt;br /&gt;
3)app/controllers/join_team_requests_controller.rb&lt;br /&gt;
&lt;br /&gt;
4)app/models/join_team_request.rb&lt;br /&gt;
&lt;br /&gt;
5)app/models/sign_up_sheet.rb&lt;br /&gt;
&lt;br /&gt;
6)app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
&lt;br /&gt;
7)app/views/sign_up_sheet/_all_actions.html.erb&lt;br /&gt;
&lt;br /&gt;
8)app/views/teams/list.html.erb&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
===Issue1===&lt;br /&gt;
When someone creates an ad ,the horny icon does not  appear in the the last column of the signup sheet.the code that show horny icon is below:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;% if SignUpSheet.has_teammate_ads?(topic.id) %&amp;gt;&lt;br /&gt;
 &amp;lt;%= link_to image_tag('ad.png', :border =&amp;gt; 0, :title =&amp;gt; 'Ad', :align =&amp;gt; 'middle', :style =&amp;gt; 'width: 24px; height:24px'), :controller=&amp;gt;'sign_up_sheet', &lt;br /&gt;
 :action=&amp;gt; 'show_team',assignment_id=&amp;gt;@assignment.id, :id=&amp;gt;topic.id%&amp;gt;&lt;br /&gt;
 &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After debugging ,I found even if you create an ad before ,the if block of code will not be executed. Therefore something must be wrong with has_teammate_ads? method.Then I rewrite that method.Signupteam has an attribute:advertise_for_partner ,it will be set true after team members create an ad for their team.i  return this attribute to the has_teammate_ads? method and the horny icon appears.This method code is below:&lt;br /&gt;
   def self.has_teammate_ads?(topic_id)&lt;br /&gt;
     @ads_exsit=false&lt;br /&gt;
     @result=SignedUpTeam.where(&amp;quot;topic_id = ?&amp;quot;, topic_id.to_s)&lt;br /&gt;
     @result.each do |result|&lt;br /&gt;
      team=result.team&lt;br /&gt;
      @ads_exsit=team.advertise_for_partner&lt;br /&gt;
      end&lt;br /&gt;
      @ads_exsit&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
===Issue2===&lt;br /&gt;
I found currently when you sent join team request in the ad,the team received that request would see invite and decline button on their student teams#view page.if they are willing to add the student who send request as member ,they have to send invitation and wait for reply. This is not reasonable and convenient. what should happen is that when the student send join team request,the team members could see accept and decline button ,After they click accept button ,the student would leave his/her original team and join the new team. &lt;br /&gt;
What I have done is that I  add accept method in join team request controller.The method is below:&lt;br /&gt;
 &lt;br /&gt;
   def accept&lt;br /&gt;
      unless JoinTeamRequest.accept_invite(params[:team_id], @inviter_userid,  @invited_userid, @assignment_id)&lt;br /&gt;
      flash[:error] = 'The system failed to add you to the team that invited you.'&lt;br /&gt;
     end&lt;br /&gt;
     redirect_to view_student_teams_path student_id: params[:student_id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
Here @invited_userid is acquired from the student who sent join team request. inviter_userid is from the team members who received the request.  team_id is invited student's team id.&lt;br /&gt;
&lt;br /&gt;
===Issue3===&lt;br /&gt;
&lt;br /&gt;
We build a new feature to help students find teams to join. Students who do not have teams or whose team is not full are able to see a list of students who do not haven a team.The code for this issue is showed below:&lt;br /&gt;
  &amp;lt;% if @student.user_id!=nil %&amp;gt;&lt;br /&gt;
  &amp;lt;%if @student.assignment.max_team_size &amp;gt; 1 %&amp;gt;&lt;br /&gt;
  &amp;lt;% if @student.team==nil|| !@student.team.full? %&amp;gt;&lt;br /&gt;
  Students without teams&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;%if @student.team==nil&lt;br /&gt;
       team = AssignmentTeam.create_team_and_node(@student.parent_id)&lt;br /&gt;
             user = User.find(@student.user_id)&lt;br /&gt;
             # create TeamsUser and TeamUserNode&lt;br /&gt;
             teamuser = ApplicationController.helpers.create_team_users(user, team.id)&lt;br /&gt;
             @teamid=team.id&lt;br /&gt;
           else&lt;br /&gt;
           @teamid=@student.team.id&lt;br /&gt;
            end%&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%=  form_tag :controller =&amp;gt; 'invitations', :action =&amp;gt; 'create' do %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'team_id', @teamid %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'student_id', @student.id %&amp;gt;&lt;br /&gt;
             &amp;lt;%= hidden_field_tag 'session[:dummy][:assignment_id]', @student.parent_id %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'user[name]',  participant.user.name%&amp;gt;&lt;br /&gt;
              &amp;lt;%=  submit_tag &amp;quot;invite&amp;quot;%&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
               &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
           &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;/table&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the code above, if @student.assignment.max_team_size &amp;gt; 1 we then execute the below code ,this is because our new feature is only available when assignment team size greater than 1.we use  if @student.team==nil|| !@student.team.full?  to allow students who have no team or whose team is not full to see this list.Next we found all participants ,we use if statement to sample those who has no team , their role are students and they won't see themselves if they do not have teams.We then put these sampled participants on the list .these achieved by the code below&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
We also need to add invitation links next to students without teams,before adding links , we need to know whether  students who want to invite the students on the list have team or not .if they do not have their own teams. we will automatically create a team for them ,this mechanism is called team lazy initialization.the code for this part is below&lt;br /&gt;
            &amp;lt;%if @student.team==nil&lt;br /&gt;
             team = AssignmentTeam.create_team_and_node(@student.parent_id)&lt;br /&gt;
             user = User.find(@student.user_id)&lt;br /&gt;
             # create TeamsUser and TeamUserNode&lt;br /&gt;
             teamuser = ApplicationController.helpers.create_team_users(user, team.id)&lt;br /&gt;
             @teamid=team.id&lt;br /&gt;
Finally we just use form_tag to create invite button which is related to invitation controller and create method in it .&lt;br /&gt;
&lt;br /&gt;
===Issue4===&lt;br /&gt;
we also display a list of students who do not have team in teams#list page for instructor.This part of code is showed below.&lt;br /&gt;
      &amp;lt;% @assignment.participants.each do |participant| %&amp;gt; &amp;lt;!--start team member content--&amp;gt;&lt;br /&gt;
      &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
       &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
     &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Screenshots of new feature==&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113744</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113744"/>
		<updated>2017-11-27T22:04:30Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Issue3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
==Modified Files ==&lt;br /&gt;
1)app/views/student_teams/view.html.erb&lt;br /&gt;
&lt;br /&gt;
2)app/views/join_team_requests/_list_received.erb&lt;br /&gt;
&lt;br /&gt;
3)app/controllers/join_team_requests_controller.rb&lt;br /&gt;
&lt;br /&gt;
4)app/models/join_team_request.rb&lt;br /&gt;
&lt;br /&gt;
5)app/models/sign_up_sheet.rb&lt;br /&gt;
&lt;br /&gt;
6)app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
&lt;br /&gt;
7)app/views/sign_up_sheet/_all_actions.html.erb&lt;br /&gt;
&lt;br /&gt;
8)app/views/teams/list.html.erb&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
===Issue1===&lt;br /&gt;
When someone creates an ad ,the horny icon does not  appear in the the last column of the signup sheet.the code that show horny icon is below:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;% if SignUpSheet.has_teammate_ads?(topic.id) %&amp;gt;&lt;br /&gt;
 &amp;lt;%= link_to image_tag('ad.png', :border =&amp;gt; 0, :title =&amp;gt; 'Ad', :align =&amp;gt; 'middle', :style =&amp;gt; 'width: 24px; height:24px'), :controller=&amp;gt;'sign_up_sheet', &lt;br /&gt;
 :action=&amp;gt; 'show_team',assignment_id=&amp;gt;@assignment.id, :id=&amp;gt;topic.id%&amp;gt;&lt;br /&gt;
 &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After debugging ,I found even if you create an ad before ,the if block of code will not be executed. Therefore something must be wrong with has_teammate_ads? method.Then I rewrite that method.Signupteam has an attribute:advertise_for_partner ,it will be set true after team members create an ad for their team.i  return this attribute to the has_teammate_ads? method and the horny icon appears.This method code is below:&lt;br /&gt;
   def self.has_teammate_ads?(topic_id)&lt;br /&gt;
     @ads_exsit=false&lt;br /&gt;
     @result=SignedUpTeam.where(&amp;quot;topic_id = ?&amp;quot;, topic_id.to_s)&lt;br /&gt;
     @result.each do |result|&lt;br /&gt;
      team=result.team&lt;br /&gt;
      @ads_exsit=team.advertise_for_partner&lt;br /&gt;
      end&lt;br /&gt;
      @ads_exsit&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
===Issue2===&lt;br /&gt;
I found currently when you sent join team request in the ad,the team received that request would see invite and decline button on their student teams#view page.if they are willing to add the student who send request as member ,they have to send invitation and wait for reply. This is not reasonable and convenient. what should happen is that when the student send join team request,the team members could see accept and decline button ,After they click accept button ,the student would leave his/her original team and join the new team. &lt;br /&gt;
What I have done is that I  add accept method in join team request controller.The method is below:&lt;br /&gt;
 &lt;br /&gt;
   def accept&lt;br /&gt;
      unless JoinTeamRequest.accept_invite(params[:team_id], @inviter_userid,  @invited_userid, @assignment_id)&lt;br /&gt;
      flash[:error] = 'The system failed to add you to the team that invited you.'&lt;br /&gt;
     end&lt;br /&gt;
     redirect_to view_student_teams_path student_id: params[:student_id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
Here @invited_userid is acquired from the student who sent join team request. inviter_userid is from the team members who received the request.  team_id is invited student's team id.&lt;br /&gt;
&lt;br /&gt;
===Issue3===&lt;br /&gt;
&lt;br /&gt;
We build a new feature to help students find teams to join. Students who do not have teams or whose team is not full are able to see a list of students who do not haven a team.The code for this issue is showed below:&lt;br /&gt;
  &amp;lt;% if @student.user_id!=nil %&amp;gt;&lt;br /&gt;
  &amp;lt;%if @student.assignment.max_team_size &amp;gt; 1 %&amp;gt;&lt;br /&gt;
  &amp;lt;% if @student.team==nil|| !@student.team.full? %&amp;gt;&lt;br /&gt;
  Students without teams&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;%if @student.team==nil&lt;br /&gt;
       team = AssignmentTeam.create_team_and_node(@student.parent_id)&lt;br /&gt;
             user = User.find(@student.user_id)&lt;br /&gt;
             # create TeamsUser and TeamUserNode&lt;br /&gt;
             teamuser = ApplicationController.helpers.create_team_users(user, team.id)&lt;br /&gt;
             @teamid=team.id&lt;br /&gt;
           else&lt;br /&gt;
           @teamid=@student.team.id&lt;br /&gt;
            end%&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%=  form_tag :controller =&amp;gt; 'invitations', :action =&amp;gt; 'create' do %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'team_id', @teamid %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'student_id', @student.id %&amp;gt;&lt;br /&gt;
             &amp;lt;%= hidden_field_tag 'session[:dummy][:assignment_id]', @student.parent_id %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'user[name]',  participant.user.name%&amp;gt;&lt;br /&gt;
              &amp;lt;%=  submit_tag &amp;quot;invite&amp;quot;%&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
               &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
           &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;/table&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the code above, if @student.assignment.max_team_size &amp;gt; 1 we then execute the below code ,this is because our new feature is only available when assignment team size greater than 1.we use  if @student.team==nil|| !@student.team.full?  to allow students who have no team or whose team is not full to see this list.Next we found all participants ,we use if statement to sample those who has no team , their role are students and they won't see themselves if they do not have teams.We then put these sampled participants on the list .these achieved by the code below&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
We also need to add invitation links next to students without teams,before adding links , we need to know whether  students who want to invite the students on the list have team or not .if they do not have their own teams. we will automatically create a team for them ,this mechanism is called team lazy initialization.the code for this part is below&lt;br /&gt;
            &amp;lt;%if @student.team==nil&lt;br /&gt;
             team = AssignmentTeam.create_team_and_node(@student.parent_id)&lt;br /&gt;
             user = User.find(@student.user_id)&lt;br /&gt;
             # create TeamsUser and TeamUserNode&lt;br /&gt;
             teamuser = ApplicationController.helpers.create_team_users(user, team.id)&lt;br /&gt;
             @teamid=team.id&lt;br /&gt;
Finally we just use form_tag to create invite button which is related to invitation controller and create method in it .&lt;br /&gt;
&lt;br /&gt;
===Issue4===&lt;br /&gt;
we also display a list of students who do not have team in teams#list page for instructor.This part of code is showed below.&lt;br /&gt;
      &amp;lt;% @assignment.participants.each do |participant| %&amp;gt; &amp;lt;!--start team member content--&amp;gt;&lt;br /&gt;
      &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
       &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
       &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
     &amp;lt;% end %&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113743</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113743"/>
		<updated>2017-11-27T21:58:21Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Issue3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
==Modified Files ==&lt;br /&gt;
1)app/views/student_teams/view.html.erb&lt;br /&gt;
&lt;br /&gt;
2)app/views/join_team_requests/_list_received.erb&lt;br /&gt;
&lt;br /&gt;
3)app/controllers/join_team_requests_controller.rb&lt;br /&gt;
&lt;br /&gt;
4)app/models/join_team_request.rb&lt;br /&gt;
&lt;br /&gt;
5)app/models/sign_up_sheet.rb&lt;br /&gt;
&lt;br /&gt;
6)app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
&lt;br /&gt;
7)app/views/sign_up_sheet/_all_actions.html.erb&lt;br /&gt;
&lt;br /&gt;
8)app/views/teams/list.html.erb&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
===Issue1===&lt;br /&gt;
When someone creates an ad ,the horny icon does not  appear in the the last column of the signup sheet.the code that show horny icon is below:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;% if SignUpSheet.has_teammate_ads?(topic.id) %&amp;gt;&lt;br /&gt;
 &amp;lt;%= link_to image_tag('ad.png', :border =&amp;gt; 0, :title =&amp;gt; 'Ad', :align =&amp;gt; 'middle', :style =&amp;gt; 'width: 24px; height:24px'), :controller=&amp;gt;'sign_up_sheet', &lt;br /&gt;
 :action=&amp;gt; 'show_team',assignment_id=&amp;gt;@assignment.id, :id=&amp;gt;topic.id%&amp;gt;&lt;br /&gt;
 &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After debugging ,I found even if you create an ad before ,the if block of code will not be executed. Therefore something must be wrong with has_teammate_ads? method.Then I rewrite that method.Signupteam has an attribute:advertise_for_partner ,it will be set true after team members create an ad for their team.i  return this attribute to the has_teammate_ads? method and the horny icon appears.This method code is below:&lt;br /&gt;
   def self.has_teammate_ads?(topic_id)&lt;br /&gt;
     @ads_exsit=false&lt;br /&gt;
     @result=SignedUpTeam.where(&amp;quot;topic_id = ?&amp;quot;, topic_id.to_s)&lt;br /&gt;
     @result.each do |result|&lt;br /&gt;
      team=result.team&lt;br /&gt;
      @ads_exsit=team.advertise_for_partner&lt;br /&gt;
      end&lt;br /&gt;
      @ads_exsit&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
===Issue2===&lt;br /&gt;
I found currently when you sent join team request in the ad,the team received that request would see invite and decline button on their student teams#view page.if they are willing to add the student who send request as member ,they have to send invitation and wait for reply. This is not reasonable and convenient. what should happen is that when the student send join team request,the team members could see accept and decline button ,After they click accept button ,the student would leave his/her original team and join the new team. &lt;br /&gt;
What I have done is that I  add accept method in join team request controller.The method is below:&lt;br /&gt;
 &lt;br /&gt;
   def accept&lt;br /&gt;
      unless JoinTeamRequest.accept_invite(params[:team_id], @inviter_userid,  @invited_userid, @assignment_id)&lt;br /&gt;
      flash[:error] = 'The system failed to add you to the team that invited you.'&lt;br /&gt;
     end&lt;br /&gt;
     redirect_to view_student_teams_path student_id: params[:student_id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
Here @invited_userid is acquired from the student who sent join team request. inviter_userid is from the team members who received the request.  team_id is invited student's team id.&lt;br /&gt;
&lt;br /&gt;
===Issue3===&lt;br /&gt;
&lt;br /&gt;
We build a new feature to help students find teams to join. Students who do not have teams or whose team is not full are able to see a list of students who do not haven a team.The code for this issue is showed below:&lt;br /&gt;
  &amp;lt;% if @student.user_id!=nil %&amp;gt;&lt;br /&gt;
  &amp;lt;%if @student.assignment.max_team_size &amp;gt; 1 %&amp;gt;&lt;br /&gt;
  &amp;lt;% if @student.team==nil|| !@student.team.full? %&amp;gt;&lt;br /&gt;
  Students without teams&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;%if @student.team==nil&lt;br /&gt;
       team = AssignmentTeam.create_team_and_node(@student.parent_id)&lt;br /&gt;
             user = User.find(@student.user_id)&lt;br /&gt;
             # create TeamsUser and TeamUserNode&lt;br /&gt;
             teamuser = ApplicationController.helpers.create_team_users(user, team.id)&lt;br /&gt;
             @teamid=team.id&lt;br /&gt;
           else&lt;br /&gt;
           @teamid=@student.team.id&lt;br /&gt;
            end%&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%=  form_tag :controller =&amp;gt; 'invitations', :action =&amp;gt; 'create' do %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'team_id', @teamid %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'student_id', @student.id %&amp;gt;&lt;br /&gt;
             &amp;lt;%= hidden_field_tag 'session[:dummy][:assignment_id]', @student.parent_id %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'user[name]',  participant.user.name%&amp;gt;&lt;br /&gt;
              &amp;lt;%=  submit_tag &amp;quot;invite&amp;quot;%&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
               &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
           &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;/table&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the code above, if @student.assignment.max_team_size &amp;gt; 1 we then execute the below code ,this is because our new feature is only available when assignment team size greater than 1.we use  if @student.team==nil|| !@student.team.full?  to allow students who have no team or whose team is not full to see this list.Next we found all participants ,we use if statement to sample those who has no team , their role are students and they won't see themselves if they do not have teams.We then put these sampled participants on the list .these achieved by the code below&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
We also need to add invitation links next to students without teams,before adding links , we need to know whether  students who want to invite the students on the list have team or not .if they do not have their own teams. we will automatically create a team for them ,this mechanism is called team lazy initialization.the code for this part is below&lt;br /&gt;
            &amp;lt;%if @student.team==nil&lt;br /&gt;
             team = AssignmentTeam.create_team_and_node(@student.parent_id)&lt;br /&gt;
             user = User.find(@student.user_id)&lt;br /&gt;
             # create TeamsUser and TeamUserNode&lt;br /&gt;
             teamuser = ApplicationController.helpers.create_team_users(user, team.id)&lt;br /&gt;
             @teamid=team.id&lt;br /&gt;
Finally we just use form_tag to create invite button which is related to invitation controller and create method in it .&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113742</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113742"/>
		<updated>2017-11-27T21:25:07Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Issue3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
==Modified Files ==&lt;br /&gt;
1)app/views/student_teams/view.html.erb&lt;br /&gt;
&lt;br /&gt;
2)app/views/join_team_requests/_list_received.erb&lt;br /&gt;
&lt;br /&gt;
3)app/controllers/join_team_requests_controller.rb&lt;br /&gt;
&lt;br /&gt;
4)app/models/join_team_request.rb&lt;br /&gt;
&lt;br /&gt;
5)app/models/sign_up_sheet.rb&lt;br /&gt;
&lt;br /&gt;
6)app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
&lt;br /&gt;
7)app/views/sign_up_sheet/_all_actions.html.erb&lt;br /&gt;
&lt;br /&gt;
8)app/views/teams/list.html.erb&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
===Issue1===&lt;br /&gt;
When someone creates an ad ,the horny icon does not  appear in the the last column of the signup sheet.the code that show horny icon is below:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;% if SignUpSheet.has_teammate_ads?(topic.id) %&amp;gt;&lt;br /&gt;
 &amp;lt;%= link_to image_tag('ad.png', :border =&amp;gt; 0, :title =&amp;gt; 'Ad', :align =&amp;gt; 'middle', :style =&amp;gt; 'width: 24px; height:24px'), :controller=&amp;gt;'sign_up_sheet', &lt;br /&gt;
 :action=&amp;gt; 'show_team',assignment_id=&amp;gt;@assignment.id, :id=&amp;gt;topic.id%&amp;gt;&lt;br /&gt;
 &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After debugging ,I found even if you create an ad before ,the if block of code will not be executed. Therefore something must be wrong with has_teammate_ads? method.Then I rewrite that method.Signupteam has an attribute:advertise_for_partner ,it will be set true after team members create an ad for their team.i  return this attribute to the has_teammate_ads? method and the horny icon appears.This method code is below:&lt;br /&gt;
   def self.has_teammate_ads?(topic_id)&lt;br /&gt;
     @ads_exsit=false&lt;br /&gt;
     @result=SignedUpTeam.where(&amp;quot;topic_id = ?&amp;quot;, topic_id.to_s)&lt;br /&gt;
     @result.each do |result|&lt;br /&gt;
      team=result.team&lt;br /&gt;
      @ads_exsit=team.advertise_for_partner&lt;br /&gt;
      end&lt;br /&gt;
      @ads_exsit&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
===Issue2===&lt;br /&gt;
I found currently when you sent join team request in the ad,the team received that request would see invite and decline button on their student teams#view page.if they are willing to add the student who send request as member ,they have to send invitation and wait for reply. This is not reasonable and convenient. what should happen is that when the student send join team request,the team members could see accept and decline button ,After they click accept button ,the student would leave his/her original team and join the new team. &lt;br /&gt;
What I have done is that I  add accept method in join team request controller.The method is below:&lt;br /&gt;
 &lt;br /&gt;
   def accept&lt;br /&gt;
      unless JoinTeamRequest.accept_invite(params[:team_id], @inviter_userid,  @invited_userid, @assignment_id)&lt;br /&gt;
      flash[:error] = 'The system failed to add you to the team that invited you.'&lt;br /&gt;
     end&lt;br /&gt;
     redirect_to view_student_teams_path student_id: params[:student_id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
Here @invited_userid is acquired from the student who sent join team request. inviter_userid is from the team members who received the request.  team_id is invited student's team id.&lt;br /&gt;
&lt;br /&gt;
===Issue3===&lt;br /&gt;
&lt;br /&gt;
We build a new feature to help students find teams to join. Students who do not have teams or whose team is not full are able to see a list of students who do not haven a team.The code for this issue is showed below:&lt;br /&gt;
  &amp;lt;% if @student.user_id!=nil %&amp;gt;&lt;br /&gt;
  &amp;lt;%if @student.assignment.max_team_size &amp;gt; 1 %&amp;gt;&lt;br /&gt;
  &amp;lt;% if @student.team==nil|| !@student.team.full? %&amp;gt;&lt;br /&gt;
  Students without teams&lt;br /&gt;
   &amp;lt;%@student.assignment.participants.each do |participant| %&amp;gt; &lt;br /&gt;
   &amp;lt;% if participant.team==nil  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if User.find(participant.user_id).role.name==&amp;quot;Student&amp;quot;  %&amp;gt;&lt;br /&gt;
   &amp;lt;% if participant.user.name!=@student.name  %&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;%= participant.user.name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;%if @student.team==nil&lt;br /&gt;
       team = AssignmentTeam.create_team_and_node(@student.parent_id)&lt;br /&gt;
             user = User.find(@student.user_id)&lt;br /&gt;
             # create TeamsUser and TeamUserNode&lt;br /&gt;
             teamuser = ApplicationController.helpers.create_team_users(user, team.id)&lt;br /&gt;
             @teamid=team.id&lt;br /&gt;
           else&lt;br /&gt;
           @teamid=@student.team.id&lt;br /&gt;
            end%&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%=  form_tag :controller =&amp;gt; 'invitations', :action =&amp;gt; 'create' do %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'team_id', @teamid %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'student_id', @student.id %&amp;gt;&lt;br /&gt;
             &amp;lt;%= hidden_field_tag 'session[:dummy][:assignment_id]', @student.parent_id %&amp;gt;&lt;br /&gt;
              &amp;lt;%= hidden_field_tag 'user[name]',  participant.user.name%&amp;gt;&lt;br /&gt;
              &amp;lt;%=  submit_tag &amp;quot;invite&amp;quot;%&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
               &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
            &amp;lt;% end %&amp;gt;&lt;br /&gt;
           &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
         &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;/table&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;br /&gt;
       &amp;lt;% end %&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113741</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113741"/>
		<updated>2017-11-27T20:40:28Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Issue2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
==Modified Files ==&lt;br /&gt;
1)app/views/student_teams/view.html.erb&lt;br /&gt;
&lt;br /&gt;
2)app/views/join_team_requests/_list_received.erb&lt;br /&gt;
&lt;br /&gt;
3)app/controllers/join_team_requests_controller.rb&lt;br /&gt;
&lt;br /&gt;
4)app/models/join_team_request.rb&lt;br /&gt;
&lt;br /&gt;
5)app/models/sign_up_sheet.rb&lt;br /&gt;
&lt;br /&gt;
6)app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
&lt;br /&gt;
7)app/views/sign_up_sheet/_all_actions.html.erb&lt;br /&gt;
&lt;br /&gt;
8)app/views/teams/list.html.erb&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
===Issue1===&lt;br /&gt;
When someone creates an ad ,the horny icon does not  appear in the the last column of the signup sheet.the code that show horny icon is below:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;% if SignUpSheet.has_teammate_ads?(topic.id) %&amp;gt;&lt;br /&gt;
 &amp;lt;%= link_to image_tag('ad.png', :border =&amp;gt; 0, :title =&amp;gt; 'Ad', :align =&amp;gt; 'middle', :style =&amp;gt; 'width: 24px; height:24px'), :controller=&amp;gt;'sign_up_sheet', &lt;br /&gt;
 :action=&amp;gt; 'show_team',assignment_id=&amp;gt;@assignment.id, :id=&amp;gt;topic.id%&amp;gt;&lt;br /&gt;
 &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After debugging ,I found even if you create an ad before ,the if block of code will not be executed. Therefore something must be wrong with has_teammate_ads? method.Then I rewrite that method.Signupteam has an attribute:advertise_for_partner ,it will be set true after team members create an ad for their team.i  return this attribute to the has_teammate_ads? method and the horny icon appears.This method code is below:&lt;br /&gt;
   def self.has_teammate_ads?(topic_id)&lt;br /&gt;
     @ads_exsit=false&lt;br /&gt;
     @result=SignedUpTeam.where(&amp;quot;topic_id = ?&amp;quot;, topic_id.to_s)&lt;br /&gt;
     @result.each do |result|&lt;br /&gt;
      team=result.team&lt;br /&gt;
      @ads_exsit=team.advertise_for_partner&lt;br /&gt;
      end&lt;br /&gt;
      @ads_exsit&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
===Issue2===&lt;br /&gt;
I found currently when you sent join team request in the ad,the team received that request would see invite and decline button on their student teams#view page.if they are willing to add the student who send request as member ,they have to send invitation and wait for reply. This is not reasonable and convenient. what should happen is that when the student send join team request,the team members could see accept and decline button ,After they click accept button ,the student would leave his/her original team and join the new team. &lt;br /&gt;
What I have done is that I  add accept method in join team request controller.The method is below:&lt;br /&gt;
 &lt;br /&gt;
   def accept&lt;br /&gt;
      unless JoinTeamRequest.accept_invite(params[:team_id], @inviter_userid,  @invited_userid, @assignment_id)&lt;br /&gt;
      flash[:error] = 'The system failed to add you to the team that invited you.'&lt;br /&gt;
     end&lt;br /&gt;
     redirect_to view_student_teams_path student_id: params[:student_id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
Here @invited_userid is acquired from the student who sent join team request. inviter_userid is from the team members who received the request.  team_id is invited student's team id.&lt;br /&gt;
&lt;br /&gt;
===Issue3===&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113738</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113738"/>
		<updated>2017-11-27T18:29:04Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Issue2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
==Modified Files ==&lt;br /&gt;
1)app/views/student_teams/view.html.erb&lt;br /&gt;
&lt;br /&gt;
2)app/views/join_team_requests/_list_received.erb&lt;br /&gt;
&lt;br /&gt;
3)app/controllers/join_team_requests_controller.rb&lt;br /&gt;
&lt;br /&gt;
4)app/models/join_team_request.rb&lt;br /&gt;
&lt;br /&gt;
5)app/models/sign_up_sheet.rb&lt;br /&gt;
&lt;br /&gt;
6)app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
&lt;br /&gt;
7)app/views/sign_up_sheet/_all_actions.html.erb&lt;br /&gt;
&lt;br /&gt;
8)app/views/teams/list.html.erb&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
===Issue1===&lt;br /&gt;
When someone creates an ad ,the horny icon does not  appear in the the last column of the signup sheet.the code that show horny icon is below:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;% if SignUpSheet.has_teammate_ads?(topic.id) %&amp;gt;&lt;br /&gt;
 &amp;lt;%= link_to image_tag('ad.png', :border =&amp;gt; 0, :title =&amp;gt; 'Ad', :align =&amp;gt; 'middle', :style =&amp;gt; 'width: 24px; height:24px'), :controller=&amp;gt;'sign_up_sheet', &lt;br /&gt;
 :action=&amp;gt; 'show_team',assignment_id=&amp;gt;@assignment.id, :id=&amp;gt;topic.id%&amp;gt;&lt;br /&gt;
 &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After debugging ,I found even if you create an ad before ,the if block of code will not be executed. Therefore something must be wrong with has_teammate_ads? method.Then I rewrite that method.Signupteam has an attribute:advertise_for_partner ,it will be set true after team members create an ad for their team.i  return this attribute to the has_teammate_ads? method and the horny icon appears.This method code is below:&lt;br /&gt;
   def self.has_teammate_ads?(topic_id)&lt;br /&gt;
     @ads_exsit=false&lt;br /&gt;
     @result=SignedUpTeam.where(&amp;quot;topic_id = ?&amp;quot;, topic_id.to_s)&lt;br /&gt;
     @result.each do |result|&lt;br /&gt;
      team=result.team&lt;br /&gt;
      @ads_exsit=team.advertise_for_partner&lt;br /&gt;
      end&lt;br /&gt;
      @ads_exsit&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
===Issue2===&lt;br /&gt;
I found currently when you sent join team request in the ad,the team received that request would see invite and decline button on their student teams#view page.if they are willing to add the student who send request as member ,they have to send invitation and wait for reply. This is not reasonable and convenient. what should happen is that when the student send join team request,the team members could see accept and decline button ,After they click accept button ,the student would leave his/her original team and join the new team. &lt;br /&gt;
What I have done is that I  add accept method in join team request controller.The method is below:&lt;br /&gt;
 &lt;br /&gt;
   def accept&lt;br /&gt;
      unless JoinTeamRequest.accept_invite(params[:team_id], @inviter_userid,  @invited_userid, @assignment_id)&lt;br /&gt;
      flash[:error] = 'The system failed to add you to the team that invited you.'&lt;br /&gt;
     end&lt;br /&gt;
     redirect_to view_student_teams_path student_id: params[:student_id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
Here @invited_userid is acquired from the student who sent join team request. inviter_userid is from the team members who received the request.  team_id is invited student's team id.&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113731</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113731"/>
		<updated>2017-11-27T17:06:51Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Issue1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
==Modified Files ==&lt;br /&gt;
1)app/views/student_teams/view.html.erb&lt;br /&gt;
&lt;br /&gt;
2)app/views/join_team_requests/_list_received.erb&lt;br /&gt;
&lt;br /&gt;
3)app/controllers/join_team_requests_controller.rb&lt;br /&gt;
&lt;br /&gt;
4)app/models/join_team_request.rb&lt;br /&gt;
&lt;br /&gt;
5)app/models/sign_up_sheet.rb&lt;br /&gt;
&lt;br /&gt;
6)app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
&lt;br /&gt;
7)app/views/sign_up_sheet/_all_actions.html.erb&lt;br /&gt;
&lt;br /&gt;
8)app/views/teams/list.html.erb&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
===Issue1===&lt;br /&gt;
When someone creates an ad ,the horny icon does not  appear in the the last column of the signup sheet.the code that show horny icon is below:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;% if SignUpSheet.has_teammate_ads?(topic.id) %&amp;gt;&lt;br /&gt;
 &amp;lt;%= link_to image_tag('ad.png', :border =&amp;gt; 0, :title =&amp;gt; 'Ad', :align =&amp;gt; 'middle', :style =&amp;gt; 'width: 24px; height:24px'), :controller=&amp;gt;'sign_up_sheet', &lt;br /&gt;
 :action=&amp;gt; 'show_team',assignment_id=&amp;gt;@assignment.id, :id=&amp;gt;topic.id%&amp;gt;&lt;br /&gt;
 &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After debugging ,I found even if you create an ad before ,the if block of code will not be executed. Therefore something must be wrong with has_teammate_ads? method.Then I rewrite that method.Signupteam has an attribute:advertise_for_partner ,it will be set true after team members create an ad for their team.i  return this attribute to the has_teammate_ads? method and the horny icon appears.This method code is below:&lt;br /&gt;
   def self.has_teammate_ads?(topic_id)&lt;br /&gt;
     @ads_exsit=false&lt;br /&gt;
     @result=SignedUpTeam.where(&amp;quot;topic_id = ?&amp;quot;, topic_id.to_s)&lt;br /&gt;
     @result.each do |result|&lt;br /&gt;
      team=result.team&lt;br /&gt;
      @ads_exsit=team.advertise_for_partner&lt;br /&gt;
      end&lt;br /&gt;
      @ads_exsit&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
===Issue2===&lt;br /&gt;
I found currently when you sent join team request in the ad,the team received that request would see invite and decline button on their student teams#view page.if they are willing to add the student who send request as member ,they have to send invitation and wait for reply. This is not reasonable and convenient. what should happen is that when the student send join team request,the team members could see accept and decline button ,After they click accept button ,the student would leave his/her original team and join the new team. &lt;br /&gt;
What I have done is that I  add accept method in join team request controller.The method is below:&lt;br /&gt;
 &lt;br /&gt;
   def accept&lt;br /&gt;
      unless JoinTeamRequest.accept_invite(params[:team_id], @inviter_userid,  @invited_userid, @assignment_id)&lt;br /&gt;
      flash[:error] = 'The system failed to add you to the team that invited you.'&lt;br /&gt;
     end&lt;br /&gt;
     redirect_to view_student_teams_path student_id: params[:student_id]&lt;br /&gt;
  end&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113730</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113730"/>
		<updated>2017-11-27T16:44:44Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Issue1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
==Modified Files ==&lt;br /&gt;
1)app/views/student_teams/view.html.erb&lt;br /&gt;
&lt;br /&gt;
2)app/views/join_team_requests/_list_received.erb&lt;br /&gt;
&lt;br /&gt;
3)app/controllers/join_team_requests_controller.rb&lt;br /&gt;
&lt;br /&gt;
4)app/models/join_team_request.rb&lt;br /&gt;
&lt;br /&gt;
5)app/models/sign_up_sheet.rb&lt;br /&gt;
&lt;br /&gt;
6)app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
&lt;br /&gt;
7)app/views/sign_up_sheet/_all_actions.html.erb&lt;br /&gt;
&lt;br /&gt;
8)app/views/teams/list.html.erb&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
===Issue1===&lt;br /&gt;
When someone creates an ad ,the horny icon does not  appear in the the last column of the signup sheet.the code that show horny icon is below:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;% if SignUpSheet.has_teammate_ads?(topic.id) %&amp;gt;&lt;br /&gt;
 &amp;lt;%= link_to image_tag('ad.png', :border =&amp;gt; 0, :title =&amp;gt; 'Ad', :align =&amp;gt; 'middle', :style =&amp;gt; 'width: 24px; height:24px'), :controller=&amp;gt;'sign_up_sheet', &lt;br /&gt;
 :action=&amp;gt; 'show_team',assignment_id=&amp;gt;@assignment.id, :id=&amp;gt;topic.id%&amp;gt;&lt;br /&gt;
 &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After debugging ,I found even if you create an ad before ,the if block of code will not be executed. Therefore something must be wrong with has_teammate_ads? method.Then I rewrite that method.Signupteam has an attribute:advertise_for_partner ,it will be set true after team members create an ad for their team.i  return this attribute to the has_teammate_ads? method and the horny icon appears.This method code is below:&lt;br /&gt;
   def self.has_teammate_ads?(topic_id)&lt;br /&gt;
     @ads_exsit=false&lt;br /&gt;
     @result=SignedUpTeam.where(&amp;quot;topic_id = ?&amp;quot;, topic_id.to_s)&lt;br /&gt;
     @result.each do |result|&lt;br /&gt;
      team=result.team&lt;br /&gt;
      @ads_exsit=team.advertise_for_partner&lt;br /&gt;
      end&lt;br /&gt;
      @ads_exsit&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113729</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113729"/>
		<updated>2017-11-27T16:43:56Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Approach taken to resolve the issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
==Modified Files ==&lt;br /&gt;
1)app/views/student_teams/view.html.erb&lt;br /&gt;
&lt;br /&gt;
2)app/views/join_team_requests/_list_received.erb&lt;br /&gt;
&lt;br /&gt;
3)app/controllers/join_team_requests_controller.rb&lt;br /&gt;
&lt;br /&gt;
4)app/models/join_team_request.rb&lt;br /&gt;
&lt;br /&gt;
5)app/models/sign_up_sheet.rb&lt;br /&gt;
&lt;br /&gt;
6)app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
&lt;br /&gt;
7)app/views/sign_up_sheet/_all_actions.html.erb&lt;br /&gt;
&lt;br /&gt;
8)app/views/teams/list.html.erb&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
==Issue1==&lt;br /&gt;
When someone creates an ad ,the horny icon does not  appear in the the last column of the signup sheet.the code that show horny icon is below:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;% if SignUpSheet.has_teammate_ads?(topic.id) %&amp;gt;&lt;br /&gt;
 &amp;lt;%= link_to image_tag('ad.png', :border =&amp;gt; 0, :title =&amp;gt; 'Ad', :align =&amp;gt; 'middle', :style =&amp;gt; 'width: 24px; height:24px'), :controller=&amp;gt;'sign_up_sheet', &lt;br /&gt;
 :action=&amp;gt; 'show_team',assignment_id=&amp;gt;@assignment.id, :id=&amp;gt;topic.id%&amp;gt;&lt;br /&gt;
 &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After debugging ,I found even if you create an ad before ,the if block of code will not be executed. Therefore something must be wrong with has_teammate_ads? method.Then I rewrite that method.Signupteam has an attribute:advertise_for_partner ,it will be set true after team members create an ad for their team.i  return this attribute to the has_teammate_ads? method and the horny icon appears.This method code is below:&lt;br /&gt;
   def self.has_teammate_ads?(topic_id)&lt;br /&gt;
     @ads_exsit=false&lt;br /&gt;
     @result=SignedUpTeam.where(&amp;quot;topic_id = ?&amp;quot;, topic_id.to_s)&lt;br /&gt;
     @result.each do |result|&lt;br /&gt;
      team=result.team&lt;br /&gt;
      @ads_exsit=team.advertise_for_partner&lt;br /&gt;
      end&lt;br /&gt;
      @ads_exsit&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113728</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113728"/>
		<updated>2017-11-27T16:39:14Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Approach taken to resolve the issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
==Modified Files ==&lt;br /&gt;
1)app/views/student_teams/view.html.erb&lt;br /&gt;
&lt;br /&gt;
2)app/views/join_team_requests/_list_received.erb&lt;br /&gt;
&lt;br /&gt;
3)app/controllers/join_team_requests_controller.rb&lt;br /&gt;
&lt;br /&gt;
4)app/models/join_team_request.rb&lt;br /&gt;
&lt;br /&gt;
5)app/models/sign_up_sheet.rb&lt;br /&gt;
&lt;br /&gt;
6)app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
&lt;br /&gt;
7)app/views/sign_up_sheet/_all_actions.html.erb&lt;br /&gt;
&lt;br /&gt;
8)app/views/teams/list.html.erb&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;br /&gt;
&lt;br /&gt;
issue1&lt;br /&gt;
When someone creates an ad ,the horny icon does not  appear in the the last column of the signup sheet.the code that show horny icon is below:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;% if SignUpSheet.has_teammate_ads?(topic.id) %&amp;gt;&lt;br /&gt;
 &amp;lt;%= link_to image_tag('ad.png', :border =&amp;gt; 0, :title =&amp;gt; 'Ad', :align =&amp;gt; 'middle', :style =&amp;gt; 'width: 24px; height:24px'), :controller=&amp;gt;'sign_up_sheet', &lt;br /&gt;
 :action=&amp;gt; 'show_team',assignment_id=&amp;gt;@assignment.id, :id=&amp;gt;topic.id%&amp;gt;&lt;br /&gt;
 &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After debugging ,I found even if you create an ad before ,the if block of code will not be executed. Therefore something must be wrong with has_teammate_ads? method.Then I rewrite that method.Signupteam has an attribute:advertise_for_partner ,it will be set true after team members create an ad for their team.i  return this attribute to the has_teammate_ads? method and the horny icon appears.This method code is below:&lt;br /&gt;
   def self.has_teammate_ads?(topic_id)&lt;br /&gt;
     @ads_exsit=false&lt;br /&gt;
     @result=SignedUpTeam.where(&amp;quot;topic_id = ?&amp;quot;, topic_id.to_s)&lt;br /&gt;
     @result.each do |result|&lt;br /&gt;
      team=result.team&lt;br /&gt;
      @ads_exsit=team.advertise_for_partner&lt;br /&gt;
      end&lt;br /&gt;
      @ads_exsit&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113727</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113727"/>
		<updated>2017-11-27T16:03:16Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Modified Files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
==Modified Files ==&lt;br /&gt;
1)app/views/student_teams/view.html.erb&lt;br /&gt;
&lt;br /&gt;
2)app/views/join_team_requests/_list_received.erb&lt;br /&gt;
&lt;br /&gt;
3)app/controllers/join_team_requests_controller.rb&lt;br /&gt;
&lt;br /&gt;
4)app/models/join_team_request.rb&lt;br /&gt;
&lt;br /&gt;
5)app/models/sign_up_sheet.rb&lt;br /&gt;
&lt;br /&gt;
6)app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
&lt;br /&gt;
7)app/views/sign_up_sheet/_all_actions.html.erb&lt;br /&gt;
&lt;br /&gt;
8)app/views/teams/list.html.erb&lt;br /&gt;
&lt;br /&gt;
=='''Approach taken to resolve the issues'''==&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113726</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113726"/>
		<updated>2017-11-27T15:50:48Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Modified Files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
==Modified Files ==&lt;br /&gt;
1)app/views/student_teams/view.html.erb&lt;br /&gt;
&lt;br /&gt;
2)app/views/join_team_requests/_list_received.erb&lt;br /&gt;
&lt;br /&gt;
3)app/controllers/join_team_requests_controller.rb&lt;br /&gt;
&lt;br /&gt;
4)app/models/join_team_request.rb&lt;br /&gt;
&lt;br /&gt;
5)app/models/sign_up_sheet.rb&lt;br /&gt;
&lt;br /&gt;
6)app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
&lt;br /&gt;
7)app/views/sign_up_sheet/_all_actions.html.erb&lt;br /&gt;
&lt;br /&gt;
8)app/views/teams/list.html.erb&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113725</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113725"/>
		<updated>2017-11-27T15:49:33Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* UI Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
==Modified Files ==&lt;br /&gt;
1)app/views/student_teams/view.html.erb&lt;br /&gt;
2)app/views/join_team_requests/_list_received.erb&lt;br /&gt;
3)app/controllers/join_team_requests_controller.rb&lt;br /&gt;
4)app/models/join_team_request.rb&lt;br /&gt;
5)app/models/sign_up_sheet.rb&lt;br /&gt;
6)app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
7)app/views/sign_up_sheet/_all_actions.html.erb&lt;br /&gt;
8)app/views/teams/list.html.erb&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113724</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=113724"/>
		<updated>2017-11-27T15:19:32Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Task Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
== UI Design ==&lt;br /&gt;
We will add horn icon at the last column of the signup sheet page if there is someone who creates advertisement looking for teammates.After clicking this icon ,it would lead students to another page which show this advertisement to students,then student could send request to join their team.&lt;br /&gt;
[[File:26.png]]&lt;br /&gt;
[[File:27.png]]&lt;br /&gt;
&lt;br /&gt;
we will also display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
[[File:29.png]]&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:29.png&amp;diff=111840</id>
		<title>File:29.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:29.png&amp;diff=111840"/>
		<updated>2017-11-05T21:11:41Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=111839</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=111839"/>
		<updated>2017-11-05T21:10:48Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* UI Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team with invitation links in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
== UI Design ==&lt;br /&gt;
We will add horn icon at the last column of the signup sheet page if there is someone who creates advertisement looking for teammates.After clicking this icon ,it would lead students to another page which show this advertisement to students,then student could send request to join their team.&lt;br /&gt;
[[File:26.png]]&lt;br /&gt;
[[File:27.png]]&lt;br /&gt;
&lt;br /&gt;
we will also display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
[[File:29.png]]&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:28.png&amp;diff=111838</id>
		<title>File:28.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:28.png&amp;diff=111838"/>
		<updated>2017-11-05T21:09:02Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: uploaded a new version of &amp;amp;quot;File:28.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:28.png&amp;diff=111837</id>
		<title>File:28.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:28.png&amp;diff=111837"/>
		<updated>2017-11-05T21:08:26Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=111836</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=111836"/>
		<updated>2017-11-05T21:05:08Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* UI Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team with invitation links in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
== UI Design ==&lt;br /&gt;
We will add horn icon at the last column of the signup sheet page if there is someone who creates advertisement looking for teammates.After clicking this icon ,it would lead students to another page which show this advertisement to students,then student could send request to join their team.&lt;br /&gt;
[[File:26.png]]&lt;br /&gt;
[[File:27.png]]&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:27.png&amp;diff=111835</id>
		<title>File:27.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:27.png&amp;diff=111835"/>
		<updated>2017-11-05T21:04:56Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:26.png&amp;diff=111834</id>
		<title>File:26.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:26.png&amp;diff=111834"/>
		<updated>2017-11-05T21:02:40Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: uploaded a new version of &amp;amp;quot;File:26.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:26.png&amp;diff=111833</id>
		<title>File:26.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:26.png&amp;diff=111833"/>
		<updated>2017-11-05T21:00:26Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: uploaded a new version of &amp;amp;quot;File:26.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=111827</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=111827"/>
		<updated>2017-11-05T20:53:38Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* UI Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team with invitation links in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
== UI Design ==&lt;br /&gt;
We will add horn icon at the last column of the signup sheet page if there is someone who creates advertisement looking for teammates.After clicking this icon ,it would lead students to another page which show this advertisement to students,then student could send request to join their team.&lt;br /&gt;
[[File:26.png]]&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:26.png&amp;diff=111826</id>
		<title>File:26.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:26.png&amp;diff=111826"/>
		<updated>2017-11-05T20:53:12Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: uploaded a new version of &amp;amp;quot;File:26.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:26.png&amp;diff=111825</id>
		<title>File:26.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:26.png&amp;diff=111825"/>
		<updated>2017-11-05T20:52:36Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=111823</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=111823"/>
		<updated>2017-11-05T20:45:09Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Task Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team with invitation links in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;br /&gt;
&lt;br /&gt;
== UI Design ==&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=111818</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=111818"/>
		<updated>2017-11-05T16:04:11Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Task Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team with invitation links in teams#list page&lt;br /&gt;
&lt;br /&gt;
Write feature tests to verify your modifications:&lt;br /&gt;
&lt;br /&gt;
Create team_invitation_spec.rb file in spec/features folder&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=111817</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=111817"/>
		<updated>2017-11-05T15:59:18Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;br /&gt;
&lt;br /&gt;
== Task Description ==&lt;br /&gt;
&lt;br /&gt;
Fix the second way to find other students to join your team.&lt;br /&gt;
&lt;br /&gt;
Currently, after you create an advertisement, the horn icon does not appear in the the last column of the signup sheet.&lt;br /&gt;
&lt;br /&gt;
For student end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have a team with invitation links in student_teams#view page&lt;br /&gt;
You could invite students to your team by clicking invitation links. If s/he accept your invitation,s/he will leave original team and join in your team. It will be more straightforward than typing UnityID.&lt;br /&gt;
&lt;br /&gt;
For instructor end:&lt;br /&gt;
&lt;br /&gt;
Display a list of students who do not have team with invitation links in teams#list page&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=111816</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=111816"/>
		<updated>2017-11-05T15:34:58Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Problem Statement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team. &lt;br /&gt;
&lt;br /&gt;
It would be better for students who do not have team yet or whose team is not full yet to be able to see a list of students who don’t already have teams. So too for instructors.&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=111815</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=111815"/>
		<updated>2017-11-05T15:30:46Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join.&lt;br /&gt;
&lt;br /&gt;
Currently, there are 2 ways to find other students to join your team:&lt;br /&gt;
&lt;br /&gt;
1.If your team is not full, you could invite people by inputting his/her UnityID. It will send an invitation to certain user. If s/he accept your invitation,s/he will leave original team and join your team.&lt;br /&gt;
2.You could create an advisement by clicking “Your team” link and then clicking “Create” link under “Advertisement for teammates” section. Then your advertisement will appear the last column of the signup sheet page with a horn icon. In this way, all classmates could see your advisement. Someone could send a request to join your team. If you accept their request, s/he will leave original team and join in your team.&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=111814</id>
		<title>CSC/ECE 517 Fall 2017/E1793. Help students find teams to join</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1793._Help_students_find_teams_to_join&amp;diff=111814"/>
		<updated>2017-11-05T15:24:28Z</updated>

		<summary type="html">&lt;p&gt;Ygui2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
==='''Problem Statement'''===&lt;br /&gt;
For team-based assignments, it always takes time to find suitable team members. We already have bidding, which could help you to join in a team with other team members hold similar bidding preferences. However, you may not be satisfied with automated team formation and want to switch to another team. In this project, we will build a new feature to help students find teams to join&lt;/div&gt;</summary>
		<author><name>Ygui2</name></author>
	</entry>
</feed>