<?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=Rravill</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=Rravill"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Rravill"/>
	<updated>2026-09-12T18:29:54Z</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_2015_E1579_Instructor_account_creation_over_the_web&amp;diff=99879</id>
		<title>CSC/ECE 517 Fall 2015 E1579 Instructor account creation over the web</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1579_Instructor_account_creation_over_the_web&amp;diff=99879"/>
		<updated>2015-11-14T03:44:59Z</updated>

		<summary type="html">&lt;p&gt;Rravill: /* Files to be changed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
Introduction to Expertiza:&lt;br /&gt;
&lt;br /&gt;
Expertiza is a project developed using Ruby on Rails. It provides features like peer review, team assignments and submission of projects. This can be achieved by submitting code base, URL of hosted code on remote server and Wiki submissions. It is an open source application and the code can be cloned from GitHub. This application provides an efficient way to manage assignments, grades and reviews. This makes the process easier and faster when the class strength is large.&lt;br /&gt;
&lt;br /&gt;
== '''Purpose''' ==&lt;br /&gt;
&lt;br /&gt;
The purpose of this project is to allow new users to access the system and experiment with all the features of Expertiza and make a “Demo like” feel for the new user where the user can experiment with it.  This project adds  a new feature of Instructor Creation over the web which is completely different from the previous way  the user and instructor accounts were created by existing super administrators, instructors or TAs. Code will be restructured to convey readability, handle exceptions.&lt;br /&gt;
 &lt;br /&gt;
== '''Scope''' ==&lt;br /&gt;
&lt;br /&gt;
The scope of this project will involve adding a new View/Page that would input all the new user(Instructor) Details which would be a signup page.The signup page will be designed in a way which would have security feature as Captchas embedded into it.  There would be another new View/Page created that would act as the landing page for the newly created Demo_instructor  which would contain specific instructions/ Video on how to add assignments, add students to the assignments. Also an email is sent soon after a successful creation of such user. The project also deals with providing limited access to all the features, which could be extended manually by a super admin.The code will also be tested well to ensure the robustness of newly added functionality without compromising the existing working functionalities.&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
==== What needs to be done ====&lt;br /&gt;
&lt;br /&gt;
*Allow people to request instructor accounts over the web. &lt;br /&gt;
**Add a Link in Main Screen “Instructor Account request”.&lt;br /&gt;
**Create a New Page where the User Fills the details wrt to a new Instructor Privileged access.&lt;br /&gt;
**Include Captcha Functionality and other necessary features for a secure Sign Up.&lt;br /&gt;
&lt;br /&gt;
*Upon Successful Creation of Instructor Account.&lt;br /&gt;
**Redirect the New Instructor back to the Login Page.&lt;br /&gt;
**Send an email to the super Admin notifying him of a new Instructor that has been created over the web&lt;br /&gt;
&lt;br /&gt;
*Upon Successful Login of the New Instructor&lt;br /&gt;
**Redirect the User to a  New Landing Page/Instruction Page which gives information on how to create an assignments and register students for it and other  basic information needed. Basically a Placeholder page that can be used for providing information.&lt;br /&gt;
**Provide a Button that would redirect him to the main Expertiza page.&lt;br /&gt;
**Make sure that he does not see any Public entities( assignments, Courses) created by any other TA's, Admins or Super Admins.&lt;br /&gt;
**Should have a general access to Expertiza and should be able to perform basic actions like adding a course, adding an assignment and assigning students for the created assignments.&lt;br /&gt;
&lt;br /&gt;
==== Files to be changed ====&lt;br /&gt;
&lt;br /&gt;
'''A role named Demo-Instructor is added to the added to the role.rb model with the following code:'''&lt;br /&gt;
&lt;br /&gt;
  def self.demo_instructor&lt;br /&gt;
    @@instructor_role ||= find_by_name 'Demo-Instructor'&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def demo_instructor?&lt;br /&gt;
    name['Demo-Instructor']&lt;br /&gt;
  end &lt;br /&gt;
&lt;br /&gt;
Various controller and model files containing action_allowed? should be updated as &lt;br /&gt;
&lt;br /&gt;
  def action_allowed?&lt;br /&gt;
    ['Instructor', 'Teaching Assistant', 'Administrator', 'Super-Administrator', 'Student', 'Demo-Instructor'].include? current_role_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
roles table will be updated will be updated by the super-administrator from the new.html.erb form associated with the new action of roles_controller&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''For the creation of Demo Instructor experimenting with the features of expertiza&lt;br /&gt;
'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the controller admin_controller.rb, the new actions to be added and their purpose is explained below.&lt;br /&gt;
&lt;br /&gt;
Action added: new_demo_instructor &amp;lt;br&amp;gt;&lt;br /&gt;
Purpose: Linked to the Signup form for creating an instructor to allow the experimenting with expertiza features&lt;br /&gt;
&lt;br /&gt;
Action added: create_demo_instructor&amp;lt;br&amp;gt;&lt;br /&gt;
Purpose: the save operation for the instructor created into the database&lt;br /&gt;
&lt;br /&gt;
Action added: list_demo_instructors&amp;lt;br&amp;gt;&lt;br /&gt;
Purpose: To list them &lt;br /&gt;
&lt;br /&gt;
Action added : remove_demo_instructor&amp;lt;br&amp;gt;&lt;br /&gt;
Purpose: For the super administrator to remove the instructor&lt;br /&gt;
&lt;br /&gt;
The corresponding views for the new_demo_instructor, list_demo_instructors, remove_demo_instructor are added manually.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Upon Demo Instructor Login into the account created&lt;br /&gt;
'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In the tree_display_controller.rb, goto_instructions action is added and instructions.html.erb view is created for this action. instructions.html.erb contains the instructions required for the creation of courses, assignments, adding participants to assignments, etc.&lt;br /&gt;
&lt;br /&gt;
== '''Requirements''' ==&lt;br /&gt;
 &lt;br /&gt;
The main objective for the project is to add the new signup functionality for the new User and also to clarify and improve code quality.  Although specific implementation details will change through this process, the functionality of the system will remain intact.  The overall requirements to the system will therefore not change. We need to make sure that the new demo instructor will not be able to see all the public entities of other instructors, TA's. need to implement and change all the necessary files to make sure unnecessary items are not showcased to the demo instructor.&lt;br /&gt;
&lt;br /&gt;
== '''Mock Ups ''' ==&lt;br /&gt;
&lt;br /&gt;
The Expertiza Login page with the Instructor Account Request Link.&lt;br /&gt;
&lt;br /&gt;
[[File: Homepage.PNG]]&lt;br /&gt;
&lt;br /&gt;
The PlaceHolder page will have few instructions and a Simple Video Tutorial.&lt;br /&gt;
&lt;br /&gt;
[[File: Placehlder.PNG]]&lt;br /&gt;
&lt;br /&gt;
The home page for demo instructor excluding public entities.&lt;br /&gt;
&lt;br /&gt;
[[File: Instructor_default_page_(1).PNG]]&lt;br /&gt;
&lt;br /&gt;
== '''Use Cases''' ==&lt;br /&gt;
&lt;br /&gt;
'''1.Sign-up as new Instructor''': New users can signup to view all features(except the public entities).&lt;br /&gt;
&lt;br /&gt;
'''2.View instructions page''': New instructor can view an instructions page for a walk through of the features.&lt;br /&gt;
&lt;br /&gt;
'''3.Super-admin gives access:''' Super-admin gives access to all public entities for the newly created instructor.&lt;br /&gt;
&lt;br /&gt;
'''4.New instructor-private items''' The demo instructor can access all the private items.&lt;br /&gt;
&lt;br /&gt;
== ''' References ''' ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza home page] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://research.csc.ncsu.edu/efg/expertiza/papers Papers on Expertiza]&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1579_Instructor_account_creation_over_the_web&amp;diff=99876</id>
		<title>CSC/ECE 517 Fall 2015 E1579 Instructor account creation over the web</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1579_Instructor_account_creation_over_the_web&amp;diff=99876"/>
		<updated>2015-11-14T03:38:18Z</updated>

		<summary type="html">&lt;p&gt;Rravill: /* Files to be changed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
Introduction to Expertiza:&lt;br /&gt;
&lt;br /&gt;
Expertiza is a project developed using Ruby on Rails. It provides features like peer review, team assignments and submission of projects. This can be achieved by submitting code base, URL of hosted code on remote server and Wiki submissions. It is an open source application and the code can be cloned from GitHub. This application provides an efficient way to manage assignments, grades and reviews. This makes the process easier and faster when the class strength is large.&lt;br /&gt;
&lt;br /&gt;
== '''Purpose''' ==&lt;br /&gt;
&lt;br /&gt;
The purpose of this project is to allow new users to access the system and experiment with all the features of Expertiza and make a “Demo like” feel for the new user where the user can experiment with it.  This project adds  a new feature of Instructor Creation over the web which is completely different from the previous way  the user and instructor accounts were created by existing super administrators, instructors or TAs. Code will be restructured to convey readability, handle exceptions.&lt;br /&gt;
 &lt;br /&gt;
== '''Scope''' ==&lt;br /&gt;
&lt;br /&gt;
The scope of this project will involve adding a new View/Page that would input all the new user(Instructor) Details which would be a signup page.The signup page will be designed in a way which would have security feature as Captchas embedded into it.  There would be another new View/Page created that would act as the landing page for the newly created Demo_instructor  which would contain specific instructions/ Video on how to add assignments, add students to the assignments. Also an email is sent soon after a successful creation of such user. The project also deals with providing limited access to all the features, which could be extended manually by a super admin.The code will also be tested well to ensure the robustness of newly added functionality without compromising the existing working functionalities.&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
==== What needs to be done ====&lt;br /&gt;
&lt;br /&gt;
*Allow people to request instructor accounts over the web. &lt;br /&gt;
**Add a Link in Main Screen “Instructor Account request”.&lt;br /&gt;
**Create a New Page where the User Fills the details wrt to a new Instructor Privileged access.&lt;br /&gt;
**Include Captcha Functionality and other necessary features for a secure Sign Up.&lt;br /&gt;
&lt;br /&gt;
*Upon Successful Creation of Instructor Account.&lt;br /&gt;
**Redirect the New Instructor back to the Login Page.&lt;br /&gt;
**Send an email to the super Admin notifying him of a new Instructor that has been created over the web&lt;br /&gt;
&lt;br /&gt;
*Upon Successful Login of the New Instructor&lt;br /&gt;
**Redirect the User to a  New Landing Page/Instruction Page which gives information on how to create an assignments and register students for it and other  basic information needed. Basically a Placeholder page that can be used for providing information.&lt;br /&gt;
**Provide a Button that would redirect him to the main Expertiza page.&lt;br /&gt;
**Make sure that he does not see any Public entities( assignments, Courses) created by any other TA's, Admins or Super Admins.&lt;br /&gt;
**Should have a general access to Expertiza and should be able to perform basic actions like adding a course, adding an assignment and assigning students for the created assignments.&lt;br /&gt;
&lt;br /&gt;
==== Files to be changed ====&lt;br /&gt;
&lt;br /&gt;
'''A role named Demo-Instructor is added to the added to the role.rb model with the following code:'''&lt;br /&gt;
&lt;br /&gt;
  def self.demo_instructor&lt;br /&gt;
    @@instructor_role ||= find_by_name 'Demo-Instructor'&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def demo_instructor?&lt;br /&gt;
    name['Demo-Instructor']&lt;br /&gt;
  end &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Various controller and model files containing action_allowed? should be updated as &lt;br /&gt;
&lt;br /&gt;
  def action_allowed?&lt;br /&gt;
    ['Instructor', 'Teaching Assistant', 'Administrator', 'Super-Administrator', 'Student', 'Demo-Instructor'].include? current_role_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
roles table will be updated will be updated by the super-administrator from the new.html.erb form associated with the new action of roles_controller&lt;br /&gt;
&lt;br /&gt;
'''For the creation of Demo Instructor experimenting with the features of expertiza&lt;br /&gt;
'''&lt;br /&gt;
In the controller admin_controller.rb, the new methods to be added and their purpose is explained below.&lt;br /&gt;
&lt;br /&gt;
Method: new_demo_instructor &amp;lt;br&amp;gt;&lt;br /&gt;
Purpose: Linked to the Signup form for creating an instructor to allow the experimenting with expertiza features&lt;br /&gt;
&lt;br /&gt;
Method: create_demo_instructor&amp;lt;br&amp;gt;&lt;br /&gt;
Purpose: the save operation for the instructor created into the database&lt;br /&gt;
&lt;br /&gt;
Method: list_demo_instructors&amp;lt;br&amp;gt;&lt;br /&gt;
Purpose: To list them &lt;br /&gt;
&lt;br /&gt;
Method : remove_demo_instructor&amp;lt;br&amp;gt;&lt;br /&gt;
Purpose: For the super administrator to remove the instructor&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The corresponding views for the new_demo_instructor, list_demo_instructors, remove_demo_instructor are added manually.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Upon Demo Instructor Login into the account created'''&lt;br /&gt;
&lt;br /&gt;
In the tree_display_controller.rb, goto_instructions action is added and instructions.html.erb view is created for this action. instructions.html.erb contains the instructions required for the creation of courses, assignments, adding participants to assignments, etc.&lt;br /&gt;
&lt;br /&gt;
== '''Requirements''' ==&lt;br /&gt;
 &lt;br /&gt;
The main objective for the project is to add the new signup functionality for the new User and also to clarify and improve code quality.  Although specific implementation details will change through this process, the functionality of the system will remain intact.  The overall requirements to the system will therefore not change. We need to make sure that the new demo instructor will not be able to see all the public entities of other instructors, TA's. need to implement and change all the necessary files to make sure unnecessary items are not showcased to the demo instructor.&lt;br /&gt;
&lt;br /&gt;
== '''Mock Ups ''' ==&lt;br /&gt;
&lt;br /&gt;
The Expertiza Login page with the Instructor Account Request Link.&lt;br /&gt;
&lt;br /&gt;
[[File: Homepage.PNG]]&lt;br /&gt;
&lt;br /&gt;
The PlaceHolder page will have few instructions and a Simple Video Tutorial.&lt;br /&gt;
&lt;br /&gt;
[[File: Placehlder.PNG]]&lt;br /&gt;
&lt;br /&gt;
The home page for demo instructor excluding public entities.&lt;br /&gt;
&lt;br /&gt;
[[File: Instructor_default_page_(1).PNG]]&lt;br /&gt;
&lt;br /&gt;
== '''Use Cases''' ==&lt;br /&gt;
&lt;br /&gt;
'''1.Sign-up as new Instructor''': New users can signup to view all features(except the public entities).&lt;br /&gt;
&lt;br /&gt;
'''2.View instructions page''': New instructor can view an instructions page for a walk through of the features.&lt;br /&gt;
&lt;br /&gt;
'''3.Super-admin gives access:''' Super-admin gives access to all public entities for the newly created instructor.&lt;br /&gt;
&lt;br /&gt;
'''4.New instructor-private items''' The demo instructor can access all the private items.&lt;br /&gt;
&lt;br /&gt;
== ''' References ''' ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza home page] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://research.csc.ncsu.edu/efg/expertiza/papers Papers on Expertiza]&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1579_Instructor_account_creation_over_the_web&amp;diff=99875</id>
		<title>CSC/ECE 517 Fall 2015 E1579 Instructor account creation over the web</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1579_Instructor_account_creation_over_the_web&amp;diff=99875"/>
		<updated>2015-11-14T03:37:50Z</updated>

		<summary type="html">&lt;p&gt;Rravill: /* Files to be changed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
Introduction to Expertiza:&lt;br /&gt;
&lt;br /&gt;
Expertiza is a project developed using Ruby on Rails. It provides features like peer review, team assignments and submission of projects. This can be achieved by submitting code base, URL of hosted code on remote server and Wiki submissions. It is an open source application and the code can be cloned from GitHub. This application provides an efficient way to manage assignments, grades and reviews. This makes the process easier and faster when the class strength is large.&lt;br /&gt;
&lt;br /&gt;
== '''Purpose''' ==&lt;br /&gt;
&lt;br /&gt;
The purpose of this project is to allow new users to access the system and experiment with all the features of Expertiza and make a “Demo like” feel for the new user where the user can experiment with it.  This project adds  a new feature of Instructor Creation over the web which is completely different from the previous way  the user and instructor accounts were created by existing super administrators, instructors or TAs. Code will be restructured to convey readability, handle exceptions.&lt;br /&gt;
 &lt;br /&gt;
== '''Scope''' ==&lt;br /&gt;
&lt;br /&gt;
The scope of this project will involve adding a new View/Page that would input all the new user(Instructor) Details which would be a signup page.The signup page will be designed in a way which would have security feature as Captchas embedded into it.  There would be another new View/Page created that would act as the landing page for the newly created Demo_instructor  which would contain specific instructions/ Video on how to add assignments, add students to the assignments. Also an email is sent soon after a successful creation of such user. The project also deals with providing limited access to all the features, which could be extended manually by a super admin.The code will also be tested well to ensure the robustness of newly added functionality without compromising the existing working functionalities.&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
==== What needs to be done ====&lt;br /&gt;
&lt;br /&gt;
*Allow people to request instructor accounts over the web. &lt;br /&gt;
**Add a Link in Main Screen “Instructor Account request”.&lt;br /&gt;
**Create a New Page where the User Fills the details wrt to a new Instructor Privileged access.&lt;br /&gt;
**Include Captcha Functionality and other necessary features for a secure Sign Up.&lt;br /&gt;
&lt;br /&gt;
*Upon Successful Creation of Instructor Account.&lt;br /&gt;
**Redirect the New Instructor back to the Login Page.&lt;br /&gt;
**Send an email to the super Admin notifying him of a new Instructor that has been created over the web&lt;br /&gt;
&lt;br /&gt;
*Upon Successful Login of the New Instructor&lt;br /&gt;
**Redirect the User to a  New Landing Page/Instruction Page which gives information on how to create an assignments and register students for it and other  basic information needed. Basically a Placeholder page that can be used for providing information.&lt;br /&gt;
**Provide a Button that would redirect him to the main Expertiza page.&lt;br /&gt;
**Make sure that he does not see any Public entities( assignments, Courses) created by any other TA's, Admins or Super Admins.&lt;br /&gt;
**Should have a general access to Expertiza and should be able to perform basic actions like adding a course, adding an assignment and assigning students for the created assignments.&lt;br /&gt;
&lt;br /&gt;
==== Files to be changed ====&lt;br /&gt;
&lt;br /&gt;
'''A role named Demo-Instructor is added to the added to the role.rb model with the following code:'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  def self.demo_instructor&lt;br /&gt;
    @@instructor_role ||= find_by_name 'Demo-Instructor'&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def demo_instructor?&lt;br /&gt;
    name['Demo-Instructor']&lt;br /&gt;
  end &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Various controller and model files containing action_allowed? should be updated as &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  def action_allowed?&lt;br /&gt;
    ['Instructor', 'Teaching Assistant', 'Administrator', 'Super-Administrator', 'Student', 'Demo-Instructor'].include? current_role_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
roles table will be updated will be updated by the super-administrator from the new.html.erb form associated with the new action of roles_controller&lt;br /&gt;
&lt;br /&gt;
'''For the creation of Demo Instructor experimenting with the features of expertiza&lt;br /&gt;
'''&lt;br /&gt;
In the controller admin_controller.rb, the new methods to be added and their purpose is explained below.&lt;br /&gt;
&lt;br /&gt;
Method: new_demo_instructor &amp;lt;br&amp;gt;&lt;br /&gt;
Purpose: Linked to the Signup form for creating an instructor to allow the experimenting with expertiza features&lt;br /&gt;
&lt;br /&gt;
Method: create_demo_instructor&amp;lt;br&amp;gt;&lt;br /&gt;
Purpose: the save operation for the instructor created into the database&lt;br /&gt;
&lt;br /&gt;
Method: list_demo_instructors&amp;lt;br&amp;gt;&lt;br /&gt;
Purpose: To list them &lt;br /&gt;
&lt;br /&gt;
Method : remove_demo_instructor&amp;lt;br&amp;gt;&lt;br /&gt;
Purpose: For the super administrator to remove the instructor&lt;br /&gt;
&lt;br /&gt;
The corresponding views for the new_demo_instructor, list_demo_instructors, remove_demo_instructor are added manually.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Upon Demo Instructor Login into the account created'''&lt;br /&gt;
&lt;br /&gt;
In the tree_display_controller.rb, goto_instructions action is added and instructions.html.erb view is created for this action. instructions.html.erb contains the instructions required for the creation of courses, assignments, adding participants to assignments, etc.&lt;br /&gt;
&lt;br /&gt;
== '''Requirements''' ==&lt;br /&gt;
 &lt;br /&gt;
The main objective for the project is to add the new signup functionality for the new User and also to clarify and improve code quality.  Although specific implementation details will change through this process, the functionality of the system will remain intact.  The overall requirements to the system will therefore not change. We need to make sure that the new demo instructor will not be able to see all the public entities of other instructors, TA's. need to implement and change all the necessary files to make sure unnecessary items are not showcased to the demo instructor.&lt;br /&gt;
&lt;br /&gt;
== '''Mock Ups ''' ==&lt;br /&gt;
&lt;br /&gt;
The Expertiza Login page with the Instructor Account Request Link.&lt;br /&gt;
&lt;br /&gt;
[[File: Homepage.PNG]]&lt;br /&gt;
&lt;br /&gt;
The PlaceHolder page will have few instructions and a Simple Video Tutorial.&lt;br /&gt;
&lt;br /&gt;
[[File: Placehlder.PNG]]&lt;br /&gt;
&lt;br /&gt;
The home page for demo instructor excluding public entities.&lt;br /&gt;
&lt;br /&gt;
[[File: Instructor_default_page_(1).PNG]]&lt;br /&gt;
&lt;br /&gt;
== '''Use Cases''' ==&lt;br /&gt;
&lt;br /&gt;
'''1.Sign-up as new Instructor''': New users can signup to view all features(except the public entities).&lt;br /&gt;
&lt;br /&gt;
'''2.View instructions page''': New instructor can view an instructions page for a walk through of the features.&lt;br /&gt;
&lt;br /&gt;
'''3.Super-admin gives access:''' Super-admin gives access to all public entities for the newly created instructor.&lt;br /&gt;
&lt;br /&gt;
'''4.New instructor-private items''' The demo instructor can access all the private items.&lt;br /&gt;
&lt;br /&gt;
== ''' References ''' ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza home page] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://research.csc.ncsu.edu/efg/expertiza/papers Papers on Expertiza]&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1579_Instructor_account_creation_over_the_web&amp;diff=99868</id>
		<title>CSC/ECE 517 Fall 2015 E1579 Instructor account creation over the web</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1579_Instructor_account_creation_over_the_web&amp;diff=99868"/>
		<updated>2015-11-14T03:32:49Z</updated>

		<summary type="html">&lt;p&gt;Rravill: /* Files to be changed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
Introduction to Expertiza:&lt;br /&gt;
&lt;br /&gt;
Expertiza is a project developed using Ruby on Rails. It provides features like peer review, team assignments and submission of projects. This can be achieved by submitting code base, URL of hosted code on remote server and Wiki submissions. It is an open source application and the code can be cloned from GitHub. This application provides an efficient way to manage assignments, grades and reviews. This makes the process easier and faster when the class strength is large.&lt;br /&gt;
&lt;br /&gt;
== '''Purpose''' ==&lt;br /&gt;
&lt;br /&gt;
The purpose of this project is to allow new users to access the system and experiment with all the features of Expertiza and make a “Demo like” feel for the new user where the user can experiment with it.  This project adds  a new feature of Instructor Creation over the web which is completely different from the previous way  the user and instructor accounts were created by existing super administrators, instructors or TAs. Code will be restructured to convey readability, handle exceptions.&lt;br /&gt;
 &lt;br /&gt;
== '''Scope''' ==&lt;br /&gt;
&lt;br /&gt;
The scope of this project will involve adding a new View/Page that would input all the new user(Instructor) Details which would be a signup page.The signup page will be designed in a way which would have security feature as Captchas embedded into it.  There would be another new View/Page created that would act as the landing page for the newly created Demo_instructor  which would contain specific instructions/ Video on how to add assignments, add students to the assignments. Also an email is sent soon after a successful creation of such user. The project also deals with providing limited access to all the features, which could be extended manually by a super admin.The code will also be tested well to ensure the robustness of newly added functionality without compromising the existing working functionalities.&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
==== What needs to be done ====&lt;br /&gt;
&lt;br /&gt;
*Allow people to request instructor accounts over the web. &lt;br /&gt;
**Add a Link in Main Screen “Instructor Account request”.&lt;br /&gt;
**Create a New Page where the User Fills the details wrt to a new Instructor Privileged access.&lt;br /&gt;
**Include Captcha Functionality and other necessary features for a secure Sign Up.&lt;br /&gt;
&lt;br /&gt;
*Upon Successful Creation of Instructor Account.&lt;br /&gt;
**Redirect the New Instructor back to the Login Page.&lt;br /&gt;
**Send an email to the super Admin notifying him of a new Instructor that has been created over the web&lt;br /&gt;
&lt;br /&gt;
*Upon Successful Login of the New Instructor&lt;br /&gt;
**Redirect the User to a  New Landing Page/Instruction Page which gives information on how to create an assignments and register students for it and other  basic information needed. Basically a Placeholder page that can be used for providing information.&lt;br /&gt;
**Provide a Button that would redirect him to the main Expertiza page.&lt;br /&gt;
**Make sure that he does not see any Public entities( assignments, Courses) created by any other TA's, Admins or Super Admins.&lt;br /&gt;
**Should have a general access to Expertiza and should be able to perform basic actions like adding a course, adding an assignment and assigning students for the created assignments.&lt;br /&gt;
&lt;br /&gt;
==== Files to be changed ====&lt;br /&gt;
&lt;br /&gt;
'''A role named Demo-Instructor is added to the added to the role.rb model with the following code:'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  def self.demo_instructor&lt;br /&gt;
    @@instructor_role ||= find_by_name 'Demo-Instructor'&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def demo_instructor?&lt;br /&gt;
    name['Demo-Instructor']&lt;br /&gt;
  end &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Various controller and model files containing action_allowed? should be updated as &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  def action_allowed?&lt;br /&gt;
    ['Instructor', 'Teaching Assistant', 'Administrator', 'Super-Administrator', 'Student', 'Demo-Instructor'].include? current_role_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
roles table will be updated will be updated by the super-administrator from the new.html.erb form associated with the new action of roles_controller&lt;br /&gt;
&lt;br /&gt;
'''For the creation of Demo Instructor experimenting with the features of expertiza&lt;br /&gt;
'''&lt;br /&gt;
In the controller admin_controller.rb, the new methods to be added and their purpose is explained below.&lt;br /&gt;
&lt;br /&gt;
Method: new_demo_instructor&lt;br /&gt;
Purpose: Linked to the Signup form for creating an instructor to allow the experimenting with expertiza features&lt;br /&gt;
&lt;br /&gt;
Method: create_demo_instructor&lt;br /&gt;
Purpose: the save operation for the instructor created into the database&lt;br /&gt;
&lt;br /&gt;
Method: list_demo_instructors&lt;br /&gt;
Purpose: To list them &lt;br /&gt;
&lt;br /&gt;
Method : remove_demo_instructor&lt;br /&gt;
Purpose: For the super administrator to remove the instructor&lt;br /&gt;
&lt;br /&gt;
The corresponding views for the new_demo_instructor, list_demo_instructors, remove_demo_instructor are added manually.&lt;br /&gt;
&lt;br /&gt;
'''Upon Demo Instructor Login into the account created'''&lt;br /&gt;
&lt;br /&gt;
In the tree_display_controller.rb, goto_instructions action is added and instructions.html.erb view is created for this action. instructions.html.erb contains the instructions required for the creation of courses, assignments, adding participants to assignments, etc.&lt;br /&gt;
&lt;br /&gt;
== '''Requirements''' ==&lt;br /&gt;
 &lt;br /&gt;
The main objective for the project is to add the new signup functionality for the new User and also to clarify and improve code quality.  Although specific implementation details will change through this process, the functionality of the system will remain intact.  The overall requirements to the system will therefore not change. We need to make sure that the new demo instructor will not be able to see all the public entities of other instructors, TA's. need to implement and change all the necessary files to make sure unnecessary items are not showcased to the demo instructor.&lt;br /&gt;
&lt;br /&gt;
== '''Mock Ups ''' ==&lt;br /&gt;
&lt;br /&gt;
The Expertiza Login page with the Instructor Account Request Link.&lt;br /&gt;
&lt;br /&gt;
[[File: Homepage.PNG]]&lt;br /&gt;
&lt;br /&gt;
The PlaceHolder page will have few instructions and a Simple Video Tutorial.&lt;br /&gt;
&lt;br /&gt;
[[File: Placehlder.PNG]]&lt;br /&gt;
&lt;br /&gt;
The home page for demo instructor excluding public entities.&lt;br /&gt;
&lt;br /&gt;
[[File: Instructor_default_page_(1).PNG]]&lt;br /&gt;
&lt;br /&gt;
== '''Use Cases''' ==&lt;br /&gt;
&lt;br /&gt;
'''1.Sign-up as new Instructor''': New users can signup to view all features(except the public entities).&lt;br /&gt;
&lt;br /&gt;
'''2.View instructions page''': New instructor can view an instructions page for a walk through of the features.&lt;br /&gt;
&lt;br /&gt;
'''3.Super-admin gives access:''' Super-admin gives access to all public entities for the newly created instructor.&lt;br /&gt;
&lt;br /&gt;
'''4.New instructor-private items''' The demo instructor can access all the private items.&lt;br /&gt;
&lt;br /&gt;
== ''' References ''' ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza home page] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://research.csc.ncsu.edu/efg/expertiza/papers Papers on Expertiza]&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1579_Instructor_account_creation_over_the_web&amp;diff=99866</id>
		<title>CSC/ECE 517 Fall 2015 E1579 Instructor account creation over the web</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1579_Instructor_account_creation_over_the_web&amp;diff=99866"/>
		<updated>2015-11-14T03:32:34Z</updated>

		<summary type="html">&lt;p&gt;Rravill: /* Files to be changed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
Introduction to Expertiza:&lt;br /&gt;
&lt;br /&gt;
Expertiza is a project developed using Ruby on Rails. It provides features like peer review, team assignments and submission of projects. This can be achieved by submitting code base, URL of hosted code on remote server and Wiki submissions. It is an open source application and the code can be cloned from GitHub. This application provides an efficient way to manage assignments, grades and reviews. This makes the process easier and faster when the class strength is large.&lt;br /&gt;
&lt;br /&gt;
== '''Purpose''' ==&lt;br /&gt;
&lt;br /&gt;
The purpose of this project is to allow new users to access the system and experiment with all the features of Expertiza and make a “Demo like” feel for the new user where the user can experiment with it.  This project adds  a new feature of Instructor Creation over the web which is completely different from the previous way  the user and instructor accounts were created by existing super administrators, instructors or TAs. Code will be restructured to convey readability, handle exceptions.&lt;br /&gt;
 &lt;br /&gt;
== '''Scope''' ==&lt;br /&gt;
&lt;br /&gt;
The scope of this project will involve adding a new View/Page that would input all the new user(Instructor) Details which would be a signup page.The signup page will be designed in a way which would have security feature as Captchas embedded into it.  There would be another new View/Page created that would act as the landing page for the newly created Demo_instructor  which would contain specific instructions/ Video on how to add assignments, add students to the assignments. Also an email is sent soon after a successful creation of such user. The project also deals with providing limited access to all the features, which could be extended manually by a super admin.The code will also be tested well to ensure the robustness of newly added functionality without compromising the existing working functionalities.&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
==== What needs to be done ====&lt;br /&gt;
&lt;br /&gt;
*Allow people to request instructor accounts over the web. &lt;br /&gt;
**Add a Link in Main Screen “Instructor Account request”.&lt;br /&gt;
**Create a New Page where the User Fills the details wrt to a new Instructor Privileged access.&lt;br /&gt;
**Include Captcha Functionality and other necessary features for a secure Sign Up.&lt;br /&gt;
&lt;br /&gt;
*Upon Successful Creation of Instructor Account.&lt;br /&gt;
**Redirect the New Instructor back to the Login Page.&lt;br /&gt;
**Send an email to the super Admin notifying him of a new Instructor that has been created over the web&lt;br /&gt;
&lt;br /&gt;
*Upon Successful Login of the New Instructor&lt;br /&gt;
**Redirect the User to a  New Landing Page/Instruction Page which gives information on how to create an assignments and register students for it and other  basic information needed. Basically a Placeholder page that can be used for providing information.&lt;br /&gt;
**Provide a Button that would redirect him to the main Expertiza page.&lt;br /&gt;
**Make sure that he does not see any Public entities( assignments, Courses) created by any other TA's, Admins or Super Admins.&lt;br /&gt;
**Should have a general access to Expertiza and should be able to perform basic actions like adding a course, adding an assignment and assigning students for the created assignments.&lt;br /&gt;
&lt;br /&gt;
==== Files to be changed ====&lt;br /&gt;
&lt;br /&gt;
'''A role named Demo-Instructor is added to the added to the role.rb model with the following code:'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  def self.demo_instructor&lt;br /&gt;
    @@instructor_role ||= find_by_name 'Demo-Instructor'&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def demo_instructor?&lt;br /&gt;
    name['Demo-Instructor']&lt;br /&gt;
  end &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Various controller and model files containing action_allowed? should be updated as &lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
  def action_allowed?&lt;br /&gt;
    ['Instructor', 'Teaching Assistant', 'Administrator', 'Super-Administrator', 'Student', 'Demo-Instructor'].include? current_role_name&lt;br /&gt;
  end&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
roles table will be updated will be updated by the super-administrator from the new.html.erb form associated with the new action of roles_controller&lt;br /&gt;
&lt;br /&gt;
'''For the creation of Demo Instructor experimenting with the features of expertiza&lt;br /&gt;
'''&lt;br /&gt;
In the controller admin_controller.rb, the new methods to be added and their purpose is explained below.&lt;br /&gt;
&lt;br /&gt;
Method: new_demo_instructor&lt;br /&gt;
Purpose: Linked to the Signup form for creating an instructor to allow the experimenting with expertiza features&lt;br /&gt;
&lt;br /&gt;
Method: create_demo_instructor&lt;br /&gt;
Purpose: the save operation for the instructor created into the database&lt;br /&gt;
&lt;br /&gt;
Method: list_demo_instructors&lt;br /&gt;
Purpose: To list them &lt;br /&gt;
&lt;br /&gt;
Method : remove_demo_instructor&lt;br /&gt;
Purpose: For the super administrator to remove the instructor&lt;br /&gt;
&lt;br /&gt;
The corresponding views for the new_demo_instructor, list_demo_instructors, remove_demo_instructor are added manually.&lt;br /&gt;
&lt;br /&gt;
'''Upon Demo Instructor Login into the account created'''&lt;br /&gt;
&lt;br /&gt;
In the tree_display_controller.rb, goto_instructions action is added and instructions.html.erb view is created for this action. instructions.html.erb contains the instructions required for the creation of courses, assignments, adding participants to assignments, etc.&lt;br /&gt;
&lt;br /&gt;
== '''Requirements''' ==&lt;br /&gt;
 &lt;br /&gt;
The main objective for the project is to add the new signup functionality for the new User and also to clarify and improve code quality.  Although specific implementation details will change through this process, the functionality of the system will remain intact.  The overall requirements to the system will therefore not change. We need to make sure that the new demo instructor will not be able to see all the public entities of other instructors, TA's. need to implement and change all the necessary files to make sure unnecessary items are not showcased to the demo instructor.&lt;br /&gt;
&lt;br /&gt;
== '''Mock Ups ''' ==&lt;br /&gt;
&lt;br /&gt;
The Expertiza Login page with the Instructor Account Request Link.&lt;br /&gt;
&lt;br /&gt;
[[File: Homepage.PNG]]&lt;br /&gt;
&lt;br /&gt;
The PlaceHolder page will have few instructions and a Simple Video Tutorial.&lt;br /&gt;
&lt;br /&gt;
[[File: Placehlder.PNG]]&lt;br /&gt;
&lt;br /&gt;
The home page for demo instructor excluding public entities.&lt;br /&gt;
&lt;br /&gt;
[[File: Instructor_default_page_(1).PNG]]&lt;br /&gt;
&lt;br /&gt;
== '''Use Cases''' ==&lt;br /&gt;
&lt;br /&gt;
'''1.Sign-up as new Instructor''': New users can signup to view all features(except the public entities).&lt;br /&gt;
&lt;br /&gt;
'''2.View instructions page''': New instructor can view an instructions page for a walk through of the features.&lt;br /&gt;
&lt;br /&gt;
'''3.Super-admin gives access:''' Super-admin gives access to all public entities for the newly created instructor.&lt;br /&gt;
&lt;br /&gt;
'''4.New instructor-private items''' The demo instructor can access all the private items.&lt;br /&gt;
&lt;br /&gt;
== ''' References ''' ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza home page] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://research.csc.ncsu.edu/efg/expertiza/papers Papers on Expertiza]&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1579_Instructor_account_creation_over_the_web&amp;diff=99863</id>
		<title>CSC/ECE 517 Fall 2015 E1579 Instructor account creation over the web</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1579_Instructor_account_creation_over_the_web&amp;diff=99863"/>
		<updated>2015-11-14T03:32:12Z</updated>

		<summary type="html">&lt;p&gt;Rravill: /* Files to be changed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
Introduction to Expertiza:&lt;br /&gt;
&lt;br /&gt;
Expertiza is a project developed using Ruby on Rails. It provides features like peer review, team assignments and submission of projects. This can be achieved by submitting code base, URL of hosted code on remote server and Wiki submissions. It is an open source application and the code can be cloned from GitHub. This application provides an efficient way to manage assignments, grades and reviews. This makes the process easier and faster when the class strength is large.&lt;br /&gt;
&lt;br /&gt;
== '''Purpose''' ==&lt;br /&gt;
&lt;br /&gt;
The purpose of this project is to allow new users to access the system and experiment with all the features of Expertiza and make a “Demo like” feel for the new user where the user can experiment with it.  This project adds  a new feature of Instructor Creation over the web which is completely different from the previous way  the user and instructor accounts were created by existing super administrators, instructors or TAs. Code will be restructured to convey readability, handle exceptions.&lt;br /&gt;
 &lt;br /&gt;
== '''Scope''' ==&lt;br /&gt;
&lt;br /&gt;
The scope of this project will involve adding a new View/Page that would input all the new user(Instructor) Details which would be a signup page.The signup page will be designed in a way which would have security feature as Captchas embedded into it.  There would be another new View/Page created that would act as the landing page for the newly created Demo_instructor  which would contain specific instructions/ Video on how to add assignments, add students to the assignments. Also an email is sent soon after a successful creation of such user. The project also deals with providing limited access to all the features, which could be extended manually by a super admin.The code will also be tested well to ensure the robustness of newly added functionality without compromising the existing working functionalities.&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
==== What needs to be done ====&lt;br /&gt;
&lt;br /&gt;
*Allow people to request instructor accounts over the web. &lt;br /&gt;
**Add a Link in Main Screen “Instructor Account request”.&lt;br /&gt;
**Create a New Page where the User Fills the details wrt to a new Instructor Privileged access.&lt;br /&gt;
**Include Captcha Functionality and other necessary features for a secure Sign Up.&lt;br /&gt;
&lt;br /&gt;
*Upon Successful Creation of Instructor Account.&lt;br /&gt;
**Redirect the New Instructor back to the Login Page.&lt;br /&gt;
**Send an email to the super Admin notifying him of a new Instructor that has been created over the web&lt;br /&gt;
&lt;br /&gt;
*Upon Successful Login of the New Instructor&lt;br /&gt;
**Redirect the User to a  New Landing Page/Instruction Page which gives information on how to create an assignments and register students for it and other  basic information needed. Basically a Placeholder page that can be used for providing information.&lt;br /&gt;
**Provide a Button that would redirect him to the main Expertiza page.&lt;br /&gt;
**Make sure that he does not see any Public entities( assignments, Courses) created by any other TA's, Admins or Super Admins.&lt;br /&gt;
**Should have a general access to Expertiza and should be able to perform basic actions like adding a course, adding an assignment and assigning students for the created assignments.&lt;br /&gt;
&lt;br /&gt;
==== Files to be changed ====&lt;br /&gt;
&lt;br /&gt;
'''A role named Demo-Instructor is added to the added to the role.rb model with the following code:'''&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
  def self.demo_instructor&lt;br /&gt;
    @@instructor_role ||= find_by_name 'Demo-Instructor'&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def demo_instructor?&lt;br /&gt;
    name['Demo-Instructor']&lt;br /&gt;
  end &lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
Various controller and model files containing action_allowed? should be updated as &lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
  def action_allowed?&lt;br /&gt;
    ['Instructor', 'Teaching Assistant', 'Administrator', 'Super-Administrator', 'Student', 'Demo-Instructor'].include? current_role_name&lt;br /&gt;
  end&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
roles table will be updated will be updated by the super-administrator from the new.html.erb form associated with the new action of roles_controller&lt;br /&gt;
&lt;br /&gt;
'''For the creation of Demo Instructor experimenting with the features of expertiza&lt;br /&gt;
'''&lt;br /&gt;
In the controller admin_controller.rb, the new methods to be added and their purpose is explained below.&lt;br /&gt;
&lt;br /&gt;
Method: new_demo_instructor&lt;br /&gt;
Purpose: Linked to the Signup form for creating an instructor to allow the experimenting with expertiza features&lt;br /&gt;
&lt;br /&gt;
Method: create_demo_instructor&lt;br /&gt;
Purpose: the save operation for the instructor created into the database&lt;br /&gt;
&lt;br /&gt;
Method: list_demo_instructors&lt;br /&gt;
Purpose: To list them &lt;br /&gt;
&lt;br /&gt;
Method : remove_demo_instructor&lt;br /&gt;
Purpose: For the super administrator to remove the instructor&lt;br /&gt;
&lt;br /&gt;
The corresponding views for the new_demo_instructor, list_demo_instructors, remove_demo_instructor are added manually.&lt;br /&gt;
&lt;br /&gt;
'''Upon Demo Instructor Login into the account created'''&lt;br /&gt;
&lt;br /&gt;
In the tree_display_controller.rb, goto_instructions action is added and instructions.html.erb view is created for this action. instructions.html.erb contains the instructions required for the creation of courses, assignments, adding participants to assignments, etc.&lt;br /&gt;
&lt;br /&gt;
== '''Requirements''' ==&lt;br /&gt;
 &lt;br /&gt;
The main objective for the project is to add the new signup functionality for the new User and also to clarify and improve code quality.  Although specific implementation details will change through this process, the functionality of the system will remain intact.  The overall requirements to the system will therefore not change. We need to make sure that the new demo instructor will not be able to see all the public entities of other instructors, TA's. need to implement and change all the necessary files to make sure unnecessary items are not showcased to the demo instructor.&lt;br /&gt;
&lt;br /&gt;
== '''Mock Ups ''' ==&lt;br /&gt;
&lt;br /&gt;
The Expertiza Login page with the Instructor Account Request Link.&lt;br /&gt;
&lt;br /&gt;
[[File: Homepage.PNG]]&lt;br /&gt;
&lt;br /&gt;
The PlaceHolder page will have few instructions and a Simple Video Tutorial.&lt;br /&gt;
&lt;br /&gt;
[[File: Placehlder.PNG]]&lt;br /&gt;
&lt;br /&gt;
The home page for demo instructor excluding public entities.&lt;br /&gt;
&lt;br /&gt;
[[File: Instructor_default_page_(1).PNG]]&lt;br /&gt;
&lt;br /&gt;
== '''Use Cases''' ==&lt;br /&gt;
&lt;br /&gt;
'''1.Sign-up as new Instructor''': New users can signup to view all features(except the public entities).&lt;br /&gt;
&lt;br /&gt;
'''2.View instructions page''': New instructor can view an instructions page for a walk through of the features.&lt;br /&gt;
&lt;br /&gt;
'''3.Super-admin gives access:''' Super-admin gives access to all public entities for the newly created instructor.&lt;br /&gt;
&lt;br /&gt;
'''4.New instructor-private items''' The demo instructor can access all the private items.&lt;br /&gt;
&lt;br /&gt;
== ''' References ''' ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza home page] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://research.csc.ncsu.edu/efg/expertiza/papers Papers on Expertiza]&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1579_Instructor_account_creation_over_the_web&amp;diff=99499</id>
		<title>CSC/ECE 517 Fall 2015 E1579 Instructor account creation over the web</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1579_Instructor_account_creation_over_the_web&amp;diff=99499"/>
		<updated>2015-11-12T21:34:53Z</updated>

		<summary type="html">&lt;p&gt;Rravill: /*  References  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
Introduction to Expertiza:&lt;br /&gt;
&lt;br /&gt;
Expertiza is a project developed using Ruby on Rails. It provides features like peer review, team assignments and submission of projects. This can be achieved by submitting code base, URL of hosted code on remote server and Wiki submissions. It is an open source application and the code can be cloned from GitHub. This application provides an efficient way to manage assignments, grades and reviews. This makes the process easier and faster when the class strength is large.&lt;br /&gt;
&lt;br /&gt;
== '''Purpose''' ==&lt;br /&gt;
&lt;br /&gt;
The purpose of this project is to allow new users to access the system and experiment with all the features of Expertiza and make a “Demo like” feel for the new user where the user can experiment with it.  This project adds  a new feature of Instructor Creation over the web which is completely different from the previous way  the user and instructor accounts were created by existing super administrators, instructors or TAs. Code will be restructured to convey readability, handle exceptions.&lt;br /&gt;
 &lt;br /&gt;
== '''Scope''' ==&lt;br /&gt;
&lt;br /&gt;
The scope of this project will involve adding a new View/Page that would input all the new user(Instructor) Details which would be a signup page.The signup page will be designed in a way which would have security feature as Captchas embedded into it.  There would be another new View/Page created that would act as the landing page for the newly created Demo_instructor  which would contain specific instructions/ Video on how to add assignments, add students to the assignments. Also an email is sent soon after a successful creation of such user. The project also deals with providing limited access to all the features, which could be extended manually by a super admin.The code will also be tested well to ensure the robustness of newly added functionality without compromising the existing working functionalities.&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
==== What needs to be done ====&lt;br /&gt;
&lt;br /&gt;
*Allow people to request instructor accounts over the web. &lt;br /&gt;
**Add a Link in Main Screen “Instructor Account request”.&lt;br /&gt;
**Create a New Page where the User Fills the details wrt to a new Instructor Privileged access.&lt;br /&gt;
**Include Captcha Functionality and other necessary features for a secure Sign Up.&lt;br /&gt;
&lt;br /&gt;
*Upon Successful Creation of Instructor Account.&lt;br /&gt;
**Redirect the New Instructor back to the Login Page.&lt;br /&gt;
**Send an email to the super Admin notifying him of a new Instructor that has been created over the web&lt;br /&gt;
&lt;br /&gt;
*Upon Successful Login of the New Instructor&lt;br /&gt;
**Redirect the User to a  New Landing Page/Instruction Page which gives information on how to create an assignments and register students for it and other  basic information needed. Basically a Placeholder page that can be used for providing information.&lt;br /&gt;
**Provide a Button that would redirect him to the main Expertiza page.&lt;br /&gt;
**Make sure that he does not see any Public entities( assignments, Courses) created by any other TA's, Admins or Super Admins.&lt;br /&gt;
**Should have a general access to Expertiza and should be able to perform basic actions like adding a course, adding an assignment and assigning students for the created assignments.&lt;br /&gt;
&lt;br /&gt;
==== Files to be changed ====&lt;br /&gt;
The following are some of the files that will be changed for the implementation to work.&lt;br /&gt;
&lt;br /&gt;
''Users Controller''&lt;br /&gt;
&lt;br /&gt;
''login.html.erb''&lt;br /&gt;
&lt;br /&gt;
''List Controller''&lt;br /&gt;
&lt;br /&gt;
We will be adding a new attribute Demo_instructor to the Roles Table for implementing the new change.&lt;br /&gt;
&lt;br /&gt;
== '''Requirements''' ==&lt;br /&gt;
 &lt;br /&gt;
The main objective for the project is to add the new signup functionality for the new User and also to clarify and improve code quality.  Although specific implementation details will change through this process, the functionality of the system will remain intact.  The overall requirements to the system will therefore not change. We need to make sure that the new demo instructor will not be able to see all the public entities of other instructors, TA's. need to implement and change all the necessary files to make sure unnecessary items are not showcased to the demo instructor.&lt;br /&gt;
&lt;br /&gt;
== '''Mock Ups ''' ==&lt;br /&gt;
&lt;br /&gt;
The Expertiza Login page with the Instructor Account Request Link.&lt;br /&gt;
&lt;br /&gt;
[[File: Homepage.PNG]]&lt;br /&gt;
&lt;br /&gt;
The PlaceHolder page will have few instructions and a Simple Video Tutorial.&lt;br /&gt;
&lt;br /&gt;
[[File: Placehlder.PNG]]&lt;br /&gt;
&lt;br /&gt;
The home page for demo instructor excluding public entities.&lt;br /&gt;
&lt;br /&gt;
[[File: Instructor_default_page_(1).PNG]]&lt;br /&gt;
&lt;br /&gt;
== '''Use Cases''' ==&lt;br /&gt;
&lt;br /&gt;
'''1.Sign-up as new Instructor''': New users can signup to view all features(except the public entities).&lt;br /&gt;
&lt;br /&gt;
'''2.View instructions page''': New instructor can view an instructions page for a walk through of the features.&lt;br /&gt;
&lt;br /&gt;
'''3.Super-admin gives access:''' Super-admin gives access to all public entities for the newly created instructor.&lt;br /&gt;
&lt;br /&gt;
'''4.New instructor-private items''' The demo instructor can access all the private items.&lt;br /&gt;
&lt;br /&gt;
== ''' References ''' ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza home page] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://research.csc.ncsu.edu/efg/expertiza/papers Papers on Expertiza]&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1579_Instructor_account_creation_over_the_web&amp;diff=99498</id>
		<title>CSC/ECE 517 Fall 2015 E1579 Instructor account creation over the web</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1579_Instructor_account_creation_over_the_web&amp;diff=99498"/>
		<updated>2015-11-12T21:34:42Z</updated>

		<summary type="html">&lt;p&gt;Rravill: /*  References  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
Introduction to Expertiza:&lt;br /&gt;
&lt;br /&gt;
Expertiza is a project developed using Ruby on Rails. It provides features like peer review, team assignments and submission of projects. This can be achieved by submitting code base, URL of hosted code on remote server and Wiki submissions. It is an open source application and the code can be cloned from GitHub. This application provides an efficient way to manage assignments, grades and reviews. This makes the process easier and faster when the class strength is large.&lt;br /&gt;
&lt;br /&gt;
== '''Purpose''' ==&lt;br /&gt;
&lt;br /&gt;
The purpose of this project is to allow new users to access the system and experiment with all the features of Expertiza and make a “Demo like” feel for the new user where the user can experiment with it.  This project adds  a new feature of Instructor Creation over the web which is completely different from the previous way  the user and instructor accounts were created by existing super administrators, instructors or TAs. Code will be restructured to convey readability, handle exceptions.&lt;br /&gt;
 &lt;br /&gt;
== '''Scope''' ==&lt;br /&gt;
&lt;br /&gt;
The scope of this project will involve adding a new View/Page that would input all the new user(Instructor) Details which would be a signup page.The signup page will be designed in a way which would have security feature as Captchas embedded into it.  There would be another new View/Page created that would act as the landing page for the newly created Demo_instructor  which would contain specific instructions/ Video on how to add assignments, add students to the assignments. Also an email is sent soon after a successful creation of such user. The project also deals with providing limited access to all the features, which could be extended manually by a super admin.The code will also be tested well to ensure the robustness of newly added functionality without compromising the existing working functionalities.&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
==== What needs to be done ====&lt;br /&gt;
&lt;br /&gt;
*Allow people to request instructor accounts over the web. &lt;br /&gt;
**Add a Link in Main Screen “Instructor Account request”.&lt;br /&gt;
**Create a New Page where the User Fills the details wrt to a new Instructor Privileged access.&lt;br /&gt;
**Include Captcha Functionality and other necessary features for a secure Sign Up.&lt;br /&gt;
&lt;br /&gt;
*Upon Successful Creation of Instructor Account.&lt;br /&gt;
**Redirect the New Instructor back to the Login Page.&lt;br /&gt;
**Send an email to the super Admin notifying him of a new Instructor that has been created over the web&lt;br /&gt;
&lt;br /&gt;
*Upon Successful Login of the New Instructor&lt;br /&gt;
**Redirect the User to a  New Landing Page/Instruction Page which gives information on how to create an assignments and register students for it and other  basic information needed. Basically a Placeholder page that can be used for providing information.&lt;br /&gt;
**Provide a Button that would redirect him to the main Expertiza page.&lt;br /&gt;
**Make sure that he does not see any Public entities( assignments, Courses) created by any other TA's, Admins or Super Admins.&lt;br /&gt;
**Should have a general access to Expertiza and should be able to perform basic actions like adding a course, adding an assignment and assigning students for the created assignments.&lt;br /&gt;
&lt;br /&gt;
==== Files to be changed ====&lt;br /&gt;
The following are some of the files that will be changed for the implementation to work.&lt;br /&gt;
&lt;br /&gt;
''Users Controller''&lt;br /&gt;
&lt;br /&gt;
''login.html.erb''&lt;br /&gt;
&lt;br /&gt;
''List Controller''&lt;br /&gt;
&lt;br /&gt;
We will be adding a new attribute Demo_instructor to the Roles Table for implementing the new change.&lt;br /&gt;
&lt;br /&gt;
== '''Requirements''' ==&lt;br /&gt;
 &lt;br /&gt;
The main objective for the project is to add the new signup functionality for the new User and also to clarify and improve code quality.  Although specific implementation details will change through this process, the functionality of the system will remain intact.  The overall requirements to the system will therefore not change. We need to make sure that the new demo instructor will not be able to see all the public entities of other instructors, TA's. need to implement and change all the necessary files to make sure unnecessary items are not showcased to the demo instructor.&lt;br /&gt;
&lt;br /&gt;
== '''Mock Ups ''' ==&lt;br /&gt;
&lt;br /&gt;
The Expertiza Login page with the Instructor Account Request Link.&lt;br /&gt;
&lt;br /&gt;
[[File: Homepage.PNG]]&lt;br /&gt;
&lt;br /&gt;
The PlaceHolder page will have few instructions and a Simple Video Tutorial.&lt;br /&gt;
&lt;br /&gt;
[[File: Placehlder.PNG]]&lt;br /&gt;
&lt;br /&gt;
The home page for demo instructor excluding public entities.&lt;br /&gt;
&lt;br /&gt;
[[File: Instructor_default_page_(1).PNG]]&lt;br /&gt;
&lt;br /&gt;
== '''Use Cases''' ==&lt;br /&gt;
&lt;br /&gt;
'''1.Sign-up as new Instructor''': New users can signup to view all features(except the public entities).&lt;br /&gt;
&lt;br /&gt;
'''2.View instructions page''': New instructor can view an instructions page for a walk through of the features.&lt;br /&gt;
&lt;br /&gt;
'''3.Super-admin gives access:''' Super-admin gives access to all public entities for the newly created instructor.&lt;br /&gt;
&lt;br /&gt;
'''4.New instructor-private items''' The demo instructor can access all the private items.&lt;br /&gt;
&lt;br /&gt;
== ''' References ''' ==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza home page] &amp;lt;br&amp;gt;&lt;br /&gt;
[[http://research.csc.ncsu.edu/efg/expertiza/papers Papers on Expertiza]&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1579_Instructor_account_creation_over_the_web&amp;diff=99497</id>
		<title>CSC/ECE 517 Fall 2015 E1579 Instructor account creation over the web</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015_E1579_Instructor_account_creation_over_the_web&amp;diff=99497"/>
		<updated>2015-11-12T21:33:58Z</updated>

		<summary type="html">&lt;p&gt;Rravill: /*  References  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
Introduction to Expertiza:&lt;br /&gt;
&lt;br /&gt;
Expertiza is a project developed using Ruby on Rails. It provides features like peer review, team assignments and submission of projects. This can be achieved by submitting code base, URL of hosted code on remote server and Wiki submissions. It is an open source application and the code can be cloned from GitHub. This application provides an efficient way to manage assignments, grades and reviews. This makes the process easier and faster when the class strength is large.&lt;br /&gt;
&lt;br /&gt;
== '''Purpose''' ==&lt;br /&gt;
&lt;br /&gt;
The purpose of this project is to allow new users to access the system and experiment with all the features of Expertiza and make a “Demo like” feel for the new user where the user can experiment with it.  This project adds  a new feature of Instructor Creation over the web which is completely different from the previous way  the user and instructor accounts were created by existing super administrators, instructors or TAs. Code will be restructured to convey readability, handle exceptions.&lt;br /&gt;
 &lt;br /&gt;
== '''Scope''' ==&lt;br /&gt;
&lt;br /&gt;
The scope of this project will involve adding a new View/Page that would input all the new user(Instructor) Details which would be a signup page.The signup page will be designed in a way which would have security feature as Captchas embedded into it.  There would be another new View/Page created that would act as the landing page for the newly created Demo_instructor  which would contain specific instructions/ Video on how to add assignments, add students to the assignments. Also an email is sent soon after a successful creation of such user. The project also deals with providing limited access to all the features, which could be extended manually by a super admin.The code will also be tested well to ensure the robustness of newly added functionality without compromising the existing working functionalities.&lt;br /&gt;
&lt;br /&gt;
=='''Implementation'''==&lt;br /&gt;
&lt;br /&gt;
==== What needs to be done ====&lt;br /&gt;
&lt;br /&gt;
*Allow people to request instructor accounts over the web. &lt;br /&gt;
**Add a Link in Main Screen “Instructor Account request”.&lt;br /&gt;
**Create a New Page where the User Fills the details wrt to a new Instructor Privileged access.&lt;br /&gt;
**Include Captcha Functionality and other necessary features for a secure Sign Up.&lt;br /&gt;
&lt;br /&gt;
*Upon Successful Creation of Instructor Account.&lt;br /&gt;
**Redirect the New Instructor back to the Login Page.&lt;br /&gt;
**Send an email to the super Admin notifying him of a new Instructor that has been created over the web&lt;br /&gt;
&lt;br /&gt;
*Upon Successful Login of the New Instructor&lt;br /&gt;
**Redirect the User to a  New Landing Page/Instruction Page which gives information on how to create an assignments and register students for it and other  basic information needed. Basically a Placeholder page that can be used for providing information.&lt;br /&gt;
**Provide a Button that would redirect him to the main Expertiza page.&lt;br /&gt;
**Make sure that he does not see any Public entities( assignments, Courses) created by any other TA's, Admins or Super Admins.&lt;br /&gt;
**Should have a general access to Expertiza and should be able to perform basic actions like adding a course, adding an assignment and assigning students for the created assignments.&lt;br /&gt;
&lt;br /&gt;
==== Files to be changed ====&lt;br /&gt;
The following are some of the files that will be changed for the implementation to work.&lt;br /&gt;
&lt;br /&gt;
''Users Controller''&lt;br /&gt;
&lt;br /&gt;
''login.html.erb''&lt;br /&gt;
&lt;br /&gt;
''List Controller''&lt;br /&gt;
&lt;br /&gt;
We will be adding a new attribute Demo_instructor to the Roles Table for implementing the new change.&lt;br /&gt;
&lt;br /&gt;
== '''Requirements''' ==&lt;br /&gt;
 &lt;br /&gt;
The main objective for the project is to add the new signup functionality for the new User and also to clarify and improve code quality.  Although specific implementation details will change through this process, the functionality of the system will remain intact.  The overall requirements to the system will therefore not change. We need to make sure that the new demo instructor will not be able to see all the public entities of other instructors, TA's. need to implement and change all the necessary files to make sure unnecessary items are not showcased to the demo instructor.&lt;br /&gt;
&lt;br /&gt;
== '''Mock Ups ''' ==&lt;br /&gt;
&lt;br /&gt;
The Expertiza Login page with the Instructor Account Request Link.&lt;br /&gt;
&lt;br /&gt;
[[File: Homepage.PNG]]&lt;br /&gt;
&lt;br /&gt;
The PlaceHolder page will have few instructions and a Simple Video Tutorial.&lt;br /&gt;
&lt;br /&gt;
[[File: Placehlder.PNG]]&lt;br /&gt;
&lt;br /&gt;
The home page for demo instructor excluding public entities.&lt;br /&gt;
&lt;br /&gt;
[[File: Instructor_default_page_(1).PNG]]&lt;br /&gt;
&lt;br /&gt;
== '''Use Cases''' ==&lt;br /&gt;
&lt;br /&gt;
'''1.Sign-up as new Instructor''': New users can signup to view all features(except the public entities).&lt;br /&gt;
&lt;br /&gt;
'''2.View instructions page''': New instructor can view an instructions page for a walk through of the features.&lt;br /&gt;
&lt;br /&gt;
'''3.Super-admin gives access:''' Super-admin gives access to all public entities for the newly created instructor.&lt;br /&gt;
&lt;br /&gt;
'''4.New instructor-private items''' The demo instructor can access all the private items.&lt;br /&gt;
&lt;br /&gt;
== ''' References ''' ==&lt;br /&gt;
[https://expertiza.ncsu.edu/]&lt;br /&gt;
[[http://research.csc.ncsu.edu/efg/expertiza/papers]&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=98095</id>
		<title>CSC/ECE 517 Fall 2015/oss E1554 AAR</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=98095"/>
		<updated>2015-11-01T05:10:51Z</updated>

		<summary type="html">&lt;p&gt;Rravill: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''E1554 Refactoring TeamsController.rb'''&lt;br /&gt;
This is description of the CSC/ECE 517 Fall2015 OSS project(E1554),we refactored teams_controller.rb,students_team_controller.rb,sign_up_topic.rb we extracted the duplicate code into a single function call,and we made sure when team is deleted its associated records are deleted first then the team gets deleted.We have tested using [http://rspec.info/ Rspec]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Expertiza ==&lt;br /&gt;
&lt;br /&gt;
Expertiza &amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza].''expertiza project''&amp;lt;/ref&amp;gt; is a project built with [https://en.wikipedia.org/wiki/Ruby_on_Rails Ruby on Rails]&amp;lt;ref&amp;gt;[http://rubyonrails.org/ RubyonRails]&amp;lt;/ref&amp;gt;.It is mainly used by an instructor to provide a peer reviewing systems among the students it also supports team projects submissions wikis etc.&lt;br /&gt;
&lt;br /&gt;
== What it Does ==&lt;br /&gt;
This class handle the basic creation and modification of student teams.  There are also some complicated actions. E.g., if a team get destroyed (this may be caused by instructor force this team to be destroyed, the students all leave the team), the topic held by this team should be transferred to next team which is on the waiting list, if there is any.&lt;br /&gt;
These are the scenarios where topic transferring may happen: &lt;br /&gt;
* when instructor destroys a team &lt;br /&gt;
* when the last person leave this team &lt;br /&gt;
* when this team wants to switch topic &lt;br /&gt;
* when instructor wants to increase the available slots for a topic.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The same code for handling topic transferring used 3 times at the following places:&lt;br /&gt;
&lt;br /&gt;
 [scenario 1] teams_controller line 95 (if next_wait_listed_team), &lt;br /&gt;
 [scenario 2] student_teams_controller line 139 (if first_waitlisted_team) and &lt;br /&gt;
 [scenario 4] sign_up_topic line 117 (if next_wait_listed_team). &lt;br /&gt;
 Scenario 3’s code is not copied, and one can find the code at line 92 in sign_up_topic.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What Needs to be Done ==&lt;br /&gt;
*Make topic_transfering a function call, and make sure all those 4 scenario works.&lt;br /&gt;
*Write tests for all those 4 scenarios.&lt;br /&gt;
*Record a video for those 4 scenarios, submit it to YouTube and submit the YouTube link to Expertiza.&lt;br /&gt;
*Delete method in teams_controller.rb is complicated, “@team.destroy” should be called latest after all the records related to this team can be deleted.&lt;br /&gt;
*write tests for delete method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementing the repeated code as function call ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before: Code repeated in teams_controller.rb, student_teams_controller.rb, SignUpTopic.rb&lt;br /&gt;
&lt;br /&gt;
   if next_wait_listed_team&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After: The repeated code implemented as a function in SignUpTopic.rb&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 def self.assign_to_first_waiting_team(next_wait_listed_team)&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
 end &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Refactoring the Order of deleting a team and its attributes==&lt;br /&gt;
Problem: The team is deleted even before its attributes are destroyed in teams_controller.rb&lt;br /&gt;
Before: &lt;br /&gt;
 &lt;br /&gt;
  @team.destroy if @team&lt;br /&gt;
  @signUps = SignedUpTeam.where(team_id: params[:id])&lt;br /&gt;
  @teams_users = TeamsUser.where(team_id: params[:id])&lt;br /&gt;
  @teams_users.destroy_all if @teams_users&lt;br /&gt;
  if @signUps.size == 1 and @signUps.first.is_waitlisted == false #this team hold a topic&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
After: &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
  @team = Team.find(params[:id])&lt;br /&gt;
  course = Object.const_get(session[:team_type]).find(@team.parent_id)&lt;br /&gt;
  @signUps = SignedUpTeam.where(team_id: @team.id)&lt;br /&gt;
  @teams_users = TeamsUser.where(team_id: @team.id)&lt;br /&gt;
  if @signUps.size == 1 and @signUps.first.is_waitlisted == false&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Rspec Tests:&lt;br /&gt;
&lt;br /&gt;
Rspec tests can be performed by using the following commands from expertiza directory in the terminal:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 bundle exec rake db:reset RAILS_ENV=test &lt;br /&gt;
 rspec spec/controllers/teams_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=98094</id>
		<title>CSC/ECE 517 Fall 2015/oss E1554 AAR</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=98094"/>
		<updated>2015-11-01T05:09:35Z</updated>

		<summary type="html">&lt;p&gt;Rravill: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''E1554 Refactoring TeamsController.rb'''&lt;br /&gt;
This is description of the CSC/ECE 517 Fall2015 OSS project(E1554),we refactored teams_controller.rb,students_team_controller.rb,sign_up_topic.rb we extracted the duplicate code into a single function call,and we made sure when team is deleted its associated records are deleted first then the team gets deleted.We have tested using [http://rspec.info/ Rspec]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Expertiza ==&lt;br /&gt;
&lt;br /&gt;
Expertiza &amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza].''expertiza project''&amp;lt;/ref&amp;gt; is a project built with [https://en.wikipedia.org/wiki/Ruby_on_Rails Ruby on Rails]&amp;lt;ref&amp;gt;[http://rubyonrails.org/ RubyonRails]&amp;lt;/ref&amp;gt;.It is mainly used by an instructor to provide a peer reviewing systems among the students it also supports team projects submissions wikis etc.&lt;br /&gt;
&lt;br /&gt;
== What it Does ==&lt;br /&gt;
This class handle the basic creation and modification of student teams.  There are also some complicated actions. E.g., if a team get destroyed (this may be caused by instructor force this team to be destroyed, the students all leave the team), the topic held by this team should be transferred to next team which is on the waiting list, if there is any.&lt;br /&gt;
These are the scenarios where topic transferring may happen: &lt;br /&gt;
* when instructor destroys a team &lt;br /&gt;
* when the last person leave this team &lt;br /&gt;
* when this team wants to switch topic &lt;br /&gt;
* when instructor wants to increase the available slots for a topic.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The same code for handling topic transferring used 3 times at the following places:&lt;br /&gt;
&lt;br /&gt;
 [scenario 1] teams_controller line 95 (if next_wait_listed_team), &lt;br /&gt;
 [scenario 2] student_teams_controller line 139 (if first_waitlisted_team) and &lt;br /&gt;
 [scenario 4] sign_up_topic line 117 (if next_wait_listed_team). &lt;br /&gt;
 Scenario 3’s code is not copied, and one can find the code at line 92 in sign_up_topic.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What Needs to be Done ==&lt;br /&gt;
*Make topic_transfering a function call, and make sure all those 4 scenario works.&lt;br /&gt;
*Write tests for all those 4 scenarios.&lt;br /&gt;
*Record a video for those 4 scenarios, submit it to YouTube and submit the YouTube link to Expertiza.&lt;br /&gt;
*Delete method in teams_controller.rb is complicated, “@team.destroy” should be called latest after all the records related to this team can be deleted.&lt;br /&gt;
*write tests for delete method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementing the repeated code as function call ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before: Code repeated in teams_controller.rb, student_teams_controller.rb, SignUpTopic.rb&lt;br /&gt;
 ..&lt;br /&gt;
   if next_wait_listed_team&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
  end&lt;br /&gt;
 ..&lt;br /&gt;
&lt;br /&gt;
After: The repeated code implemented as a function in SignUpTopic.rb&lt;br /&gt;
 &lt;br /&gt;
 ..&lt;br /&gt;
 def self.assign_to_first_waiting_team(next_wait_listed_team)&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
 end &lt;br /&gt;
 ..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Refactoring the Order of deleting a team and its attributes==&lt;br /&gt;
Problem: The team is deleted even before its attributes are destroyed in teams_controller.rb&lt;br /&gt;
Before: &lt;br /&gt;
 ..&lt;br /&gt;
  @team.destroy if @team&lt;br /&gt;
  @signUps = SignedUpTeam.where(team_id: params[:id])&lt;br /&gt;
  @teams_users = TeamsUser.where(team_id: params[:id])&lt;br /&gt;
  @teams_users.destroy_all if @teams_users&lt;br /&gt;
  if @signUps.size == 1 and @signUps.first.is_waitlisted == false #this team hold a topic&lt;br /&gt;
 ..&lt;br /&gt;
&lt;br /&gt;
After: &lt;br /&gt;
 &lt;br /&gt;
 ..&lt;br /&gt;
  @team = Team.find(params[:id])&lt;br /&gt;
  course = Object.const_get(session[:team_type]).find(@team.parent_id)&lt;br /&gt;
  @signUps = SignedUpTeam.where(team_id: @team.id)&lt;br /&gt;
  @teams_users = TeamsUser.where(team_id: @team.id)&lt;br /&gt;
  if @signUps.size == 1 and @signUps.first.is_waitlisted == false&lt;br /&gt;
 ..&lt;br /&gt;
&lt;br /&gt;
Rspec Tests:&lt;br /&gt;
&lt;br /&gt;
Rspec tests can be performed by using the following commands from expertiza directory in the terminal:&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
 bundle exec rake db:reset RAILS_ENV=test &lt;br /&gt;
 rspec spec/controllers/teams_controller_spec.rb &lt;br /&gt;
..&lt;br /&gt;
== References ==&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=98093</id>
		<title>CSC/ECE 517 Fall 2015/oss E1554 AAR</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=98093"/>
		<updated>2015-11-01T05:08:22Z</updated>

		<summary type="html">&lt;p&gt;Rravill: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''E1554 Refactoring TeamsController.rb'''&lt;br /&gt;
This is description of the CSC/ECE 517 Fall2015 OSS project(E1554),we refactored teams_controller.rb,students_team_controller.rb,sign_up_topic.rb we extracted the duplicate code into a single function call,and we made sure when team is deleted its associated records are deleted first then the team gets deleted.We have tested using [http://rspec.info/ Rspec]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Expertiza ==&lt;br /&gt;
&lt;br /&gt;
Expertiza &amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza].''expertiza project''&amp;lt;/ref&amp;gt; is a project built with [https://en.wikipedia.org/wiki/Ruby_on_Rails Ruby on Rails]&amp;lt;ref&amp;gt;[http://rubyonrails.org/ RubyonRails]&amp;lt;/ref&amp;gt;.It is mainly used by an instructor to provide a peer reviewing systems among the students it also supports team projects submissions wikis etc.&lt;br /&gt;
&lt;br /&gt;
== What it Does ==&lt;br /&gt;
This class handle the basic creation and modification of student teams.  There are also some complicated actions. E.g., if a team get destroyed (this may be caused by instructor force this team to be destroyed, the students all leave the team), the topic held by this team should be transferred to next team which is on the waiting list, if there is any.&lt;br /&gt;
These are the scenarios where topic transferring may happen: &lt;br /&gt;
* when instructor destroys a team &lt;br /&gt;
* when the last person leave this team &lt;br /&gt;
* when this team wants to switch topic &lt;br /&gt;
* when instructor wants to increase the available slots for a topic.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The same code for handling topic transferring used 3 times at the following places:&lt;br /&gt;
&lt;br /&gt;
 [scenario 1] teams_controller line 95 (if next_wait_listed_team), &lt;br /&gt;
 [scenario 2] student_teams_controller line 139 (if first_waitlisted_team) and &lt;br /&gt;
 [scenario 4] sign_up_topic line 117 (if next_wait_listed_team). &lt;br /&gt;
 Scenario 3’s code is not copied, and one can find the code at line 92 in sign_up_topic.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What Needs to be Done ==&lt;br /&gt;
*Make topic_transfering a function call, and make sure all those 4 scenario works.&lt;br /&gt;
*Write tests for all those 4 scenarios.&lt;br /&gt;
*Record a video for those 4 scenarios, submit it to YouTube and submit the YouTube link to Expertiza.&lt;br /&gt;
*Delete method in teams_controller.rb is complicated, “@team.destroy” should be called latest after all the records related to this team can be deleted.&lt;br /&gt;
*write tests for delete method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementing the repeated code as function call ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before: Code repeated in teams_controller.rb, student_teams_controller.rb, SignUpTopic.rb&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  if next_wait_listed_team&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
  end&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
After: The repeated code implemented as a function in SignUpTopic.rb&lt;br /&gt;
 &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 def self.assign_to_first_waiting_team(next_wait_listed_team)&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
 end &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Refactoring the Order of deleting a team and its attributes==&lt;br /&gt;
Problem: The team is deleted even before its attributes are destroyed in teams_controller.rb&lt;br /&gt;
Before: &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  @team.destroy if @team&lt;br /&gt;
  @signUps = SignedUpTeam.where(team_id: params[:id])&lt;br /&gt;
  @teams_users = TeamsUser.where(team_id: params[:id])&lt;br /&gt;
  @teams_users.destroy_all if @teams_users&lt;br /&gt;
  if @signUps.size == 1 and @signUps.first.is_waitlisted == false #this team hold a topic&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
After: &lt;br /&gt;
 &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  @team = Team.find(params[:id])&lt;br /&gt;
  course = Object.const_get(session[:team_type]).find(@team.parent_id)&lt;br /&gt;
  @signUps = SignedUpTeam.where(team_id: @team.id)&lt;br /&gt;
  @teams_users = TeamsUser.where(team_id: @team.id)&lt;br /&gt;
  if @signUps.size == 1 and @signUps.first.is_waitlisted == false&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
Rspec Tests:&lt;br /&gt;
&lt;br /&gt;
Rspec tests can be performed by using the following commands from expertiza directory in the terminal:&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
 bundle exec rake db:reset RAILS_ENV=test &lt;br /&gt;
 rspec spec/controllers/teams_controller_spec.rb &lt;br /&gt;
..&lt;br /&gt;
== References ==&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=97931</id>
		<title>CSC/ECE 517 Fall 2015/oss E1554 AAR</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=97931"/>
		<updated>2015-11-01T00:53:53Z</updated>

		<summary type="html">&lt;p&gt;Rravill: /* Refactoring the Order of deleting a team and its attributes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''E1554 Refactoring TeamsController.rb'''&lt;br /&gt;
This is description of the CSC/ECE 517 Fall2015 OSS project(E1554),we refactored teams_controller.rb,students_team_controller.rb,sign_up_topic.rb we extracted the duplicate code into a single function call,and we made sure when team is deleted its associated records are deleted first then the team gets deleted.We have tested using [http://rspec.info/ Rspec]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Expertiza ==&lt;br /&gt;
&lt;br /&gt;
Expertiza &amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza].''expertiza project''&amp;lt;/ref&amp;gt; is a project built with [https://en.wikipedia.org/wiki/Ruby_on_Rails Ruby on Rails]&amp;lt;ref&amp;gt;[http://rubyonrails.org/ RubyonRails]&amp;lt;/ref&amp;gt;.It is mainly used by an instructor to provide a peer reviewing systems among the students it also supports team projects submissions wikis etc.&lt;br /&gt;
&lt;br /&gt;
== What it Does ==&lt;br /&gt;
This class handle the basic creation and modification of student teams.  There are also some complicated actions. E.g., if a team get destroyed (this may be caused by instructor force this team to be destroyed, the students all leave the team), the topic held by this team should be transferred to next team which is on the waiting list, if there is any.&lt;br /&gt;
These are the scenarios where topic transferring may happen: &lt;br /&gt;
* when instructor destroys a team &lt;br /&gt;
* when the last person leave this team &lt;br /&gt;
* when this team wants to switch topic &lt;br /&gt;
* when instructor wants to increase the available slots for a topic.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The same code for handling topic transferring used 3 times at the following places:&lt;br /&gt;
&lt;br /&gt;
 [scenario 1] teams_controller line 95 (if next_wait_listed_team), &lt;br /&gt;
 [scenario 2] student_teams_controller line 139 (if first_waitlisted_team) and &lt;br /&gt;
 [scenario 4] sign_up_topic line 117 (if next_wait_listed_team). &lt;br /&gt;
 Scenario 3’s code is not copied, and one can find the code at line 92 in sign_up_topic.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What Needs to be Done ==&lt;br /&gt;
*Make topic_transfering a function call, and make sure all those 4 scenario works.&lt;br /&gt;
*Write tests for all those 4 scenarios.&lt;br /&gt;
*Record a video for those 4 scenarios, submit it to YouTube and submit the YouTube link to Expertiza.&lt;br /&gt;
*Delete method in teams_controller.rb is complicated, “@team.destroy” should be called latest after all the records related to this team can be deleted.&lt;br /&gt;
*write tests for delete method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementing the repeated code as function call ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before: Code repeated in teams_controller.rb, student_teams_controller.rb, SignUpTopic.rb&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  if next_wait_listed_team&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
  end&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
After: The repeated code implemented as a function in SignUpTopic.rb&lt;br /&gt;
 &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 def self.assign_to_first_waiting_team(next_wait_listed_team)&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
 end &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Refactoring the Order of deleting a team and its attributes==&lt;br /&gt;
Problem: The team is deleted even before its attributes are destroyed in teams_controller.rb&lt;br /&gt;
Before: &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  @team.destroy if @team&lt;br /&gt;
  @signUps = SignedUpTeam.where(team_id: params[:id])&lt;br /&gt;
  @teams_users = TeamsUser.where(team_id: params[:id])&lt;br /&gt;
  @teams_users.destroy_all if @teams_users&lt;br /&gt;
  if @signUps.size == 1 and @signUps.first.is_waitlisted == false #this team hold a topic&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
After: &lt;br /&gt;
 &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  @team = Team.find(params[:id])&lt;br /&gt;
  course = Object.const_get(session[:team_type]).find(@team.parent_id)&lt;br /&gt;
  @signUps = SignedUpTeam.where(team_id: @team.id)&lt;br /&gt;
  @teams_users = TeamsUser.where(team_id: @team.id)&lt;br /&gt;
  if @signUps.size == 1 and @signUps.first.is_waitlisted == false&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=97930</id>
		<title>CSC/ECE 517 Fall 2015/oss E1554 AAR</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=97930"/>
		<updated>2015-11-01T00:53:21Z</updated>

		<summary type="html">&lt;p&gt;Rravill: /* Refactoring the Order of deleting a team and its attributes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''E1554 Refactoring TeamsController.rb'''&lt;br /&gt;
This is description of the CSC/ECE 517 Fall2015 OSS project(E1554),we refactored teams_controller.rb,students_team_controller.rb,sign_up_topic.rb we extracted the duplicate code into a single function call,and we made sure when team is deleted its associated records are deleted first then the team gets deleted.We have tested using [http://rspec.info/ Rspec]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Expertiza ==&lt;br /&gt;
&lt;br /&gt;
Expertiza &amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza].''expertiza project''&amp;lt;/ref&amp;gt; is a project built with [https://en.wikipedia.org/wiki/Ruby_on_Rails Ruby on Rails]&amp;lt;ref&amp;gt;[http://rubyonrails.org/ RubyonRails]&amp;lt;/ref&amp;gt;.It is mainly used by an instructor to provide a peer reviewing systems among the students it also supports team projects submissions wikis etc.&lt;br /&gt;
&lt;br /&gt;
== What it Does ==&lt;br /&gt;
This class handle the basic creation and modification of student teams.  There are also some complicated actions. E.g., if a team get destroyed (this may be caused by instructor force this team to be destroyed, the students all leave the team), the topic held by this team should be transferred to next team which is on the waiting list, if there is any.&lt;br /&gt;
These are the scenarios where topic transferring may happen: &lt;br /&gt;
* when instructor destroys a team &lt;br /&gt;
* when the last person leave this team &lt;br /&gt;
* when this team wants to switch topic &lt;br /&gt;
* when instructor wants to increase the available slots for a topic.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The same code for handling topic transferring used 3 times at the following places:&lt;br /&gt;
&lt;br /&gt;
 [scenario 1] teams_controller line 95 (if next_wait_listed_team), &lt;br /&gt;
 [scenario 2] student_teams_controller line 139 (if first_waitlisted_team) and &lt;br /&gt;
 [scenario 4] sign_up_topic line 117 (if next_wait_listed_team). &lt;br /&gt;
 Scenario 3’s code is not copied, and one can find the code at line 92 in sign_up_topic.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What Needs to be Done ==&lt;br /&gt;
*Make topic_transfering a function call, and make sure all those 4 scenario works.&lt;br /&gt;
*Write tests for all those 4 scenarios.&lt;br /&gt;
*Record a video for those 4 scenarios, submit it to YouTube and submit the YouTube link to Expertiza.&lt;br /&gt;
*Delete method in teams_controller.rb is complicated, “@team.destroy” should be called latest after all the records related to this team can be deleted.&lt;br /&gt;
*write tests for delete method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementing the repeated code as function call ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before: Code repeated in teams_controller.rb, student_teams_controller.rb, SignUpTopic.rb&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  if next_wait_listed_team&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
  end&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
After: The repeated code implemented as a function in SignUpTopic.rb&lt;br /&gt;
 &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 def self.assign_to_first_waiting_team(next_wait_listed_team)&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
 end &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Refactoring the Order of deleting a team and its attributes==&lt;br /&gt;
Problem: The team is deleted even before its attributes are destroyed in teams_controller.rb&lt;br /&gt;
Before: &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  @team.destroy if @team&lt;br /&gt;
  @signUps = SignedUpTeam.where(team_id: params[:id])&lt;br /&gt;
  @teams_users = TeamsUser.where(team_id: params[:id])&lt;br /&gt;
  @teams_users.destroy_all if @teams_users&lt;br /&gt;
  if @signUps.size == 1 and @signUps.first.is_waitlisted == false #this team hold a topic&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
After: &lt;br /&gt;
 &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
@team = Team.find(params[:id])&lt;br /&gt;
course = Object.const_get(session[:team_type]).find(@team.parent_id)&lt;br /&gt;
@signUps = SignedUpTeam.where(team_id: @team.id)&lt;br /&gt;
@teams_users = TeamsUser.where(team_id: @team.id)&lt;br /&gt;
if @signUps.size == 1 and @signUps.first.is_waitlisted == false&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=97928</id>
		<title>CSC/ECE 517 Fall 2015/oss E1554 AAR</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=97928"/>
		<updated>2015-11-01T00:51:33Z</updated>

		<summary type="html">&lt;p&gt;Rravill: /* Refactoring the Order of deleting a team and its attributes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''E1554 Refactoring TeamsController.rb'''&lt;br /&gt;
This is description of the CSC/ECE 517 Fall2015 OSS project(E1554),we refactored teams_controller.rb,students_team_controller.rb,sign_up_topic.rb we extracted the duplicate code into a single function call,and we made sure when team is deleted its associated records are deleted first then the team gets deleted.We have tested using [http://rspec.info/ Rspec]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Expertiza ==&lt;br /&gt;
&lt;br /&gt;
Expertiza &amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza].''expertiza project''&amp;lt;/ref&amp;gt; is a project built with [https://en.wikipedia.org/wiki/Ruby_on_Rails Ruby on Rails]&amp;lt;ref&amp;gt;[http://rubyonrails.org/ RubyonRails]&amp;lt;/ref&amp;gt;.It is mainly used by an instructor to provide a peer reviewing systems among the students it also supports team projects submissions wikis etc.&lt;br /&gt;
&lt;br /&gt;
== What it Does ==&lt;br /&gt;
This class handle the basic creation and modification of student teams.  There are also some complicated actions. E.g., if a team get destroyed (this may be caused by instructor force this team to be destroyed, the students all leave the team), the topic held by this team should be transferred to next team which is on the waiting list, if there is any.&lt;br /&gt;
These are the scenarios where topic transferring may happen: &lt;br /&gt;
* when instructor destroys a team &lt;br /&gt;
* when the last person leave this team &lt;br /&gt;
* when this team wants to switch topic &lt;br /&gt;
* when instructor wants to increase the available slots for a topic.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The same code for handling topic transferring used 3 times at the following places:&lt;br /&gt;
&lt;br /&gt;
 [scenario 1] teams_controller line 95 (if next_wait_listed_team), &lt;br /&gt;
 [scenario 2] student_teams_controller line 139 (if first_waitlisted_team) and &lt;br /&gt;
 [scenario 4] sign_up_topic line 117 (if next_wait_listed_team). &lt;br /&gt;
 Scenario 3’s code is not copied, and one can find the code at line 92 in sign_up_topic.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What Needs to be Done ==&lt;br /&gt;
*Make topic_transfering a function call, and make sure all those 4 scenario works.&lt;br /&gt;
*Write tests for all those 4 scenarios.&lt;br /&gt;
*Record a video for those 4 scenarios, submit it to YouTube and submit the YouTube link to Expertiza.&lt;br /&gt;
*Delete method in teams_controller.rb is complicated, “@team.destroy” should be called latest after all the records related to this team can be deleted.&lt;br /&gt;
*write tests for delete method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementing the repeated code as function call ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before: Code repeated in teams_controller.rb, student_teams_controller.rb, SignUpTopic.rb&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  if next_wait_listed_team&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
  end&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
After: The repeated code implemented as a function in SignUpTopic.rb&lt;br /&gt;
 &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 def self.assign_to_first_waiting_team(next_wait_listed_team)&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
 end &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Refactoring the Order of deleting a team and its attributes==&lt;br /&gt;
Problem: The team is deleted even before its attributes are destroyed in teams_controller.rb&lt;br /&gt;
Before: Code repeated in teams_controller.rb, student_teams_controller.rb, SignUpTopic.rb&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  if next_wait_listed_team&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
  end&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
After: The repeated code implemented as a function in SignUpTopic.rb&lt;br /&gt;
 &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 def self.assign_to_first_waiting_team(next_wait_listed_team)&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
 end &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
Before:&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
@team.destroy if @team&lt;br /&gt;
@signUps = SignedUpTeam.where(team_id: params[:id])&lt;br /&gt;
@teams_users = TeamsUser.where(team_id: params[:id])&lt;br /&gt;
@teams_users.destroy_all if @teams_users&lt;br /&gt;
if @signUps.size == 1 and @signUps.first.is_waitlisted == false #this team hold a topic&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
After:&lt;br /&gt;
 &lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
@team = Team.find(params[:id])&lt;br /&gt;
course = Object.const_get(session[:team_type]).find(@team.parent_id)&lt;br /&gt;
@signUps = SignedUpTeam.where(team_id: @team.id)&lt;br /&gt;
@teams_users = TeamsUser.where(team_id: @team.id)&lt;br /&gt;
if @signUps.size == 1 and @signUps.first.is_waitlisted == false&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=97927</id>
		<title>CSC/ECE 517 Fall 2015/oss E1554 AAR</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=97927"/>
		<updated>2015-11-01T00:50:57Z</updated>

		<summary type="html">&lt;p&gt;Rravill: /* Refactoring the Order of deleting a team and its attributes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''E1554 Refactoring TeamsController.rb'''&lt;br /&gt;
This is description of the CSC/ECE 517 Fall2015 OSS project(E1554),we refactored teams_controller.rb,students_team_controller.rb,sign_up_topic.rb we extracted the duplicate code into a single function call,and we made sure when team is deleted its associated records are deleted first then the team gets deleted.We have tested using [http://rspec.info/ Rspec]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Expertiza ==&lt;br /&gt;
&lt;br /&gt;
Expertiza &amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza].''expertiza project''&amp;lt;/ref&amp;gt; is a project built with [https://en.wikipedia.org/wiki/Ruby_on_Rails Ruby on Rails]&amp;lt;ref&amp;gt;[http://rubyonrails.org/ RubyonRails]&amp;lt;/ref&amp;gt;.It is mainly used by an instructor to provide a peer reviewing systems among the students it also supports team projects submissions wikis etc.&lt;br /&gt;
&lt;br /&gt;
== What it Does ==&lt;br /&gt;
This class handle the basic creation and modification of student teams.  There are also some complicated actions. E.g., if a team get destroyed (this may be caused by instructor force this team to be destroyed, the students all leave the team), the topic held by this team should be transferred to next team which is on the waiting list, if there is any.&lt;br /&gt;
These are the scenarios where topic transferring may happen: &lt;br /&gt;
* when instructor destroys a team &lt;br /&gt;
* when the last person leave this team &lt;br /&gt;
* when this team wants to switch topic &lt;br /&gt;
* when instructor wants to increase the available slots for a topic.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The same code for handling topic transferring used 3 times at the following places:&lt;br /&gt;
&lt;br /&gt;
 [scenario 1] teams_controller line 95 (if next_wait_listed_team), &lt;br /&gt;
 [scenario 2] student_teams_controller line 139 (if first_waitlisted_team) and &lt;br /&gt;
 [scenario 4] sign_up_topic line 117 (if next_wait_listed_team). &lt;br /&gt;
 Scenario 3’s code is not copied, and one can find the code at line 92 in sign_up_topic.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What Needs to be Done ==&lt;br /&gt;
*Make topic_transfering a function call, and make sure all those 4 scenario works.&lt;br /&gt;
*Write tests for all those 4 scenarios.&lt;br /&gt;
*Record a video for those 4 scenarios, submit it to YouTube and submit the YouTube link to Expertiza.&lt;br /&gt;
*Delete method in teams_controller.rb is complicated, “@team.destroy” should be called latest after all the records related to this team can be deleted.&lt;br /&gt;
*write tests for delete method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementing the repeated code as function call ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before: Code repeated in teams_controller.rb, student_teams_controller.rb, SignUpTopic.rb&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  if next_wait_listed_team&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
  end&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
After: The repeated code implemented as a function in SignUpTopic.rb&lt;br /&gt;
 &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 def self.assign_to_first_waiting_team(next_wait_listed_team)&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
 end &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Refactoring the Order of deleting a team and its attributes==&lt;br /&gt;
Problem: The team is deleted even before its attributes are destroyed in teams_controller.rb&lt;br /&gt;
Before:&lt;br /&gt;
&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
@team.destroy if @team&lt;br /&gt;
@signUps = SignedUpTeam.where(team_id: params[:id])&lt;br /&gt;
@teams_users = TeamsUser.where(team_id: params[:id])&lt;br /&gt;
@teams_users.destroy_all if @teams_users&lt;br /&gt;
if @signUps.size == 1 and @signUps.first.is_waitlisted == false #this team hold a topic&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
After:&lt;br /&gt;
 &lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
@team = Team.find(params[:id])&lt;br /&gt;
course = Object.const_get(session[:team_type]).find(@team.parent_id)&lt;br /&gt;
@signUps = SignedUpTeam.where(team_id: @team.id)&lt;br /&gt;
@teams_users = TeamsUser.where(team_id: @team.id)&lt;br /&gt;
if @signUps.size == 1 and @signUps.first.is_waitlisted == false&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=97926</id>
		<title>CSC/ECE 517 Fall 2015/oss E1554 AAR</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=97926"/>
		<updated>2015-11-01T00:50:30Z</updated>

		<summary type="html">&lt;p&gt;Rravill: /* Refactoring the Order of deleting a team and its attributes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''E1554 Refactoring TeamsController.rb'''&lt;br /&gt;
This is description of the CSC/ECE 517 Fall2015 OSS project(E1554),we refactored teams_controller.rb,students_team_controller.rb,sign_up_topic.rb we extracted the duplicate code into a single function call,and we made sure when team is deleted its associated records are deleted first then the team gets deleted.We have tested using [http://rspec.info/ Rspec]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Expertiza ==&lt;br /&gt;
&lt;br /&gt;
Expertiza &amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza].''expertiza project''&amp;lt;/ref&amp;gt; is a project built with [https://en.wikipedia.org/wiki/Ruby_on_Rails Ruby on Rails]&amp;lt;ref&amp;gt;[http://rubyonrails.org/ RubyonRails]&amp;lt;/ref&amp;gt;.It is mainly used by an instructor to provide a peer reviewing systems among the students it also supports team projects submissions wikis etc.&lt;br /&gt;
&lt;br /&gt;
== What it Does ==&lt;br /&gt;
This class handle the basic creation and modification of student teams.  There are also some complicated actions. E.g., if a team get destroyed (this may be caused by instructor force this team to be destroyed, the students all leave the team), the topic held by this team should be transferred to next team which is on the waiting list, if there is any.&lt;br /&gt;
These are the scenarios where topic transferring may happen: &lt;br /&gt;
* when instructor destroys a team &lt;br /&gt;
* when the last person leave this team &lt;br /&gt;
* when this team wants to switch topic &lt;br /&gt;
* when instructor wants to increase the available slots for a topic.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The same code for handling topic transferring used 3 times at the following places:&lt;br /&gt;
&lt;br /&gt;
 [scenario 1] teams_controller line 95 (if next_wait_listed_team), &lt;br /&gt;
 [scenario 2] student_teams_controller line 139 (if first_waitlisted_team) and &lt;br /&gt;
 [scenario 4] sign_up_topic line 117 (if next_wait_listed_team). &lt;br /&gt;
 Scenario 3’s code is not copied, and one can find the code at line 92 in sign_up_topic.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What Needs to be Done ==&lt;br /&gt;
*Make topic_transfering a function call, and make sure all those 4 scenario works.&lt;br /&gt;
*Write tests for all those 4 scenarios.&lt;br /&gt;
*Record a video for those 4 scenarios, submit it to YouTube and submit the YouTube link to Expertiza.&lt;br /&gt;
*Delete method in teams_controller.rb is complicated, “@team.destroy” should be called latest after all the records related to this team can be deleted.&lt;br /&gt;
*write tests for delete method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementing the repeated code as function call ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before: Code repeated in teams_controller.rb, student_teams_controller.rb, SignUpTopic.rb&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  if next_wait_listed_team&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
  end&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
After: The repeated code implemented as a function in SignUpTopic.rb&lt;br /&gt;
 &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 def self.assign_to_first_waiting_team(next_wait_listed_team)&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
 end &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Refactoring the Order of deleting a team and its attributes==&lt;br /&gt;
Problem: The team is deleted even before its attributes are destroyed in teams_controller.rb&lt;br /&gt;
Before:&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
@team.destroy if @team&lt;br /&gt;
@signUps = SignedUpTeam.where(team_id: params[:id])&lt;br /&gt;
@teams_users = TeamsUser.where(team_id: params[:id])&lt;br /&gt;
@teams_users.destroy_all if @teams_users&lt;br /&gt;
if @signUps.size == 1 and @signUps.first.is_waitlisted == false #this team hold a topic&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
After: &lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
@team = Team.find(params[:id])&lt;br /&gt;
course = Object.const_get(session[:team_type]).find(@team.parent_id)&lt;br /&gt;
@signUps = SignedUpTeam.where(team_id: @team.id)&lt;br /&gt;
@teams_users = TeamsUser.where(team_id: @team.id)&lt;br /&gt;
if @signUps.size == 1 and @signUps.first.is_waitlisted == false&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=97924</id>
		<title>CSC/ECE 517 Fall 2015/oss E1554 AAR</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=97924"/>
		<updated>2015-11-01T00:50:04Z</updated>

		<summary type="html">&lt;p&gt;Rravill: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''E1554 Refactoring TeamsController.rb'''&lt;br /&gt;
This is description of the CSC/ECE 517 Fall2015 OSS project(E1554),we refactored teams_controller.rb,students_team_controller.rb,sign_up_topic.rb we extracted the duplicate code into a single function call,and we made sure when team is deleted its associated records are deleted first then the team gets deleted.We have tested using [http://rspec.info/ Rspec]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Expertiza ==&lt;br /&gt;
&lt;br /&gt;
Expertiza &amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza].''expertiza project''&amp;lt;/ref&amp;gt; is a project built with [https://en.wikipedia.org/wiki/Ruby_on_Rails Ruby on Rails]&amp;lt;ref&amp;gt;[http://rubyonrails.org/ RubyonRails]&amp;lt;/ref&amp;gt;.It is mainly used by an instructor to provide a peer reviewing systems among the students it also supports team projects submissions wikis etc.&lt;br /&gt;
&lt;br /&gt;
== What it Does ==&lt;br /&gt;
This class handle the basic creation and modification of student teams.  There are also some complicated actions. E.g., if a team get destroyed (this may be caused by instructor force this team to be destroyed, the students all leave the team), the topic held by this team should be transferred to next team which is on the waiting list, if there is any.&lt;br /&gt;
These are the scenarios where topic transferring may happen: &lt;br /&gt;
* when instructor destroys a team &lt;br /&gt;
* when the last person leave this team &lt;br /&gt;
* when this team wants to switch topic &lt;br /&gt;
* when instructor wants to increase the available slots for a topic.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The same code for handling topic transferring used 3 times at the following places:&lt;br /&gt;
&lt;br /&gt;
 [scenario 1] teams_controller line 95 (if next_wait_listed_team), &lt;br /&gt;
 [scenario 2] student_teams_controller line 139 (if first_waitlisted_team) and &lt;br /&gt;
 [scenario 4] sign_up_topic line 117 (if next_wait_listed_team). &lt;br /&gt;
 Scenario 3’s code is not copied, and one can find the code at line 92 in sign_up_topic.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What Needs to be Done ==&lt;br /&gt;
*Make topic_transfering a function call, and make sure all those 4 scenario works.&lt;br /&gt;
*Write tests for all those 4 scenarios.&lt;br /&gt;
*Record a video for those 4 scenarios, submit it to YouTube and submit the YouTube link to Expertiza.&lt;br /&gt;
*Delete method in teams_controller.rb is complicated, “@team.destroy” should be called latest after all the records related to this team can be deleted.&lt;br /&gt;
*write tests for delete method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementing the repeated code as function call ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before: Code repeated in teams_controller.rb, student_teams_controller.rb, SignUpTopic.rb&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  if next_wait_listed_team&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
  end&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
After: The repeated code implemented as a function in SignUpTopic.rb&lt;br /&gt;
 &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 def self.assign_to_first_waiting_team(next_wait_listed_team)&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
 end &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Refactoring the Order of deleting a team and its attributes==&lt;br /&gt;
Problem: The team is deleted even before its attributes are destroyed in teams_controller.rb&lt;br /&gt;
Before:&lt;br /&gt;
..&lt;br /&gt;
@team.destroy if @team&lt;br /&gt;
@signUps = SignedUpTeam.where(team_id: params[:id])&lt;br /&gt;
@teams_users = TeamsUser.where(team_id: params[:id])&lt;br /&gt;
@teams_users.destroy_all if @teams_users&lt;br /&gt;
if @signUps.size == 1 and @signUps.first.is_waitlisted == false #this team hold a topic&lt;br /&gt;
..&lt;br /&gt;
&lt;br /&gt;
After: &lt;br /&gt;
..&lt;br /&gt;
@team = Team.find(params[:id])&lt;br /&gt;
course = Object.const_get(session[:team_type]).find(@team.parent_id)&lt;br /&gt;
@signUps = SignedUpTeam.where(team_id: @team.id)&lt;br /&gt;
@teams_users = TeamsUser.where(team_id: @team.id)&lt;br /&gt;
if @signUps.size == 1 and @signUps.first.is_waitlisted == false&lt;br /&gt;
&lt;br /&gt;
..&lt;br /&gt;
== References ==&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=97890</id>
		<title>CSC/ECE 517 Fall 2015/oss E1554 AAR</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=97890"/>
		<updated>2015-11-01T00:28:46Z</updated>

		<summary type="html">&lt;p&gt;Rravill: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''E1554 Refactoring TeamsController.rb'''&lt;br /&gt;
This is description of the CSC/ECE 517 Fall2015 OSS project(E1554),we refactored teams_controller.rb,students_team_controller.rb,sign_up_topic.rb we extracted the duplicate code into a single function call,and we made sure when team is deleted its associated records are deleted first then the team gets deleted.We have tested using [http://rspec.info/ Rspec]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Expertiza ==&lt;br /&gt;
&lt;br /&gt;
Expertiza &amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza].''expertiza project''&amp;lt;/ref&amp;gt; is a project built with [https://en.wikipedia.org/wiki/Ruby_on_Rails Ruby on Rails]&amp;lt;ref&amp;gt;[http://rubyonrails.org/ RubyonRails]&amp;lt;/ref&amp;gt;.It is mainly used by an instructor to provide a peer reviewing systems among the students it also supports team projects submissions wikis etc.&lt;br /&gt;
&lt;br /&gt;
== What it Does ==&lt;br /&gt;
This class handle the basic creation and modification of student teams.  There are also some complicated actions. E.g., if a team get destroyed (this may be caused by instructor force this team to be destroyed, the students all leave the team), the topic held by this team should be transferred to next team which is on the waiting list, if there is any.&lt;br /&gt;
These are the scenarios where topic transferring may happen: &lt;br /&gt;
* when instructor destroys a team &lt;br /&gt;
* when the last person leave this team &lt;br /&gt;
* when this team wants to switch topic &lt;br /&gt;
* when instructor wants to increase the available slots for a topic.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The same code for handling topic transferring used 3 times at the following places:&lt;br /&gt;
&lt;br /&gt;
 [scenario 1] teams_controller line 95 (if next_wait_listed_team), &lt;br /&gt;
 [scenario 2] student_teams_controller line 139 (if first_waitlisted_team) and &lt;br /&gt;
 [scenario 4] sign_up_topic line 117 (if next_wait_listed_team). &lt;br /&gt;
 Scenario 3’s code is not copied, and one can find the code at line 92 in sign_up_topic.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What Needs to be Done ==&lt;br /&gt;
*Make topic_transfering a function call, and make sure all those 4 scenario works.&lt;br /&gt;
*Write tests for all those 4 scenarios.&lt;br /&gt;
*Record a video for those 4 scenarios, submit it to YouTube and submit the YouTube link to Expertiza.&lt;br /&gt;
*Delete method in teams_controller.rb is complicated, “@team.destroy” should be called latest after all the records related to this team can be deleted.&lt;br /&gt;
*write tests for delete method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementing the repeated code as function call ==&lt;br /&gt;
&lt;br /&gt;
Before&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  if next_wait_listed_team&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
  end&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 def self.assign_to_first_waiting_team(next_wait_listed_team)&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
 end &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=97888</id>
		<title>CSC/ECE 517 Fall 2015/oss E1554 AAR</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=97888"/>
		<updated>2015-11-01T00:27:11Z</updated>

		<summary type="html">&lt;p&gt;Rravill: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''E1554 Refactoring TeamsController.rb'''&lt;br /&gt;
This is description of the CSC/ECE 517 Fall2015 OSS project(E1554),we refactored teams_controller.rb,students_team_controller.rb,sign_up_topic.rb we extracted the duplicate code into a single function call,and we made sure when team is deleted its associated records are deleted first then the team gets deleted.We have tested using [http://rspec.info/ Rspec]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Expertiza ==&lt;br /&gt;
&lt;br /&gt;
Expertiza &amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza].''expertiza project''&amp;lt;/ref&amp;gt; is a project built with [https://en.wikipedia.org/wiki/Ruby_on_Rails Ruby on Rails]&amp;lt;ref&amp;gt;[http://rubyonrails.org/ RubyonRails]&amp;lt;/ref&amp;gt;.It is mainly used by an instructor to provide a peer reviewing systems among the students it also supports team projects submissions wikis etc.&lt;br /&gt;
&lt;br /&gt;
== What it Does ==&lt;br /&gt;
This class handle the basic creation and modification of student teams.  There are also some complicated actions. E.g., if a team get destroyed (this may be caused by instructor force this team to be destroyed, the students all leave the team), the topic held by this team should be transferred to next team which is on the waiting list, if there is any.&lt;br /&gt;
These are the scenarios where topic transferring may happen: &lt;br /&gt;
* when instructor destroys a team &lt;br /&gt;
* when the last person leave this team &lt;br /&gt;
* when this team wants to switch topic &lt;br /&gt;
* when instructor wants to increase the available slots for a topic.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The same code for handling topic transferring used 3 times at the following places:&lt;br /&gt;
&lt;br /&gt;
 [scenario 1] teams_controller line 95 (if next_wait_listed_team), &lt;br /&gt;
 [scenario 2] student_teams_controller line 139 (if first_waitlisted_team) and &lt;br /&gt;
 [scenario 4] sign_up_topic line 117 (if next_wait_listed_team). &lt;br /&gt;
 Scenario 3’s code is not copied, and one can find the code at line 92 in sign_up_topic.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What Needs to be Done ==&lt;br /&gt;
*Make topic_transfering a function call, and make sure all those 4 scenario works.&lt;br /&gt;
*Write tests for all those 4 scenarios.&lt;br /&gt;
*Record a video for those 4 scenarios, submit it to YouTube and submit the YouTube link to Expertiza.&lt;br /&gt;
*Delete method in teams_controller.rb is complicated, “@team.destroy” should be called latest after all the records related to this team can be deleted.&lt;br /&gt;
*write tests for delete method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before ==&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  if next_wait_listed_team&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
  end&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 def self.assign_to_first_waiting_team(next_wait_listed_team)&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
 end &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=97887</id>
		<title>CSC/ECE 517 Fall 2015/oss E1554 AAR</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2015/oss_E1554_AAR&amp;diff=97887"/>
		<updated>2015-11-01T00:26:10Z</updated>

		<summary type="html">&lt;p&gt;Rravill: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''E1554 Refactoring TeamsController.rb'''&lt;br /&gt;
This is description of the CSC/ECE 517 Fall2015 OSS project(E1554),we refactored teams_controller.rb,students_team_controller.rb,sign_up_topic.rb we extracted the duplicate code into a single function call,and we made sure when team is deleted its associated records are deleted first then the team gets deleted.We have tested using [http://rspec.info/ Rspec]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Expertiza ==&lt;br /&gt;
&lt;br /&gt;
Expertiza &amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza].''expertiza project''&amp;lt;/ref&amp;gt; is a project built with [https://en.wikipedia.org/wiki/Ruby_on_Rails Ruby on Rails]&amp;lt;ref&amp;gt;[http://rubyonrails.org/ RubyonRails]&amp;lt;/ref&amp;gt;.It is mainly used by an instructor to provide a peer reviewing systems among the students it also supports team projects submissions wikis etc.&lt;br /&gt;
&lt;br /&gt;
== What it Does ==&lt;br /&gt;
This class handle the basic creation and modification of student teams.  There are also some complicated actions. E.g., if a team get destroyed (this may be caused by instructor force this team to be destroyed, the students all leave the team), the topic held by this team should be transferred to next team which is on the waiting list, if there is any.&lt;br /&gt;
These are the scenarios where topic transferring may happen: &lt;br /&gt;
* when instructor destroys a team &lt;br /&gt;
* when the last person leave this team &lt;br /&gt;
* when this team wants to switch topic &lt;br /&gt;
* when instructor wants to increase the available slots for a topic.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The same code for handling topic transferring used 3 times at the following places:&lt;br /&gt;
&lt;br /&gt;
 [scenario 1] teams_controller line 95 (if next_wait_listed_team), &lt;br /&gt;
 [scenario 2] student_teams_controller line 139 (if first_waitlisted_team) and &lt;br /&gt;
 [scenario 4] sign_up_topic line 117 (if next_wait_listed_team). &lt;br /&gt;
 Scenario 3’s code is not copied, and one can find the code at line 92 in sign_up_topic.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What Needs to be Done ==&lt;br /&gt;
*Make topic_transfering a function call, and make sure all those 4 scenario works.&lt;br /&gt;
*Write tests for all those 4 scenarios.&lt;br /&gt;
*Record a video for those 4 scenarios, submit it to YouTube and submit the YouTube link to Expertiza.&lt;br /&gt;
*Delete method in teams_controller.rb is complicated, “@team.destroy” should be called latest after all the records related to this team can be deleted.&lt;br /&gt;
*write tests for delete method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before ==&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  if next_wait_listed_team&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
  end&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 def self.assign_to_first_waiting_team(next_wait_listed_team)&lt;br /&gt;
    team_id = next_wait_listed_team.team_id&lt;br /&gt;
    team = Team.find(team_id)&lt;br /&gt;
    assignment_id = team.parent_id&lt;br /&gt;
    next_wait_listed_team.is_waitlisted = false&lt;br /&gt;
    next_wait_listed_team.save&lt;br /&gt;
    Waitlist.cancel_all_waitlists(team_id, assignment_id)&lt;br /&gt;
 end &lt;br /&gt;
..&lt;br /&gt;
..&lt;br /&gt;
 SignUpTopic.assign_to_first_waiting_team(next_wait_listed_team)&lt;br /&gt;
 end&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rravill</name></author>
	</entry>
</feed>