<?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=Jkini</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=Jkini"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Jkini"/>
	<updated>2026-07-21T19:41:31Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144198</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144198"/>
		<updated>2022-04-06T03:26:27Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2231 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
= Team =&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
= Problem Statement =&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem 1: Review_bids_others_work is a DRY violation ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 2: Run_bidding algorithm should be assign_reviewers ===&lt;br /&gt;
In this issue, &amp;lt;code&amp;gt;Run_bidding_algorithm&amp;lt;/code&amp;gt; algorithm should be assigned a new name which is &amp;lt;code&amp;gt;assign_reviewers&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;Run_bidding_algorithm&amp;lt;/code&amp;gt; will be refactored to a new name which is &amp;lt;code&amp;gt;assign_reviewers&amp;lt;/code&amp;gt;. Accordingly, we will have to refractor this on the calling side too.&lt;br /&gt;
&lt;br /&gt;
=== Problem 3: Currently it doesn't work if some student does not bid. In this case, the algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': We will work on refactoring the &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; to use partial inputs.&lt;br /&gt;
&lt;br /&gt;
=== Problem 4: Figure out why running the bidding algorithm only works on assignments with teams. What if the assignment does not have a team? Can we tweak the code to make it work in this case? ===&lt;br /&gt;
So this is an open-ended issue. Currently, the bidding algorithm only works on assignments with the team. Currently, if the assignment does not have a team then no project gets assigned to the user until a team is formed. Yes, we can tweak the code so that an individual user gets assigned a project, but it won't make much sense as this is supposed to be a group project and there will be limited topics for the same. If the algorithm will go on assigning projects to individual users also then the pool will get exhausted.&lt;br /&gt;
&lt;br /&gt;
=== Problem 5: Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive ===&lt;br /&gt;
For this issue we need to include a count which contains the count of the number of students/teams who have made their bids.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': For this we would include a count in the method &amp;lt;code&amp;gt;assign_bidding&amp;lt;/code&amp;gt; of controller &amp;lt;code&amp;gt;review_bids_controller.rb&amp;lt;/code&amp;gt;. This attribute will help us to keep track of the number of students bidding for reviews. We will increment this count whenever a team or a student bids for a particular review and decrement it if all the bids are removed by any team. This count will be stored in DB and shown to the users in the view page.&lt;br /&gt;
&lt;br /&gt;
=== Problem 6: Ability to allow the algorithm to run again after running once. ===&lt;br /&gt;
Bidding algorithm is allowed to run only once in the TOPICS webpage in the process of managing Assignments. The button &amp;lt;code&amp;gt;Run Review Algorithm&amp;lt;/code&amp;gt; is enabled only when the parameter of the assignment &amp;lt;code&amp;gt;can_choose_topic_to_review&amp;lt;/code&amp;gt; is true.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': Dependency on &amp;lt;code&amp;gt;can_choose_topic_to_review&amp;lt;/code&amp;gt; attribute will be removed for the visibility of the button &amp;lt;code&amp;gt;Run Review Algorithm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problem 7: Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers? ===&lt;br /&gt;
The methods in rebiew_bid.rb are to get bidding data, to assign review topics, assign topic to reviewer and for getting individual reviewer_ids bidding data. These all are class methods. If we convert these to the instance methods, then we will have to create an object and then call these methods. So we will have to go through the flow to check whether it fits perfectly. If we are not able to convert these to instance methods, then a better approach would be to move these functions to a helper function.&lt;br /&gt;
&lt;br /&gt;
=== Problem 8: In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 9: Test whether the topic changes color depending on the number of outstanding bids ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_topic_bg_color_review_bids&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;review_bids_helper.rb&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;review_bids_show.html.erb&amp;lt;/code&amp;gt; are responsible for the color changes based on the number of participants and bid size.&lt;br /&gt;
*''' Proposed Solution ''': A new test case will be added in &amp;lt;code&amp;gt;review_bids_helper_spec.rb&amp;lt;/code&amp;gt; for this case that test the changes in background color based on the number of participants and outstanding size.&lt;br /&gt;
&lt;br /&gt;
= Diagram =&lt;br /&gt;
'''Author's View''' : The flow for authors to email reviewers regarding the work they have been reviewed for:&lt;br /&gt;
&lt;br /&gt;
[[File:E2231-1.png|500px]] &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing =&lt;br /&gt;
; RSpec &lt;br /&gt;
The main task here of testing is to make sure no functionality is breaking because of the refractoring.&lt;br /&gt;
&lt;br /&gt;
* If we decide to move the code of review_bid.rb to a helper as discussed as a possible approach for problem 7, then we will have to add some additional test cases to make sure the functionality is still working as necessary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We will have to run the project and check for all possible functionality that might get affected because of the refactoring done.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144197</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144197"/>
		<updated>2022-04-06T03:26:17Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2231 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
= Team =&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
= Problem Statement =&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem 1: Review_bids_others_work is a DRY violation ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 2: Run_bidding algorithm should be assign_reviewers ===&lt;br /&gt;
In this issue, &amp;lt;code&amp;gt;Run_bidding_algorithm&amp;lt;/code&amp;gt; algorithm should be assigned a new name which is &amp;lt;code&amp;gt;assign_reviewers&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;Run_bidding_algorithm&amp;lt;/code&amp;gt; will be refactored to a new name which is &amp;lt;code&amp;gt;assign_reviewers&amp;lt;/code&amp;gt;. Accordingly, we will have to refractor this on the calling side too.&lt;br /&gt;
&lt;br /&gt;
=== Problem 3: Currently it doesn't work if some student does not bid. In this case, the algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': We will work on refactoring the &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; to use partial inputs.&lt;br /&gt;
&lt;br /&gt;
=== Problem 4: Figure out why running the bidding algorithm only works on assignments with teams. What if the assignment does not have a team? Can we tweak the code to make it work in this case? ===&lt;br /&gt;
So this is an open-ended issue. Currently, the bidding algorithm only works on assignments with the team. Currently, if the assignment does not have a team then no project gets assigned to the user until a team is formed. Yes, we can tweak the code so that an individual user gets assigned a project, but it won't make much sense as this is supposed to be a group project and there will be limited topics for the same. If the algorithm will go on assigning projects to individual users also then the pool will get exhausted.&lt;br /&gt;
&lt;br /&gt;
=== Problem 5: Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive ===&lt;br /&gt;
For this issue we need to include a count which contains the count of the number of students/teams who have made their bids.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': For this we would include a count in the method &amp;lt;code&amp;gt;assign_bidding&amp;lt;/code&amp;gt; of controller &amp;lt;code&amp;gt;review_bids_controller.rb&amp;lt;/code&amp;gt;. This attribute will help us to keep track of the number of students bidding for reviews. We will increment this count whenever a team or a student bids for a particular review and decrement it if all the bids are removed by any team. This count will be stored in DB and shown to the users in the view page.&lt;br /&gt;
&lt;br /&gt;
=== Problem 6: Ability to allow the algorithm to run again after running once. ===&lt;br /&gt;
Bidding algorithm is allowed to run only once in the TOPICS webpage in the process of managing Assignments. The button &amp;lt;code&amp;gt;Run Review Algorithm&amp;lt;/code&amp;gt; is enabled only when the parameter of the assignment &amp;lt;code&amp;gt;can_choose_topic_to_review&amp;lt;/code&amp;gt; is true.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': Dependency on &amp;lt;code&amp;gt;can_choose_topic_to_review&amp;lt;/code&amp;gt; attribute will be removed for the visibility of the button &amp;lt;code&amp;gt;Run Review Algorithm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problem 7: Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers? ===&lt;br /&gt;
The methods in rebiew_bid.rb are to get bidding data, to assign review topics, assign topic to reviewer and for getting individual reviewer_ids bidding data. These all are class methods. If we convert these to the instance methods, then we will have to create an object and then call these methods. So we will have to go through the flow to check whether it fits perfectly. If we are not able to convert these to instance methods, then a better approach would be to move these functions to a helper function.&lt;br /&gt;
&lt;br /&gt;
=== Problem 8: In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 9: Test whether the topic changes color depending on the number of outstanding bids ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_topic_bg_color_review_bids&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;review_bids_helper.rb&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;review_bids_show.html.erb&amp;lt;/code&amp;gt; are responsible for the color changes based on the number of participants and bid size.&lt;br /&gt;
*''' Proposed Solution ''': A new test case will be added in &amp;lt;code&amp;gt;review_bids_helper_spec.rb&amp;lt;/code&amp;gt; for this case that test the changes in background color based on the number of participants and outstanding size.&lt;br /&gt;
&lt;br /&gt;
= Diagram =&lt;br /&gt;
'''Author's View''' : The flow for authors to email reviewers regarding the work they have been reviewed for:&lt;br /&gt;
&lt;br /&gt;
[[File:E2231-1.png|500px]] &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing =&lt;br /&gt;
; RSpec &lt;br /&gt;
The main task here of testing is to make sure no functionality is breaking because of the refractoring.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* If we decide to move the code of review_bid.rb to a helper as discussed as a possible approach for problem 7, then we will have to add some additional test cases to make sure the functionality is still working as necessary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We will have to run the project and check for all possible functionality that might get affected because of the refactoring done.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144196</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144196"/>
		<updated>2022-04-06T03:25:58Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Testing (need to change the content) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2231 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
= Team =&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
= Problem Statement =&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem 1: Review_bids_others_work is a DRY violation ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 2: Run_bidding algorithm should be assign_reviewers ===&lt;br /&gt;
In this issue, &amp;lt;code&amp;gt;Run_bidding_algorithm&amp;lt;/code&amp;gt; algorithm should be assigned a new name which is &amp;lt;code&amp;gt;assign_reviewers&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;Run_bidding_algorithm&amp;lt;/code&amp;gt; will be refactored to a new name which is &amp;lt;code&amp;gt;assign_reviewers&amp;lt;/code&amp;gt;. Accordingly, we will have to refractor this on the calling side too.&lt;br /&gt;
&lt;br /&gt;
=== Problem 3: Currently it doesn't work if some student does not bid. In this case, the algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': We will work on refactoring the &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; to use partial inputs.&lt;br /&gt;
&lt;br /&gt;
=== Problem 4: Figure out why running the bidding algorithm only works on assignments with teams. What if the assignment does not have a team? Can we tweak the code to make it work in this case? ===&lt;br /&gt;
So this is an open-ended issue. Currently, the bidding algorithm only works on assignments with the team. Currently, if the assignment does not have a team then no project gets assigned to the user until a team is formed. Yes, we can tweak the code so that an individual user gets assigned a project, but it won't make much sense as this is supposed to be a group project and there will be limited topics for the same. If the algorithm will go on assigning projects to individual users also then the pool will get exhausted.&lt;br /&gt;
&lt;br /&gt;
=== Problem 5: Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive ===&lt;br /&gt;
For this issue we need to include a count which contains the count of the number of students/teams who have made their bids.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': For this we would include a count in the method &amp;lt;code&amp;gt;assign_bidding&amp;lt;/code&amp;gt; of controller &amp;lt;code&amp;gt;review_bids_controller.rb&amp;lt;/code&amp;gt;. This attribute will help us to keep track of the number of students bidding for reviews. We will increment this count whenever a team or a student bids for a particular review and decrement it if all the bids are removed by any team. This count will be stored in DB and shown to the users in the view page.&lt;br /&gt;
&lt;br /&gt;
=== Problem 6: Ability to allow the algorithm to run again after running once. ===&lt;br /&gt;
Bidding algorithm is allowed to run only once in the TOPICS webpage in the process of managing Assignments. The button &amp;lt;code&amp;gt;Run Review Algorithm&amp;lt;/code&amp;gt; is enabled only when the parameter of the assignment &amp;lt;code&amp;gt;can_choose_topic_to_review&amp;lt;/code&amp;gt; is true.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': Dependency on &amp;lt;code&amp;gt;can_choose_topic_to_review&amp;lt;/code&amp;gt; attribute will be removed for the visibility of the button &amp;lt;code&amp;gt;Run Review Algorithm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problem 7: Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers? ===&lt;br /&gt;
The methods in rebiew_bid.rb are to get bidding data, to assign review topics, assign topic to reviewer and for getting individual reviewer_ids bidding data. These all are class methods. If we convert these to the instance methods, then we will have to create an object and then call these methods. So we will have to go through the flow to check whether it fits perfectly. If we are not able to convert these to instance methods, then a better approach would be to move these functions to a helper function.&lt;br /&gt;
&lt;br /&gt;
=== Problem 8: In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 9: Test whether the topic changes color depending on the number of outstanding bids ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_topic_bg_color_review_bids&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;review_bids_helper.rb&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;review_bids_show.html.erb&amp;lt;/code&amp;gt; are responsible for the color changes based on the number of participants and bid size.&lt;br /&gt;
*''' Proposed Solution ''': A new test case will be added in &amp;lt;code&amp;gt;review_bids_helper_spec.rb&amp;lt;/code&amp;gt; for this case that test the changes in background color based on the number of participants and outstanding size.&lt;br /&gt;
&lt;br /&gt;
= Diagram =&lt;br /&gt;
'''Author's View''' : The flow for authors to email reviewers regarding the work they have been reviewed for:&lt;br /&gt;
&lt;br /&gt;
[[File:E2231-1.png|500px]] &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing =&lt;br /&gt;
; RSpec &lt;br /&gt;
The main task here of testing is to make sure no functionality is breaking because of the refractoring.&lt;br /&gt;
If we decide to move the code of review_bid.rb to a helper as discussed as a possible approach for problem 7, then we will have to add some additional test cases to make sure the functionality is still working as necessary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We will have to run the project and check for all possible functionality that might get affected because of the refactoring done.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
= Reference =&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144195</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144195"/>
		<updated>2022-04-06T03:21:55Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Problem 7: Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2231 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
= Team =&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
= Problem Statement =&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem 1: Review_bids_others_work is a DRY violation ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 2: Run_bidding algorithm should be assign_reviewers ===&lt;br /&gt;
In this issue, &amp;lt;code&amp;gt;Run_bidding_algorithm&amp;lt;/code&amp;gt; algorithm should be assigned a new name which is &amp;lt;code&amp;gt;assign_reviewers&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;Run_bidding_algorithm&amp;lt;/code&amp;gt; will be refactored to a new name which is &amp;lt;code&amp;gt;assign_reviewers&amp;lt;/code&amp;gt;. Accordingly, we will have to refractor this on the calling side too.&lt;br /&gt;
&lt;br /&gt;
=== Problem 3: Currently it doesn't work if some student does not bid. In this case, the algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': We will work on refactoring the &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; to use partial inputs.&lt;br /&gt;
&lt;br /&gt;
=== Problem 4: Figure out why running the bidding algorithm only works on assignments with teams. What if the assignment does not have a team? Can we tweak the code to make it work in this case? ===&lt;br /&gt;
So this is an open-ended issue. Currently, the bidding algorithm only works on assignments with the team. Currently, if the assignment does not have a team then no project gets assigned to the user until a team is formed. Yes, we can tweak the code so that an individual user gets assigned a project, but it won't make much sense as this is supposed to be a group project and there will be limited topics for the same. If the algorithm will go on assigning projects to individual users also then the pool will get exhausted.&lt;br /&gt;
&lt;br /&gt;
=== Problem 5: Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive ===&lt;br /&gt;
For this issue we need to include a count which contains the count of the number of students/teams who have made their bids.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': For this we would include a count in the method &amp;lt;code&amp;gt;assign_bidding&amp;lt;/code&amp;gt; of controller &amp;lt;code&amp;gt;review_bids_controller.rb&amp;lt;/code&amp;gt;. This attribute will help us to keep track of the number of students bidding for reviews. We will increment this count whenever a team or a student bids for a particular review and decrement it if all the bids are removed by any team. This count will be stored in DB and shown to the users in the view page.&lt;br /&gt;
&lt;br /&gt;
=== Problem 6: Ability to allow the algorithm to run again after running once. ===&lt;br /&gt;
Bidding algorithm is allowed to run only once in the TOPICS webpage in the process of managing Assignments. The button &amp;lt;code&amp;gt;Run Review Algorithm&amp;lt;/code&amp;gt; is enabled only when the parameter of the assignment &amp;lt;code&amp;gt;can_choose_topic_to_review&amp;lt;/code&amp;gt; is true.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': Dependency on &amp;lt;code&amp;gt;can_choose_topic_to_review&amp;lt;/code&amp;gt; attribute will be removed for the visibility of the button &amp;lt;code&amp;gt;Run Review Algorithm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problem 7: Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers? ===&lt;br /&gt;
The methods in rebiew_bid.rb are to get bidding data, to assign review topics, assign topic to reviewer and for getting individual reviewer_ids bidding data. These all are class methods. If we convert these to the instance methods, then we will have to create an object and then call these methods. So we will have to go through the flow to check whether it fits perfectly. If we are not able to convert these to instance methods, then a better approach would be to move these functions to a helper function.&lt;br /&gt;
&lt;br /&gt;
=== Problem 8: In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 9: Test whether the topic changes color depending on the number of outstanding bids ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_topic_bg_color_review_bids&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;review_bids_helper.rb&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;review_bids_show.html.erb&amp;lt;/code&amp;gt; are responsible for the color changes based on the number of participants and bid size.&lt;br /&gt;
*''' Proposed Solution ''': A new test case will be added in &amp;lt;code&amp;gt;review_bids_helper_spec.rb&amp;lt;/code&amp;gt; for this case that test the changes in background color based on the number of participants and outstanding size.&lt;br /&gt;
&lt;br /&gt;
= Diagram =&lt;br /&gt;
'''Author's View''' : The flow for authors to email reviewers regarding the work they have been reviewed for:&lt;br /&gt;
&lt;br /&gt;
[[File:E2231-1.png|500px]] &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing (need to change the content) =&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;br /&gt;
= Reference =&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144180</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144180"/>
		<updated>2022-04-06T03:00:26Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Problem 4: Figure out why running the bidding algorithm only works on assignment with teams. What if the assignment does not have a team? Can we tweak the code to make it work in this case? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2231 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
= Team =&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
= Problem Statement =&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem 1: Review_bids_others_work is a DRY violation ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 2: Run_bidding algorithm should be assign_reviewers ===&lt;br /&gt;
In this issue, &amp;lt;code&amp;gt;Run_bidding_algorithm&amp;lt;/code&amp;gt; algorithm should be assigned a new name which is &amp;lt;code&amp;gt;assign_reviewers&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;Run_bidding_algorithm&amp;lt;/code&amp;gt; will be refactored to a new name which is &amp;lt;code&amp;gt;assign_reviewers&amp;lt;/code&amp;gt;. Accordingly, we will have to refractor this on the calling side too.&lt;br /&gt;
&lt;br /&gt;
=== Problem 3: Currently it doesn't work if some student does not bid. In this case, the algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 4: Figure out why running the bidding algorithm only works on assignments with teams. What if the assignment does not have a team? Can we tweak the code to make it work in this case? ===&lt;br /&gt;
So this is an open-ended issue. Currently, the bidding algorithm only works on assignments with the team. Currently, if the assignment does not have a team then no project gets assigned to the user until a team is formed. Yes, we can tweak the code so that an individual user gets assigned a project, but it won't make much sense as this is supposed to be a group project and there will be limited topics for the same. If the algorithm will go on assigning projects to individual users also then the pool will get exhausted.&lt;br /&gt;
&lt;br /&gt;
=== Problem 5: Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 6: Ability to allow the algorithm to run again after running once. ===&lt;br /&gt;
Bidding algorithm is allowed to run only once in the TOPICS webpage in the process of managing Assignments. The button &amp;lt;code&amp;gt;Run Review Algorithm&amp;lt;/code&amp;gt; is enabled only when the parameter of the assignment &amp;lt;code&amp;gt;can_choose_topic_to_review&amp;lt;/code&amp;gt; is true.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': Dependency on &amp;lt;code&amp;gt;can_choose_topic_to_review&amp;lt;/code&amp;gt; attribute will be removed for the visibility of the button &amp;lt;code&amp;gt;Run Review Algorithm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problem 7: Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers? ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 8: In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 9: Test whether the topic changes color depending on the number of outstanding bids ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_topic_bg_color_review_bids&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;review_bids_helper.rb&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;review_bids_show.html.erb&amp;lt;/code&amp;gt; are responsible for the color changes based on the number of participants and bid size.&lt;br /&gt;
*''' Proposed Solution ''': A new test case will be added in &amp;lt;code&amp;gt;review_bids_helper_spec.rb&amp;lt;/code&amp;gt; for this case that test the changes in background color based on the number of participants and outstanding size.&lt;br /&gt;
&lt;br /&gt;
= Diagram =&lt;br /&gt;
'''Author's View''' : The flow for authors to email reviewers regarding the work they have been reviewed for:&lt;br /&gt;
&lt;br /&gt;
[[File:E2231-1.png|500px]] &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing (need to change the content) =&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;br /&gt;
= Reference =&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144173</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144173"/>
		<updated>2022-04-06T02:43:56Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Problem 2: Run_bidding algorithm should be assign_reviewers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2231 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
= Team =&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
= Problem Statement =&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem 1: Review_bids_others_work is a DRY violation ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 2: Run_bidding algorithm should be assign_reviewers ===&lt;br /&gt;
In this issue, &amp;lt;code&amp;gt;Run_bidding_algorithm&amp;lt;/code&amp;gt; algorithm should be assigned a new name which is &amp;lt;code&amp;gt;assign_reviewers&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;Run_bidding_algorithm&amp;lt;/code&amp;gt; will be refactored to a new name which is &amp;lt;code&amp;gt;assign_reviewers&amp;lt;/code&amp;gt;. Accordingly, we will have to refractor this on the calling side too.&lt;br /&gt;
&lt;br /&gt;
=== Problem 3: Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 4: Figure out why running the bidding algorithm only works on assignment with teams. What if the assignment does not have a team? Can we tweak the code to make it work in this case? ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 5: Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 6: Ability to allow the algorithm to run again after running once. ===&lt;br /&gt;
Bidding algorithm is allowed to run only once in the TOPICS webpage in the process of managing Assignments. The button &amp;lt;code&amp;gt;Run Review Algorithm&amp;lt;/code&amp;gt; is enabled only when the parameter of the assignment &amp;lt;code&amp;gt;can_choose_topic_to_review&amp;lt;/code&amp;gt; is true.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': Dependency on &amp;lt;code&amp;gt;can_choose_topic_to_review&amp;lt;/code&amp;gt; attribute will be removed for the visibility of the button &amp;lt;code&amp;gt;Run Review Algorithm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problem 7: Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers? ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 8: In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 9: Test whether the topic changes color depending on the number of outstanding bids ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_topic_bg_color_review_bids&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;review_bids_helper.rb&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;review_bids_show.html.erb&amp;lt;/code&amp;gt; are responsible for the color changes based on the number of participants and bid size.&lt;br /&gt;
*''' Proposed Solution ''': A new test case will be added in &amp;lt;code&amp;gt;review_bids_helper_spec.rb&amp;lt;/code&amp;gt; for this case that test the changes in background color based on the number of participants and outstanding size.&lt;br /&gt;
&lt;br /&gt;
= Diagram =&lt;br /&gt;
'''Author's View''' : The flow for authors to email reviewers regarding the work they have been reviewed for:&lt;br /&gt;
&lt;br /&gt;
[[File:E2231-1.png|500px]] &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing (need to change the content) =&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;br /&gt;
= Reference =&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144165</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144165"/>
		<updated>2022-04-06T02:30:45Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Problem 2: Run_bidding algorithm should be assign_reviewers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2231 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
= Team =&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
= Problem Statement =&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem 1: Review_bids_others_work is a DRY violation ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 2: Run_bidding algorithm should be assign_reviewers ===&lt;br /&gt;
In this issue, &amp;lt;code&amp;gt;Run_bidding_algorithm&amp;lt;/code&amp;gt; algorithm should be assigned a new name which is assign_reviewers. &lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;Run_bidding_algorithm&amp;lt;/code&amp;gt; will be refactored to a new name which is assign_reviewers. Accordingly, we will have to refractor this on the calling side too.&lt;br /&gt;
&lt;br /&gt;
=== Problem 3: Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 4: Figure out why running the bidding algorithm only works on assignment with teams. What if the assignment does not have a team? Can we tweak the code to make it work in this case? ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 5: Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 6: Ability to allow the algorithm to run again after running once. ===&lt;br /&gt;
Bidding algorithm is allowed to run only once in the TOPICS webpage in the process of managing Assignments. The button &amp;lt;code&amp;gt;Run Review Algorithm&amp;lt;/code&amp;gt; is enabled only when the parameter of the assignment &amp;lt;code&amp;gt;can_choose_topic_to_review&amp;lt;/code&amp;gt; is true.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': Removes the dependency on &amp;lt;code&amp;gt;can_choose_topic_to_review&amp;lt;/code&amp;gt; attribute for the visibility of the button &amp;lt;code&amp;gt;Run Review Algorithm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Problem 7: Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers? ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 8: In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 9: Test whether the topic changes color depending on the number of outstanding bids ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
= Diagram =&lt;br /&gt;
'''Author's View''' : The flow for authors to email reviewers regarding the work they have been reviewed for:&lt;br /&gt;
&lt;br /&gt;
[[File:E2231-1.png|500px]] &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing (need to change the content) =&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;br /&gt;
= Reference =&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144157</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144157"/>
		<updated>2022-04-06T01:53:46Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Problem 2: Run_bidding algorithm should be assign_reviewers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2231 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
= Team =&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
= Problem Statement =&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem 1: Review_bids_others_work is a DRY violation ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 2: Run_bidding algorithm should be assign_reviewers ===&lt;br /&gt;
In this issue, &amp;lt;code&amp;gt;Run_bidding&amp;lt;/code&amp;gt; algorithm should be assigned a new name which is assign_reviewers. &lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;Run_bidding&amp;lt;/code&amp;gt; will be refactored to a new name which is assign_reviewers. Accordingly, we will have to refractor this on the calling side too.&lt;br /&gt;
&lt;br /&gt;
=== Problem 3: Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 4: Figure out why running the bidding algorithm only works on assignment with teams. What if the assignment does not have a team? Can we tweak the code to make it work in this case? ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 5: Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 6: Ability to allow the algorithm to run again after running once. ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 7: Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers? ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 8: In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 9: Test whether the topic changes color depending on the number of outstanding bids ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
= Diagram =&lt;br /&gt;
'''Author's View''' : The flow for authors to email reviewers regarding the work they have been reviewed for:&lt;br /&gt;
&lt;br /&gt;
[[File:E2231-1.png|500px]] &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing (need to change the content) =&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;br /&gt;
= Reference =&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144152</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144152"/>
		<updated>2022-04-06T01:21:20Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2231 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
= Team =&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
= Problem Statement =&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem 1: Review_bids_others_work is a DRY violation ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 2: Run_bidding algorithm should be assign_reviewers ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 3: Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 4: Figure out why running the bidding algorithm only works on assignment with teams. What if the assignment does not have a team? Can we tweak the code to make it work in this case? ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 5: Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 6: Ability to allow the algorithm to run again after running once. ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 7: Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers? ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 8: In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 9: Test whether the topic changes color depending on the number of outstanding bids ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
= Diagram =&lt;br /&gt;
'''Author's View''' : The flow for authors to email reviewers regarding the work they have been reviewed for:&lt;br /&gt;
&lt;br /&gt;
[[File:E2231-1.png|500px]] &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing (need to change the content) =&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;br /&gt;
= Reference =&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:E2231-1.png&amp;diff=144151</id>
		<title>File:E2231-1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:E2231-1.png&amp;diff=144151"/>
		<updated>2022-04-06T01:21:05Z</updated>

		<summary type="html">&lt;p&gt;Jkini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144150</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144150"/>
		<updated>2022-04-06T01:17:56Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2231 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
= Team =&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
= Problem Statement =&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem 1: Review_bids_others_work is a DRY violation ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 2: Run_bidding algorithm should be assign_reviewers ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 3: Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 4: Figure out why running the bidding algorithm only works on assignment with teams. What if the assignment does not have a team? Can we tweak the code to make it work in this case? ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 5: Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 6: Ability to allow the algorithm to run again after running once. ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 7: Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers? ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 8: In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 9: Test whether the topic changes color depending on the number of outstanding bids ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
= Diagram =&lt;br /&gt;
'''Author's View''' : The flow for authors to email reviewers regarding the work they have been reviewed for:&lt;br /&gt;
&lt;br /&gt;
[[File:E2231.jpg|500px]] &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing (need to change the content) =&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;br /&gt;
= Reference =&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144149</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144149"/>
		<updated>2022-04-06T01:17:44Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2231 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
= Team =&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
= Problem Statement =&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem 1: Review_bids_others_work is a DRY violation ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 2: Run_bidding algorithm should be assign_reviewers ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 3: Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 4: Figure out why running the bidding algorithm only works on assignment with teams. What if the assignment does not have a team? Can we tweak the code to make it work in this case? ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 5: Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 6: Ability to allow the algorithm to run again after running once. ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 7: Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers? ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 8: In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 9: Test whether the topic changes color depending on the number of outstanding bids ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
= Diagram =&lt;br /&gt;
'''Author's View''' : The flow for authors to email reviewers regarding the work they have been reviewed for:&lt;br /&gt;
&lt;br /&gt;
[[File:E2231.jpg|800px]] &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing (need to change the content) =&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;br /&gt;
= Reference =&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144148</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144148"/>
		<updated>2022-04-06T01:17:31Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2231 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
= Team =&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
= Problem Statement =&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem 1: Review_bids_others_work is a DRY violation ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 2: Run_bidding algorithm should be assign_reviewers ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 3: Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 4: Figure out why running the bidding algorithm only works on assignment with teams. What if the assignment does not have a team? Can we tweak the code to make it work in this case? ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 5: Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 6: Ability to allow the algorithm to run again after running once. ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 7: Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers? ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 8: In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 9: Test whether the topic changes color depending on the number of outstanding bids ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
= Diagram =&lt;br /&gt;
'''Author's View''' : The flow for authors to email reviewers regarding the work they have been reviewed for:&lt;br /&gt;
&lt;br /&gt;
[[File:E2231.jpg|800px] &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing (need to change the content) =&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;br /&gt;
= Reference =&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144147</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144147"/>
		<updated>2022-04-06T01:16:32Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2231 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
= Team =&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
= Problem Statement =&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem 1: Review_bids_others_work is a DRY violation ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 2: Run_bidding algorithm should be assign_reviewers ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 3: Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 4: Figure out why running the bidding algorithm only works on assignment with teams. What if the assignment does not have a team? Can we tweak the code to make it work in this case? ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 5: Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 6: Ability to allow the algorithm to run again after running once. ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 7: Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers? ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 8: In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 9: Test whether the topic changes color depending on the number of outstanding bids ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
= Diagram =&lt;br /&gt;
'''Author's View''' : The flow for authors to email reviewers regarding the work they have been reviewed for:&lt;br /&gt;
&lt;br /&gt;
[[File:E2231.jpg] &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing (need to change the content) =&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;br /&gt;
= Reference =&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144146</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144146"/>
		<updated>2022-04-06T01:16:17Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2231 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
= Team =&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
= Problem Statement =&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem 1: Review_bids_others_work is a DRY violation ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 2: Run_bidding algorithm should be assign_reviewers ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 3: Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 4: Figure out why running the bidding algorithm only works on assignment with teams. What if the assignment does not have a team? Can we tweak the code to make it work in this case? ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 5: Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 6: Ability to allow the algorithm to run again after running once. ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 7: Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers? ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 8: In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
=== Problem 9: Test whether the topic changes color depending on the number of outstanding bids ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
= Diagram =&lt;br /&gt;
'''Author's View''' : The flow for authors to email reviewers regarding the work they have been reviewed for:&lt;br /&gt;
&lt;br /&gt;
[[File:E2231.jpg|1000px]] &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing (need to change the content) =&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;br /&gt;
= Reference =&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:E2231.jpg&amp;diff=144145</id>
		<title>File:E2231.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:E2231.jpg&amp;diff=144145"/>
		<updated>2022-04-06T01:15:13Z</updated>

		<summary type="html">&lt;p&gt;Jkini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144113</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144113"/>
		<updated>2022-04-05T23:53:35Z</updated>

		<summary type="html">&lt;p&gt;Jkini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2231 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
= Team =&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
= Problem Statement =&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem: The method get_data_for_review_report violates the Expert pattern ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Diagram =&lt;br /&gt;
&lt;br /&gt;
= Testing (need to change the content) =&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;br /&gt;
= Reference =&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144112</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144112"/>
		<updated>2022-04-05T23:40:36Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* What needs to be done(need to rephrase these points) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2231 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
= Team =&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
= Problem Statement =&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem: The method get_data_for_review_report violates the Expert pattern ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Diagram =&lt;br /&gt;
&lt;br /&gt;
= Testing (need to change the content) =&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144111</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144111"/>
		<updated>2022-04-05T23:39:50Z</updated>

		<summary type="html">&lt;p&gt;Jkini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2231 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
= Team =&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
= Problem Statement =&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done(need to rephrase these points) ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem: The method get_data_for_review_report violates the Expert pattern ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Diagram =&lt;br /&gt;
&lt;br /&gt;
= Testing (need to change the content) =&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144110</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144110"/>
		<updated>2022-04-05T23:37:41Z</updated>

		<summary type="html">&lt;p&gt;Jkini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2231 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done(need to rephrase these points) ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem: The method get_data_for_review_report violates the Expert pattern ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Diagram ==&lt;br /&gt;
&lt;br /&gt;
== Testing (need to change the content) ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144109</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144109"/>
		<updated>2022-04-05T23:36:25Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* What needs to be done(need to rephrae these points) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2231 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done(need to rephrase these points) ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem: The method get_data_for_review_report violates the Expert pattern ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Diagram ==&lt;br /&gt;
&lt;br /&gt;
== Testing (need to change the content) ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144108</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144108"/>
		<updated>2022-04-05T23:36:09Z</updated>

		<summary type="html">&lt;p&gt;Jkini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2231 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done(need to rephrae these points) ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem: The method get_data_for_review_report violates the Expert pattern ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Diagram ==&lt;br /&gt;
&lt;br /&gt;
== Testing (need to change the content) ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144107</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144107"/>
		<updated>2022-04-05T23:35:20Z</updated>

		<summary type="html">&lt;p&gt;Jkini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done(need to rephrae these points) ===&lt;br /&gt;
* Review_bids_others_work is a DRY  violation&lt;br /&gt;
* Run_bidding algorithm should be assign_reviewers&lt;br /&gt;
* Currently it doesn't work if some student does not bid. In this case, algorithm needs to be fixed in order to assign arbitrary reviews to anyone who didn’t bid&lt;br /&gt;
* Figure out why running the bidding algorithm only works on assignment with teams. What  if the assignment does not have a team? Can we tweak the code to make it work in this case?&lt;br /&gt;
* Include a flag to say how many students have submitted their bids, when the students should submit the bid by to make the functionality more intuitive&lt;br /&gt;
* Ability to allow the algorithm to run again after running once.&lt;br /&gt;
* Why are the methods in review_bid.rb class methods? Can we change them to instance methods or move it to helpers?&lt;br /&gt;
* In the previous implementation wiki, there are edge cases which are not exhaustively tested. Should test those edge cases thoroughly and add more edge case testing&lt;br /&gt;
* Test whether the topic changes color depending on the number of outstanding bids&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem: The method get_data_for_review_report violates the Expert pattern ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Diagram ==&lt;br /&gt;
&lt;br /&gt;
== Testing (need to change the content) ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144106</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144106"/>
		<updated>2022-04-05T23:33:39Z</updated>

		<summary type="html">&lt;p&gt;Jkini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== '''What needs to be done''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem: The method get_data_for_review_report violates the Expert pattern ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Diagram ==&lt;br /&gt;
&lt;br /&gt;
== Testing (need to change the content) ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144105</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144105"/>
		<updated>2022-04-05T23:33:23Z</updated>

		<summary type="html">&lt;p&gt;Jkini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
Assigning reviews to users is a complicated process. Currently, as per previous year’s implementation on Expertiza’s beta branch, reviews are assigned using the bidding algorithm. Although, the functionality works, but has some bugs which needs to be fixed before we can take it to production. &lt;br /&gt;
&lt;br /&gt;
=== What needs to be done ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem: The method get_data_for_review_report violates the Expert pattern ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Diagram ==&lt;br /&gt;
&lt;br /&gt;
== Testing (need to change the content) ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144103</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144103"/>
		<updated>2022-04-05T23:32:21Z</updated>

		<summary type="html">&lt;p&gt;Jkini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem: The method get_data_for_review_report violates the Expert pattern ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Diagram ==&lt;br /&gt;
&lt;br /&gt;
== Testing (need to change the content) ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144102</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144102"/>
		<updated>2022-04-05T23:32:03Z</updated>

		<summary type="html">&lt;p&gt;Jkini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem: The method get_data_for_review_report violates the Expert pattern ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Diagram ==&lt;br /&gt;
&lt;br /&gt;
== Testing (need to change the content) ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144101</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144101"/>
		<updated>2022-04-05T23:31:22Z</updated>

		<summary type="html">&lt;p&gt;Jkini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem: The method get_data_for_review_report violates the Expert pattern ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Diagram ==&lt;br /&gt;
&lt;br /&gt;
== Testing (need to change the content) ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144099</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144099"/>
		<updated>2022-04-05T23:23:46Z</updated>

		<summary type="html">&lt;p&gt;Jkini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes (need to change the content) ==&lt;br /&gt;
&lt;br /&gt;
=== Problem: The method get_data_for_review_report violates the Expert pattern ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Diagram ==&lt;br /&gt;
&lt;br /&gt;
== Testing (need to change the content) ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144098</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144098"/>
		<updated>2022-04-05T23:21:26Z</updated>

		<summary type="html">&lt;p&gt;Jkini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes ==&lt;br /&gt;
&lt;br /&gt;
=== Problem: The method get_data_for_review_report violates the Expert pattern ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Diagram ==&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
=== Login as instructor ===&lt;br /&gt;
# Hover on Manage Tab&lt;br /&gt;
# Click on Assignments Tab&lt;br /&gt;
# Click on Edit Button for &amp;quot;OSS project &amp;amp; documentation&amp;quot; assignment&lt;br /&gt;
# Select the Topic Tab&lt;br /&gt;
# Click the Green Check for any topic&lt;br /&gt;
# Enter a student UnityID and click submit&lt;br /&gt;
&lt;br /&gt;
=== Login as student ===&lt;br /&gt;
# Click on OSS project/Writing assignment 2&lt;br /&gt;
# Click on Signup sheet&lt;br /&gt;
# The list must be visible, which indicates functionality is as before after refactoring list function.&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144097</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144097"/>
		<updated>2022-04-05T23:19:39Z</updated>

		<summary type="html">&lt;p&gt;Jkini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
== Problems and planned changes ==&lt;br /&gt;
&lt;br /&gt;
=== Problem: The method get_data_for_review_report violates the Expert pattern ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solutions ==&lt;br /&gt;
1. Changed the name of the controller from sign_up_sheet_controller.rb --&amp;gt; signup_sheet_controller.rb. Also changed several method names that had 'sign_up' being used as an adjective or a noun to 'signup'.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/9e99f56c9f8051fa5ee6b6a4bdf3659ec50852dc&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/66fc8bc5fc3850639306ad2be79afaa3de1fad70&lt;br /&gt;
&lt;br /&gt;
2. The requirement that deadlines be submitted is no longer implemented and therefore a separate function for &amp;quot;staggered&amp;quot; is no longer needed.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/db12bf9c05831576183363b6bfe68bbad64e9c5a&lt;br /&gt;
&lt;br /&gt;
3. Renaming function ad_info&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/6507f15f6d23f44900465536a91cc6c80f90ad75&lt;br /&gt;
&lt;br /&gt;
4. Remove signup_as_instructor, since its not being used anywhere as such.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/e92e704f5cb6c549d440784339bcce6eba408a6b&lt;br /&gt;
&lt;br /&gt;
5. The list method is broken into 2 functions. The small part of computing signup topics is created. Also comments has been added to understand the function better.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/4b7bb6113dfb8984d7aa4dca467b55f67de3c93a&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/bd86f5a4ec8aa02c27a0cd34c85bd21776feca2c&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/56be9eed8ac89632041608947108f87dfbcb28ab&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action's if-else ladder has been made more elegant. &lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/50aae43edb7fcec3804deb93df28471db1b31c15&lt;br /&gt;
&lt;br /&gt;
7. delete_signup and delete_signup_as_instructor violated the DRY principle due to both functions using identical if/else statements.  To solve this issue, flash_delete_signup_message function was created.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/ddf35e88a2486d5ca748d3d93b15d9f6f4984af9&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/df1342b5239bb4e49214149b877a5ccf9c6117ae&lt;br /&gt;
&lt;br /&gt;
8. Flash messages names have been changed and given for meaningful names.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/47b4b11e4b4b2e6793dbd54259ae36749ed113a7&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
=== Login as instructor ===&lt;br /&gt;
# Hover on Manage Tab&lt;br /&gt;
# Click on Assignments Tab&lt;br /&gt;
# Click on Edit Button for &amp;quot;OSS project &amp;amp; documentation&amp;quot; assignment&lt;br /&gt;
# Select the Topic Tab&lt;br /&gt;
# Click the Green Check for any topic&lt;br /&gt;
# Enter a student UnityID and click submit&lt;br /&gt;
&lt;br /&gt;
=== Login as student ===&lt;br /&gt;
# Click on OSS project/Writing assignment 2&lt;br /&gt;
# Click on Signup sheet&lt;br /&gt;
# The list must be visible, which indicates functionality is as before after refactoring list function.&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144096</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144096"/>
		<updated>2022-04-05T23:18:06Z</updated>

		<summary type="html">&lt;p&gt;Jkini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
=== '''Design''' ===&lt;br /&gt;
== Problems and planned changes ==&lt;br /&gt;
&lt;br /&gt;
=== Problem: The method get_data_for_review_report violates the Expert pattern ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solutions ==&lt;br /&gt;
1. Changed the name of the controller from sign_up_sheet_controller.rb --&amp;gt; signup_sheet_controller.rb. Also changed several method names that had 'sign_up' being used as an adjective or a noun to 'signup'.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/9e99f56c9f8051fa5ee6b6a4bdf3659ec50852dc&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/66fc8bc5fc3850639306ad2be79afaa3de1fad70&lt;br /&gt;
&lt;br /&gt;
2. The requirement that deadlines be submitted is no longer implemented and therefore a separate function for &amp;quot;staggered&amp;quot; is no longer needed.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/db12bf9c05831576183363b6bfe68bbad64e9c5a&lt;br /&gt;
&lt;br /&gt;
3. Renaming function ad_info&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/6507f15f6d23f44900465536a91cc6c80f90ad75&lt;br /&gt;
&lt;br /&gt;
4. Remove signup_as_instructor, since its not being used anywhere as such.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/e92e704f5cb6c549d440784339bcce6eba408a6b&lt;br /&gt;
&lt;br /&gt;
5. The list method is broken into 2 functions. The small part of computing signup topics is created. Also comments has been added to understand the function better.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/4b7bb6113dfb8984d7aa4dca467b55f67de3c93a&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/bd86f5a4ec8aa02c27a0cd34c85bd21776feca2c&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/56be9eed8ac89632041608947108f87dfbcb28ab&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action's if-else ladder has been made more elegant. &lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/50aae43edb7fcec3804deb93df28471db1b31c15&lt;br /&gt;
&lt;br /&gt;
7. delete_signup and delete_signup_as_instructor violated the DRY principle due to both functions using identical if/else statements.  To solve this issue, flash_delete_signup_message function was created.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/ddf35e88a2486d5ca748d3d93b15d9f6f4984af9&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/df1342b5239bb4e49214149b877a5ccf9c6117ae&lt;br /&gt;
&lt;br /&gt;
8. Flash messages names have been changed and given for meaningful names.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/47b4b11e4b4b2e6793dbd54259ae36749ed113a7&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
=== Login as instructor ===&lt;br /&gt;
# Hover on Manage Tab&lt;br /&gt;
# Click on Assignments Tab&lt;br /&gt;
# Click on Edit Button for &amp;quot;OSS project &amp;amp; documentation&amp;quot; assignment&lt;br /&gt;
# Select the Topic Tab&lt;br /&gt;
# Click the Green Check for any topic&lt;br /&gt;
# Enter a student UnityID and click submit&lt;br /&gt;
&lt;br /&gt;
=== Login as student ===&lt;br /&gt;
# Click on OSS project/Writing assignment 2&lt;br /&gt;
# Click on Signup sheet&lt;br /&gt;
# The list must be visible, which indicates functionality is as before after refactoring list function.&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144095</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144095"/>
		<updated>2022-04-05T23:17:29Z</updated>

		<summary type="html">&lt;p&gt;Jkini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
== Problems and planned changes ==&lt;br /&gt;
&lt;br /&gt;
=== Problem: The method get_data_for_review_report violates the Expert pattern ===&lt;br /&gt;
&amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; passes back a data structure with multiple &amp;lt;code&amp;gt;response&amp;lt;/code&amp;gt; objects to the &amp;lt;code&amp;gt;_review_report.html.erb&amp;lt;/code&amp;gt; view. This violates the Expert pattern, because the given view does not know how to break apart the structure passed to it.&lt;br /&gt;
&lt;br /&gt;
*''' Proposed Solution ''': &amp;lt;code&amp;gt;get_data_for_review_report&amp;lt;/code&amp;gt; will be refactored to use partials&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solutions ==&lt;br /&gt;
1. Changed the name of the controller from sign_up_sheet_controller.rb --&amp;gt; signup_sheet_controller.rb. Also changed several method names that had 'sign_up' being used as an adjective or a noun to 'signup'.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/9e99f56c9f8051fa5ee6b6a4bdf3659ec50852dc&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/66fc8bc5fc3850639306ad2be79afaa3de1fad70&lt;br /&gt;
&lt;br /&gt;
2. The requirement that deadlines be submitted is no longer implemented and therefore a separate function for &amp;quot;staggered&amp;quot; is no longer needed.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/db12bf9c05831576183363b6bfe68bbad64e9c5a&lt;br /&gt;
&lt;br /&gt;
3. Renaming function ad_info&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/6507f15f6d23f44900465536a91cc6c80f90ad75&lt;br /&gt;
&lt;br /&gt;
4. Remove signup_as_instructor, since its not being used anywhere as such.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/e92e704f5cb6c549d440784339bcce6eba408a6b&lt;br /&gt;
&lt;br /&gt;
5. The list method is broken into 2 functions. The small part of computing signup topics is created. Also comments has been added to understand the function better.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/4b7bb6113dfb8984d7aa4dca467b55f67de3c93a&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/bd86f5a4ec8aa02c27a0cd34c85bd21776feca2c&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/56be9eed8ac89632041608947108f87dfbcb28ab&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action's if-else ladder has been made more elegant. &lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/50aae43edb7fcec3804deb93df28471db1b31c15&lt;br /&gt;
&lt;br /&gt;
7. delete_signup and delete_signup_as_instructor violated the DRY principle due to both functions using identical if/else statements.  To solve this issue, flash_delete_signup_message function was created.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/ddf35e88a2486d5ca748d3d93b15d9f6f4984af9&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/df1342b5239bb4e49214149b877a5ccf9c6117ae&lt;br /&gt;
&lt;br /&gt;
8. Flash messages names have been changed and given for meaningful names.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/47b4b11e4b4b2e6793dbd54259ae36749ed113a7&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
=== Login as instructor ===&lt;br /&gt;
# Hover on Manage Tab&lt;br /&gt;
# Click on Assignments Tab&lt;br /&gt;
# Click on Edit Button for &amp;quot;OSS project &amp;amp; documentation&amp;quot; assignment&lt;br /&gt;
# Select the Topic Tab&lt;br /&gt;
# Click the Green Check for any topic&lt;br /&gt;
# Enter a student UnityID and click submit&lt;br /&gt;
&lt;br /&gt;
=== Login as student ===&lt;br /&gt;
# Click on OSS project/Writing assignment 2&lt;br /&gt;
# Click on Signup sheet&lt;br /&gt;
# The list must be visible, which indicates functionality is as before after refactoring list function.&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144094</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144094"/>
		<updated>2022-04-05T23:10:11Z</updated>

		<summary type="html">&lt;p&gt;Jkini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Divyang Doshi (ddoshi2)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Vijaya Durga Kona (vkona)&lt;br /&gt;
* Anand Morlaw (asmorlaw)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Peer Review Information ==&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the details are below:&lt;br /&gt;
* We have deployed the project http://152.7.98.81:8080/&lt;br /&gt;
* Instructor login: username -&amp;gt; instructor6,  password -&amp;gt; password&lt;br /&gt;
* Student login: username -&amp;gt; student5899,  password -&amp;gt; password&lt;br /&gt;
&lt;br /&gt;
== About Controller == &lt;br /&gt;
The sign up sheet controller &lt;br /&gt;
* Allows an instructor to add/remove topics&lt;br /&gt;
* Allows an instructor to assign/remove students to topics&lt;br /&gt;
* Allows an student to see the list of available topics which can be bid on for given OSS assignment.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
1. Naming is inconsistent.  When used as a verb, “sign up” is two words.  When an adjective or a noun, it should be one word, e.g., “signup_sheet_controller.”  Cf. “sign_up_as_instructor”.  Please make the naming consistent.  Of course, this will result in changes in calling methods as well.&lt;br /&gt;
&lt;br /&gt;
2. Add_signup_topics_staggered does not do anything different from add_signup_topics. Separate functions are needed, because add_signup_topics_staggered needs to make sure that the deadlines are set. [Assignment 1042 has staggered deadlines]&lt;br /&gt;
&lt;br /&gt;
3. Several method names can be improved.&lt;br /&gt;
&lt;br /&gt;
4. What are differences between signup_as_instructor and signup_as_instructor_action methods? Investigate if they are needed and improve the method names if both are needed. Provide comments as to what each method does.&lt;br /&gt;
&lt;br /&gt;
5. The list method is too long and is sparsely commented. Provide comments and identify if the method can be split or made cleaner by moving code to models or helper methods.&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action has if-else ladder. It can be made more elegant.&lt;br /&gt;
&lt;br /&gt;
7.Delete_signup and delete_signup_as_instructor have much in common and violate the DRY principle. Refactor.&lt;br /&gt;
&lt;br /&gt;
8.Giving elegant and more understandable names to flash in flash_delete_signup_message function&lt;br /&gt;
&lt;br /&gt;
== Solutions ==&lt;br /&gt;
1. Changed the name of the controller from sign_up_sheet_controller.rb --&amp;gt; signup_sheet_controller.rb. Also changed several method names that had 'sign_up' being used as an adjective or a noun to 'signup'.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/9e99f56c9f8051fa5ee6b6a4bdf3659ec50852dc&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/66fc8bc5fc3850639306ad2be79afaa3de1fad70&lt;br /&gt;
&lt;br /&gt;
2. The requirement that deadlines be submitted is no longer implemented and therefore a separate function for &amp;quot;staggered&amp;quot; is no longer needed.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/db12bf9c05831576183363b6bfe68bbad64e9c5a&lt;br /&gt;
&lt;br /&gt;
3. Renaming function ad_info&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/6507f15f6d23f44900465536a91cc6c80f90ad75&lt;br /&gt;
&lt;br /&gt;
4. Remove signup_as_instructor, since its not being used anywhere as such.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/e92e704f5cb6c549d440784339bcce6eba408a6b&lt;br /&gt;
&lt;br /&gt;
5. The list method is broken into 2 functions. The small part of computing signup topics is created. Also comments has been added to understand the function better.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/4b7bb6113dfb8984d7aa4dca467b55f67de3c93a&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/bd86f5a4ec8aa02c27a0cd34c85bd21776feca2c&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/56be9eed8ac89632041608947108f87dfbcb28ab&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action's if-else ladder has been made more elegant. &lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/50aae43edb7fcec3804deb93df28471db1b31c15&lt;br /&gt;
&lt;br /&gt;
7. delete_signup and delete_signup_as_instructor violated the DRY principle due to both functions using identical if/else statements.  To solve this issue, flash_delete_signup_message function was created.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/ddf35e88a2486d5ca748d3d93b15d9f6f4984af9&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/df1342b5239bb4e49214149b877a5ccf9c6117ae&lt;br /&gt;
&lt;br /&gt;
8. Flash messages names have been changed and given for meaningful names.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/47b4b11e4b4b2e6793dbd54259ae36749ed113a7&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
=== Login as instructor ===&lt;br /&gt;
# Hover on Manage Tab&lt;br /&gt;
# Click on Assignments Tab&lt;br /&gt;
# Click on Edit Button for &amp;quot;OSS project &amp;amp; documentation&amp;quot; assignment&lt;br /&gt;
# Select the Topic Tab&lt;br /&gt;
# Click the Green Check for any topic&lt;br /&gt;
# Enter a student UnityID and click submit&lt;br /&gt;
&lt;br /&gt;
=== Login as student ===&lt;br /&gt;
# Click on OSS project/Writing assignment 2&lt;br /&gt;
# Click on Signup sheet&lt;br /&gt;
# The list must be visible, which indicates functionality is as before after refactoring list function.&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144093</id>
		<title>CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2231:_Allow_reviewers_to_bid_on_what_to_review&amp;diff=144093"/>
		<updated>2022-04-05T23:05:36Z</updated>

		<summary type="html">&lt;p&gt;Jkini: Created page with &amp;quot;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517. == Team == === Mentor === * Ed Gehringer (efg)  ===...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Ed Gehringer (efg)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Palvit Garg (pgarg5)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Peer Review Information ==&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the details are below:&lt;br /&gt;
* We have deployed the project http://152.7.98.81:8080/&lt;br /&gt;
* Instructor login: username -&amp;gt; instructor6,  password -&amp;gt; password&lt;br /&gt;
* Student login: username -&amp;gt; student5899,  password -&amp;gt; password&lt;br /&gt;
&lt;br /&gt;
== About Controller == &lt;br /&gt;
The sign up sheet controller &lt;br /&gt;
* Allows an instructor to add/remove topics&lt;br /&gt;
* Allows an instructor to assign/remove students to topics&lt;br /&gt;
* Allows an student to see the list of available topics which can be bid on for given OSS assignment.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
1. Naming is inconsistent.  When used as a verb, “sign up” is two words.  When an adjective or a noun, it should be one word, e.g., “signup_sheet_controller.”  Cf. “sign_up_as_instructor”.  Please make the naming consistent.  Of course, this will result in changes in calling methods as well.&lt;br /&gt;
&lt;br /&gt;
2. Add_signup_topics_staggered does not do anything different from add_signup_topics. Separate functions are needed, because add_signup_topics_staggered needs to make sure that the deadlines are set. [Assignment 1042 has staggered deadlines]&lt;br /&gt;
&lt;br /&gt;
3. Several method names can be improved.&lt;br /&gt;
&lt;br /&gt;
4. What are differences between signup_as_instructor and signup_as_instructor_action methods? Investigate if they are needed and improve the method names if both are needed. Provide comments as to what each method does.&lt;br /&gt;
&lt;br /&gt;
5. The list method is too long and is sparsely commented. Provide comments and identify if the method can be split or made cleaner by moving code to models or helper methods.&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action has if-else ladder. It can be made more elegant.&lt;br /&gt;
&lt;br /&gt;
7.Delete_signup and delete_signup_as_instructor have much in common and violate the DRY principle. Refactor.&lt;br /&gt;
&lt;br /&gt;
8.Giving elegant and more understandable names to flash in flash_delete_signup_message function&lt;br /&gt;
&lt;br /&gt;
== Solutions ==&lt;br /&gt;
1. Changed the name of the controller from sign_up_sheet_controller.rb --&amp;gt; signup_sheet_controller.rb. Also changed several method names that had 'sign_up' being used as an adjective or a noun to 'signup'.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/9e99f56c9f8051fa5ee6b6a4bdf3659ec50852dc&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/66fc8bc5fc3850639306ad2be79afaa3de1fad70&lt;br /&gt;
&lt;br /&gt;
2. The requirement that deadlines be submitted is no longer implemented and therefore a separate function for &amp;quot;staggered&amp;quot; is no longer needed.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/db12bf9c05831576183363b6bfe68bbad64e9c5a&lt;br /&gt;
&lt;br /&gt;
3. Renaming function ad_info&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/6507f15f6d23f44900465536a91cc6c80f90ad75&lt;br /&gt;
&lt;br /&gt;
4. Remove signup_as_instructor, since its not being used anywhere as such.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/e92e704f5cb6c549d440784339bcce6eba408a6b&lt;br /&gt;
&lt;br /&gt;
5. The list method is broken into 2 functions. The small part of computing signup topics is created. Also comments has been added to understand the function better.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/4b7bb6113dfb8984d7aa4dca467b55f67de3c93a&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/bd86f5a4ec8aa02c27a0cd34c85bd21776feca2c&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/56be9eed8ac89632041608947108f87dfbcb28ab&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action's if-else ladder has been made more elegant. &lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/50aae43edb7fcec3804deb93df28471db1b31c15&lt;br /&gt;
&lt;br /&gt;
7. delete_signup and delete_signup_as_instructor violated the DRY principle due to both functions using identical if/else statements.  To solve this issue, flash_delete_signup_message function was created.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/ddf35e88a2486d5ca748d3d93b15d9f6f4984af9&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/df1342b5239bb4e49214149b877a5ccf9c6117ae&lt;br /&gt;
&lt;br /&gt;
8. Flash messages names have been changed and given for meaningful names.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/47b4b11e4b4b2e6793dbd54259ae36749ed113a7&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Edge Cases and Pre-Conditions ===&lt;br /&gt;
# When dropping topic if submission already done.&lt;br /&gt;
# When deadline from dropping topic has passed.&lt;br /&gt;
# Deleting topic when topic cannot be found.&lt;br /&gt;
# Signup in case when user cannot be found.&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
=== Login as instructor ===&lt;br /&gt;
# Hover on Manage Tab&lt;br /&gt;
# Click on Assignments Tab&lt;br /&gt;
# Click on Edit Button for &amp;quot;OSS project &amp;amp; documentation&amp;quot; assignment&lt;br /&gt;
# Select the Topic Tab&lt;br /&gt;
# Click the Green Check for any topic&lt;br /&gt;
# Enter a student UnityID and click submit&lt;br /&gt;
&lt;br /&gt;
=== Login as student ===&lt;br /&gt;
# Click on OSS project/Writing assignment 2&lt;br /&gt;
# Click on Signup sheet&lt;br /&gt;
# The list must be visible, which indicates functionality is as before after refactoring list function.&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022&amp;diff=144092</id>
		<title>CSC/ECE 517 Spring 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022&amp;diff=144092"/>
		<updated>2022-04-05T23:04:08Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Final Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OSS Projects ==&lt;br /&gt;
&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2200: Testing advice_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2203: Adding tests for courses_controller, eula_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2204: Adding tests for markup_styles_controller, lock_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2208: Testing for submission_records_controller, profile_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2218: Refactor response_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2217: Refactor questionnaires_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2216: Refactor late_policies_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2215: Refactor student_quizzes_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2214: Refactor teams_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2219: Improve assessment360_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2211: Testing for summary_helper]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2225: Refactor review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2221: Refactor submitted content controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2206: Testing for users_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2207: Testing for submitted_content_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2205: Testing for participants_controller, versions_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2212: Testing for hamer.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - S2200: Refactoring evaluation of SQL queries (Java/JUnit)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - S2222: Refactor impersonate_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2202- Testing for badges_controller, publishing_controller]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2022 - E2220: Refactor reputation_web_service_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2224: Refactor review_mapping_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2209: Testing for analytic helper.rb, join team requests helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2227: SQL Injection Fix]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2223. Refactor sign up sheet controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2201: Testing for assignment_questionnaire_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2243. Refactor student_teams functionality]]&lt;br /&gt;
&lt;br /&gt;
== Final Projects ==&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2245: View for results of bidding]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2241: Heatgrid fixes and improvements]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2237: Grading audit trail]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2236: Fix issues related to deadlines and late policies]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2233. Improving search facility in Expertiza]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2234. Calibration submissions should be copied along with calibration assignments]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2244. Support for saying your team pair-programmed]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2246: Email your authors/reviewers, with complete tests]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2228: Refactor JavaScript]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2239: Further refactoring and improvement of review mapping helper.rb ]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2242. Fix teammate-review view ]]&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022&amp;diff=144091</id>
		<title>CSC/ECE 517 Spring 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022&amp;diff=144091"/>
		<updated>2022-04-05T23:03:42Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Final Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OSS Projects ==&lt;br /&gt;
&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2200: Testing advice_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2203: Adding tests for courses_controller, eula_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2204: Adding tests for markup_styles_controller, lock_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2208: Testing for submission_records_controller, profile_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2218: Refactor response_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2217: Refactor questionnaires_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2216: Refactor late_policies_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2215: Refactor student_quizzes_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2214: Refactor teams_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2219: Improve assessment360_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2211: Testing for summary_helper]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2225: Refactor review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2221: Refactor submitted content controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2206: Testing for users_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2207: Testing for submitted_content_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2205: Testing for participants_controller, versions_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2212: Testing for hamer.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - S2200: Refactoring evaluation of SQL queries (Java/JUnit)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - S2222: Refactor impersonate_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2202- Testing for badges_controller, publishing_controller]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2022 - E2220: Refactor reputation_web_service_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2224: Refactor review_mapping_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2209: Testing for analytic helper.rb, join team requests helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2227: SQL Injection Fix]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2223. Refactor sign up sheet controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2201: Testing for assignment_questionnaire_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2243. Refactor student_teams functionality]]&lt;br /&gt;
&lt;br /&gt;
== Final Projects ==&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2245: View for results of bidding]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2241: Heatgrid fixes and improvements]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2237: Grading audit trail]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2236: Fix issues related to deadlines and late policies]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2233. Improving search facility in Expertiza]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2234. Calibration submissions should be copied along with calibration assignments]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2244. Support for saying your team pair-programmed]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2246: Email your authors/reviewers, with complete tests]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2228: Refactor JavaScript]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2239: Further refactoring and improvement of review mapping helper.rb ]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2242. Fix teammate-review view ]]&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022&amp;diff=144090</id>
		<title>CSC/ECE 517 Spring 2022</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022&amp;diff=144090"/>
		<updated>2022-04-05T23:03:24Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Final Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OSS Projects ==&lt;br /&gt;
&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2200: Testing advice_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2203: Adding tests for courses_controller, eula_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2204: Adding tests for markup_styles_controller, lock_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2208: Testing for submission_records_controller, profile_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2218: Refactor response_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2217: Refactor questionnaires_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2216: Refactor late_policies_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2215: Refactor student_quizzes_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2214: Refactor teams_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2219: Improve assessment360_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2211: Testing for summary_helper]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2225: Refactor review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2221: Refactor submitted content controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2206: Testing for users_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2207: Testing for submitted_content_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2205: Testing for participants_controller, versions_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2212: Testing for hamer.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - S2200: Refactoring evaluation of SQL queries (Java/JUnit)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - S2222: Refactor impersonate_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2202- Testing for badges_controller, publishing_controller]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2022 - E2220: Refactor reputation_web_service_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2224: Refactor review_mapping_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2209: Testing for analytic helper.rb, join team requests helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2227: SQL Injection Fix]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2223. Refactor sign up sheet controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2201: Testing for assignment_questionnaire_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2243. Refactor student_teams functionality]]&lt;br /&gt;
&lt;br /&gt;
== Final Projects ==&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2245: View for results of bidding]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2241: Heatgrid fixes and improvements]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2237: Grading audit trail]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2236: Fix issues related to deadlines and late policies]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2231: Allow reviewers to bid on what to review&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2233. Improving search facility in Expertiza]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2234. Calibration submissions should be copied along with calibration assignments]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2244. Support for saying your team pair-programmed]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2246: Email your authors/reviewers, with complete tests]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2228: Refactor JavaScript]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2239: Further refactoring and improvement of review mapping helper.rb ]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2022 - E2242. Fix teammate-review view ]]&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143421</id>
		<title>CSC/ECE 517 Spring 2022 - E2223. Refactor sign up sheet controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143421"/>
		<updated>2022-03-22T00:26:05Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Peer Review Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Ed Gehringer (efg)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Palvit Garg (pgarg5)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Peer Review Information ==&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the details are below:&lt;br /&gt;
* We have deployed the project http://152.7.98.81:8080/&lt;br /&gt;
* Instructor login: username -&amp;gt; instructor6,  password -&amp;gt; password&lt;br /&gt;
* Student login: username -&amp;gt; student5899,  password -&amp;gt; password&lt;br /&gt;
&lt;br /&gt;
== About Controller == &lt;br /&gt;
The sign up sheet controller &lt;br /&gt;
* Allows an instructor to add/remove topics&lt;br /&gt;
* Allows an instructor to assign/remove students to topics&lt;br /&gt;
* Allows an student to see the list of available topics which can be bid on for given OSS assignment.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
1. Naming is inconsistent.  When used as a verb, “sign up” is two words.  When an adjective or a noun, it should be one word, e.g., “signup_sheet_controller.”  Cf. “sign_up_as_instructor”.  Please make the naming consistent.  Of course, this will result in changes in calling methods as well.&lt;br /&gt;
&lt;br /&gt;
2. Add_signup_topics_staggered does not do anything different from add_signup_topics. Separate functions are needed, because add_signup_topics_staggered needs to make sure that the deadlines are set. [Assignment 1042 has staggered deadlines]&lt;br /&gt;
&lt;br /&gt;
3. Several method names can be improved.&lt;br /&gt;
&lt;br /&gt;
4. What are differences between signup_as_instructor and signup_as_instructor_action methods? Investigate if they are needed and improve the method names if both are needed. Provide comments as to what each method does.&lt;br /&gt;
&lt;br /&gt;
5. The list method is too long and is sparsely commented. Provide comments and identify if the method can be split or made cleaner by moving code to models or helper methods.&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action has if-else ladder. It can be made more elegant.&lt;br /&gt;
&lt;br /&gt;
7.Delete_signup and delete_signup_as_instructor have much in common and violate the DRY principle. Refactor.&lt;br /&gt;
&lt;br /&gt;
8.Giving elegant and more understandable names to flash in flash_delete_signup_message function&lt;br /&gt;
&lt;br /&gt;
== Solutions ==&lt;br /&gt;
1. Changed the name of the controller from sign_up_sheet_controller.rb --&amp;gt; signup_sheet_controller.rb. Also changed several method names that had 'sign_up' being used as an adjective or a noun to 'signup'.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/9e99f56c9f8051fa5ee6b6a4bdf3659ec50852dc&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/66fc8bc5fc3850639306ad2be79afaa3de1fad70&lt;br /&gt;
&lt;br /&gt;
2. The requirement that deadlines be submitted is no longer implemented and therefore a separate function for &amp;quot;staggered&amp;quot; is no longer needed.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/db12bf9c05831576183363b6bfe68bbad64e9c5a&lt;br /&gt;
&lt;br /&gt;
3. Renaming function ad_info&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/6507f15f6d23f44900465536a91cc6c80f90ad75&lt;br /&gt;
&lt;br /&gt;
4. Remove signup_as_instructor, since its not being used anywhere as such.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/e92e704f5cb6c549d440784339bcce6eba408a6b&lt;br /&gt;
&lt;br /&gt;
5. The list method is broken into 2 functions. The small part of computing signup topics is created. Also comments has been added to understand the function better.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/4b7bb6113dfb8984d7aa4dca467b55f67de3c93a&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/bd86f5a4ec8aa02c27a0cd34c85bd21776feca2c&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/56be9eed8ac89632041608947108f87dfbcb28ab&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action's if-else ladder has been made more elegant. &lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/50aae43edb7fcec3804deb93df28471db1b31c15&lt;br /&gt;
&lt;br /&gt;
7. delete_signup and delete_signup_as_instructor violated the DRY principle due to both functions using identical if/else statements.  To solve this issue, flash_delete_signup_message function was created.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/ddf35e88a2486d5ca748d3d93b15d9f6f4984af9&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/df1342b5239bb4e49214149b877a5ccf9c6117ae&lt;br /&gt;
&lt;br /&gt;
8. Flash messages names have been changed and given for meaningful names.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/47b4b11e4b4b2e6793dbd54259ae36749ed113a7&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Login as instructor ===&lt;br /&gt;
# Hover on Manage Tab&lt;br /&gt;
# Click on Assignments Tab&lt;br /&gt;
# Click on Edit Button for &amp;quot;OSS project &amp;amp; documentation&amp;quot; assignment&lt;br /&gt;
# Select the Topic Tab&lt;br /&gt;
# Click the Green Check for any topic&lt;br /&gt;
# Enter a student UnityID and click submit&lt;br /&gt;
&lt;br /&gt;
=== Login as student ===&lt;br /&gt;
# Click on OSS project/Writing assignment 2&lt;br /&gt;
# Click on Signup sheet&lt;br /&gt;
# The list must be visible, which indicates functionality is as before after refactoring list function.&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143418</id>
		<title>CSC/ECE 517 Spring 2022 - E2223. Refactor sign up sheet controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143418"/>
		<updated>2022-03-22T00:25:09Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Mentor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Ed Gehringer (efg)&lt;br /&gt;
&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Palvit Garg (pgarg5)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Peer Review Information ==&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are below:&lt;br /&gt;
* Instructor login: username -&amp;gt; instructor6,  password -&amp;gt; password&lt;br /&gt;
* Student login: username -&amp;gt; student5899,  password -&amp;gt; password&lt;br /&gt;
&lt;br /&gt;
== About Controller == &lt;br /&gt;
The sign up sheet controller &lt;br /&gt;
* Allows an instructor to add/remove topics&lt;br /&gt;
* Allows an instructor to assign/remove students to topics&lt;br /&gt;
* Allows an student to see the list of available topics which can be bid on for given OSS assignment.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
1. Naming is inconsistent.  When used as a verb, “sign up” is two words.  When an adjective or a noun, it should be one word, e.g., “signup_sheet_controller.”  Cf. “sign_up_as_instructor”.  Please make the naming consistent.  Of course, this will result in changes in calling methods as well.&lt;br /&gt;
&lt;br /&gt;
2. Add_signup_topics_staggered does not do anything different from add_signup_topics. Separate functions are needed, because add_signup_topics_staggered needs to make sure that the deadlines are set. [Assignment 1042 has staggered deadlines]&lt;br /&gt;
&lt;br /&gt;
3. Several method names can be improved.&lt;br /&gt;
&lt;br /&gt;
4. What are differences between signup_as_instructor and signup_as_instructor_action methods? Investigate if they are needed and improve the method names if both are needed. Provide comments as to what each method does.&lt;br /&gt;
&lt;br /&gt;
5. The list method is too long and is sparsely commented. Provide comments and identify if the method can be split or made cleaner by moving code to models or helper methods.&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action has if-else ladder. It can be made more elegant.&lt;br /&gt;
&lt;br /&gt;
7.Delete_signup and delete_signup_as_instructor have much in common and violate the DRY principle. Refactor.&lt;br /&gt;
&lt;br /&gt;
8.Giving elegant and more understandable names to flash in flash_delete_signup_message function&lt;br /&gt;
&lt;br /&gt;
== Solutions ==&lt;br /&gt;
1. Changed the name of the controller from sign_up_sheet_controller.rb --&amp;gt; signup_sheet_controller.rb. Also changed several method names that had 'sign_up' being used as an adjective or a noun to 'signup'.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/9e99f56c9f8051fa5ee6b6a4bdf3659ec50852dc&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/66fc8bc5fc3850639306ad2be79afaa3de1fad70&lt;br /&gt;
&lt;br /&gt;
2. The requirement that deadlines be submitted is no longer implemented and therefore a separate function for &amp;quot;staggered&amp;quot; is no longer needed.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/db12bf9c05831576183363b6bfe68bbad64e9c5a&lt;br /&gt;
&lt;br /&gt;
3. Renaming function ad_info&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/6507f15f6d23f44900465536a91cc6c80f90ad75&lt;br /&gt;
&lt;br /&gt;
4. Remove signup_as_instructor, since its not being used anywhere as such.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/e92e704f5cb6c549d440784339bcce6eba408a6b&lt;br /&gt;
&lt;br /&gt;
5. The list method is broken into 2 functions. The small part of computing signup topics is created. Also comments has been added to understand the function better.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/4b7bb6113dfb8984d7aa4dca467b55f67de3c93a&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/bd86f5a4ec8aa02c27a0cd34c85bd21776feca2c&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/56be9eed8ac89632041608947108f87dfbcb28ab&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action's if-else ladder has been made more elegant. &lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/50aae43edb7fcec3804deb93df28471db1b31c15&lt;br /&gt;
&lt;br /&gt;
7. delete_signup and delete_signup_as_instructor violated the DRY principle due to both functions using identical if/else statements.  To solve this issue, flash_delete_signup_message function was created.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/ddf35e88a2486d5ca748d3d93b15d9f6f4984af9&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/df1342b5239bb4e49214149b877a5ccf9c6117ae&lt;br /&gt;
&lt;br /&gt;
8. Flash messages names have been changed and given for meaningful names.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/47b4b11e4b4b2e6793dbd54259ae36749ed113a7&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Login as instructor ===&lt;br /&gt;
# Hover on Manage Tab&lt;br /&gt;
# Click on Assignments Tab&lt;br /&gt;
# Click on Edit Button for &amp;quot;OSS project &amp;amp; documentation&amp;quot; assignment&lt;br /&gt;
# Select the Topic Tab&lt;br /&gt;
# Click the Green Check for any topic&lt;br /&gt;
# Enter a student UnityID and click submit&lt;br /&gt;
&lt;br /&gt;
=== Login as student ===&lt;br /&gt;
# Click on OSS project/Writing assignment 2&lt;br /&gt;
# Click on Signup sheet&lt;br /&gt;
# The list must be visible, which indicates functionality is as before after refactoring list function.&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143417</id>
		<title>CSC/ECE 517 Spring 2022 - E2223. Refactor sign up sheet controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143417"/>
		<updated>2022-03-22T00:24:53Z</updated>

		<summary type="html">&lt;p&gt;Jkini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* Ed Gehringer (efg@ncsu.edu)&lt;br /&gt;
=== Team Members ===&lt;br /&gt;
* Palvit Garg (pgarg5)&lt;br /&gt;
* Varun Garg (vgarg4)&lt;br /&gt;
* Jagdish Kini (jkini)&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Peer Review Information ==&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are below:&lt;br /&gt;
* Instructor login: username -&amp;gt; instructor6,  password -&amp;gt; password&lt;br /&gt;
* Student login: username -&amp;gt; student5899,  password -&amp;gt; password&lt;br /&gt;
&lt;br /&gt;
== About Controller == &lt;br /&gt;
The sign up sheet controller &lt;br /&gt;
* Allows an instructor to add/remove topics&lt;br /&gt;
* Allows an instructor to assign/remove students to topics&lt;br /&gt;
* Allows an student to see the list of available topics which can be bid on for given OSS assignment.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
1. Naming is inconsistent.  When used as a verb, “sign up” is two words.  When an adjective or a noun, it should be one word, e.g., “signup_sheet_controller.”  Cf. “sign_up_as_instructor”.  Please make the naming consistent.  Of course, this will result in changes in calling methods as well.&lt;br /&gt;
&lt;br /&gt;
2. Add_signup_topics_staggered does not do anything different from add_signup_topics. Separate functions are needed, because add_signup_topics_staggered needs to make sure that the deadlines are set. [Assignment 1042 has staggered deadlines]&lt;br /&gt;
&lt;br /&gt;
3. Several method names can be improved.&lt;br /&gt;
&lt;br /&gt;
4. What are differences between signup_as_instructor and signup_as_instructor_action methods? Investigate if they are needed and improve the method names if both are needed. Provide comments as to what each method does.&lt;br /&gt;
&lt;br /&gt;
5. The list method is too long and is sparsely commented. Provide comments and identify if the method can be split or made cleaner by moving code to models or helper methods.&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action has if-else ladder. It can be made more elegant.&lt;br /&gt;
&lt;br /&gt;
7.Delete_signup and delete_signup_as_instructor have much in common and violate the DRY principle. Refactor.&lt;br /&gt;
&lt;br /&gt;
8.Giving elegant and more understandable names to flash in flash_delete_signup_message function&lt;br /&gt;
&lt;br /&gt;
== Solutions ==&lt;br /&gt;
1. Changed the name of the controller from sign_up_sheet_controller.rb --&amp;gt; signup_sheet_controller.rb. Also changed several method names that had 'sign_up' being used as an adjective or a noun to 'signup'.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/9e99f56c9f8051fa5ee6b6a4bdf3659ec50852dc&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/66fc8bc5fc3850639306ad2be79afaa3de1fad70&lt;br /&gt;
&lt;br /&gt;
2. The requirement that deadlines be submitted is no longer implemented and therefore a separate function for &amp;quot;staggered&amp;quot; is no longer needed.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/db12bf9c05831576183363b6bfe68bbad64e9c5a&lt;br /&gt;
&lt;br /&gt;
3. Renaming function ad_info&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/6507f15f6d23f44900465536a91cc6c80f90ad75&lt;br /&gt;
&lt;br /&gt;
4. Remove signup_as_instructor, since its not being used anywhere as such.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/e92e704f5cb6c549d440784339bcce6eba408a6b&lt;br /&gt;
&lt;br /&gt;
5. The list method is broken into 2 functions. The small part of computing signup topics is created. Also comments has been added to understand the function better.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/4b7bb6113dfb8984d7aa4dca467b55f67de3c93a&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/bd86f5a4ec8aa02c27a0cd34c85bd21776feca2c&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/56be9eed8ac89632041608947108f87dfbcb28ab&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action's if-else ladder has been made more elegant. &lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/50aae43edb7fcec3804deb93df28471db1b31c15&lt;br /&gt;
&lt;br /&gt;
7. delete_signup and delete_signup_as_instructor violated the DRY principle due to both functions using identical if/else statements.  To solve this issue, flash_delete_signup_message function was created.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/ddf35e88a2486d5ca748d3d93b15d9f6f4984af9&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/df1342b5239bb4e49214149b877a5ccf9c6117ae&lt;br /&gt;
&lt;br /&gt;
8. Flash messages names have been changed and given for meaningful names.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/47b4b11e4b4b2e6793dbd54259ae36749ed113a7&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Login as instructor ===&lt;br /&gt;
# Hover on Manage Tab&lt;br /&gt;
# Click on Assignments Tab&lt;br /&gt;
# Click on Edit Button for &amp;quot;OSS project &amp;amp; documentation&amp;quot; assignment&lt;br /&gt;
# Select the Topic Tab&lt;br /&gt;
# Click the Green Check for any topic&lt;br /&gt;
# Enter a student UnityID and click submit&lt;br /&gt;
&lt;br /&gt;
=== Login as student ===&lt;br /&gt;
# Click on OSS project/Writing assignment 2&lt;br /&gt;
# Click on Signup sheet&lt;br /&gt;
# The list must be visible, which indicates functionality is as before after refactoring list function.&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143411</id>
		<title>CSC/ECE 517 Spring 2022 - E2223. Refactor sign up sheet controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143411"/>
		<updated>2022-03-22T00:18:17Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Peer Review Information ==&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are below:&lt;br /&gt;
* Instructor login: username -&amp;gt; instructor6,  password -&amp;gt; password&lt;br /&gt;
* Student login: username -&amp;gt; student5899,  password -&amp;gt; password&lt;br /&gt;
&lt;br /&gt;
== About Controller == &lt;br /&gt;
The sign up sheet controller &lt;br /&gt;
* Allows an instructor to add/remove topics&lt;br /&gt;
* Allows an instructor to assign/remove students to topics&lt;br /&gt;
* Allows an student to see the list of available topics which can be bid on for given OSS assignment.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
1. Naming is inconsistent.  When used as a verb, “sign up” is two words.  When an adjective or a noun, it should be one word, e.g., “signup_sheet_controller.”  Cf. “sign_up_as_instructor”.  Please make the naming consistent.  Of course, this will result in changes in calling methods as well.&lt;br /&gt;
&lt;br /&gt;
2. Add_signup_topics_staggered does not do anything different from add_signup_topics. Separate functions are needed, because add_signup_topics_staggered needs to make sure that the deadlines are set. [Assignment 1042 has staggered deadlines]&lt;br /&gt;
&lt;br /&gt;
3. Several method names can be improved.&lt;br /&gt;
&lt;br /&gt;
4. What are differences between signup_as_instructor and signup_as_instructor_action methods? Investigate if they are needed and improve the method names if both are needed. Provide comments as to what each method does.&lt;br /&gt;
&lt;br /&gt;
5. The list method is too long and is sparsely commented. Provide comments and identify if the method can be split or made cleaner by moving code to models or helper methods.&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action has if-else ladder. It can be made more elegant.&lt;br /&gt;
&lt;br /&gt;
7.Delete_signup and delete_signup_as_instructor have much in common and violate the DRY principle. Refactor.&lt;br /&gt;
&lt;br /&gt;
8.Giving elegant and more understandable names to flash in flash_delete_signup_message function&lt;br /&gt;
&lt;br /&gt;
== Solutions ==&lt;br /&gt;
1. Changed the name of the controller from sign_up_sheet_controller.rb --&amp;gt; signup_sheet_controller.rb. Also changed several method names that had 'sign_up' being used as an adjective or a noun to 'signup'.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/9e99f56c9f8051fa5ee6b6a4bdf3659ec50852dc&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/66fc8bc5fc3850639306ad2be79afaa3de1fad70&lt;br /&gt;
&lt;br /&gt;
2. The requirement that deadlines be submitted is no longer implemented and therefore a separate function for &amp;quot;staggered&amp;quot; is no longer needed.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/db12bf9c05831576183363b6bfe68bbad64e9c5a&lt;br /&gt;
&lt;br /&gt;
3. Renaming function ad_info&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/6507f15f6d23f44900465536a91cc6c80f90ad75&lt;br /&gt;
&lt;br /&gt;
4. Remove signup_as_instructor, since its not being used anywhere as such.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/e92e704f5cb6c549d440784339bcce6eba408a6b&lt;br /&gt;
&lt;br /&gt;
5. The list method is broken into 2 functions. The small part of computing signup topics is created. Also comments has been added to understand the function better.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/4b7bb6113dfb8984d7aa4dca467b55f67de3c93a&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/bd86f5a4ec8aa02c27a0cd34c85bd21776feca2c&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/56be9eed8ac89632041608947108f87dfbcb28ab&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action's if-else ladder has been made more elegant. &lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/50aae43edb7fcec3804deb93df28471db1b31c15&lt;br /&gt;
&lt;br /&gt;
7. delete_signup and delete_signup_as_instructor violated the DRY principle due to both functions using identical if/else statements.  To solve this issue, flash_delete_signup_message function was created.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/ddf35e88a2486d5ca748d3d93b15d9f6f4984af9&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/df1342b5239bb4e49214149b877a5ccf9c6117ae&lt;br /&gt;
&lt;br /&gt;
8. Flash messages names have been changed and given for meaningful names.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/47b4b11e4b4b2e6793dbd54259ae36749ed113a7&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
Delete signup and delete signup as instructor method successfully broken down to remove the dry code by creating a new helper function. This functionality has not been broken due to any changes and has been checked by running rspec and testing manually.&lt;br /&gt;
: &lt;br /&gt;
=== Login as instructor ===&lt;br /&gt;
# Hover on Manage Tab&lt;br /&gt;
# Click on Assignments Tab&lt;br /&gt;
# Click on Edit Button for &amp;quot;OSS project &amp;amp; documentation&amp;quot; assignment&lt;br /&gt;
# Select the Topic Tab&lt;br /&gt;
# Click the Green Check for any topic&lt;br /&gt;
# Enter a student UnityID and click submit&lt;br /&gt;
&lt;br /&gt;
=== Login as student ===&lt;br /&gt;
# Click on OSS project/Writing assignment 2&lt;br /&gt;
# Click on Signup sheet&lt;br /&gt;
# The list must be visible, which indicates functionality is as before after refactoring list function.&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143390</id>
		<title>CSC/ECE 517 Spring 2022 - E2223. Refactor sign up sheet controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143390"/>
		<updated>2022-03-21T23:57:24Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Peer Review Information ==&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are below:&lt;br /&gt;
* Instructor login: username -&amp;gt; instructor6,  password -&amp;gt; password&lt;br /&gt;
* Student login: username -&amp;gt; student5899,  password -&amp;gt; password&lt;br /&gt;
&lt;br /&gt;
== About Controller == &lt;br /&gt;
The sign up sheet controller &lt;br /&gt;
* Allows an instructor to add/remove topics&lt;br /&gt;
* Allows an instructor to assign/remove students to topics&lt;br /&gt;
* Allows an student to see the list of available topics which can be bid on for given OSS assignment.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
1. Naming is inconsistent.  When used as a verb, “sign up” is two words.  When an adjective or a noun, it should be one word, e.g., “signup_sheet_controller.”  Cf. “sign_up_as_instructor”.  Please make the naming consistent.  Of course, this will result in changes in calling methods as well.&lt;br /&gt;
&lt;br /&gt;
2. Add_signup_topics_staggered does not do anything different from add_signup_topics. Separate functions are needed, because add_signup_topics_staggered needs to make sure that the deadlines are set. [Assignment 1042 has staggered deadlines]&lt;br /&gt;
&lt;br /&gt;
3. Several method names can be improved.&lt;br /&gt;
&lt;br /&gt;
4. What are differences between signup_as_instructor and signup_as_instructor_action methods? Investigate if they are needed and improve the method names if both are needed. Provide comments as to what each method does.&lt;br /&gt;
&lt;br /&gt;
5. The list method is too long and is sparsely commented. Provide comments and identify if the method can be split or made cleaner by moving code to models or helper methods.&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action has if-else ladder. It can be made more elegant.&lt;br /&gt;
&lt;br /&gt;
7.Delete_signup and delete_signup_as_instructor have much in common and violate the DRY principle. Refactor.&lt;br /&gt;
&lt;br /&gt;
8.Giving elegant and more understandable names to flash in flash_delete_signup_message function&lt;br /&gt;
&lt;br /&gt;
== Solutions ==&lt;br /&gt;
1. Changed the name of the controller from sign_up_sheet_controller.rb --&amp;gt; signup_sheet_controller.rb. Also changed several method names that had 'sign_up' being used as an adjective or a noun to 'signup'.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/9e99f56c9f8051fa5ee6b6a4bdf3659ec50852dc&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/66fc8bc5fc3850639306ad2be79afaa3de1fad70&lt;br /&gt;
&lt;br /&gt;
2. The requirement that deadlines be submitted is no longer implemented and therefore a separate function for &amp;quot;staggered&amp;quot; is no longer needed.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/db12bf9c05831576183363b6bfe68bbad64e9c5a&lt;br /&gt;
&lt;br /&gt;
3. Renaming function ad_info&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/6507f15f6d23f44900465536a91cc6c80f90ad75&lt;br /&gt;
&lt;br /&gt;
4. Remove signup_as_instructor, since its not being used anywhere as such.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/e92e704f5cb6c549d440784339bcce6eba408a6b&lt;br /&gt;
&lt;br /&gt;
5. The list method is broken into 2 functions. The small part of computing signup topics is created. Also comments has been added to understand the function better.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/4b7bb6113dfb8984d7aa4dca467b55f67de3c93a&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/bd86f5a4ec8aa02c27a0cd34c85bd21776feca2c&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/56be9eed8ac89632041608947108f87dfbcb28ab&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action's if-else ladder has been made more elegant. &lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/50aae43edb7fcec3804deb93df28471db1b31c15&lt;br /&gt;
&lt;br /&gt;
7. delete_signup and delete_signup_as_instructor violated the DRY principle due to both functions using identical if/else statements.  To solve this issue, flash_delete_signup_message function was created.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/ddf35e88a2486d5ca748d3d93b15d9f6f4984af9&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/df1342b5239bb4e49214149b877a5ccf9c6117ae&lt;br /&gt;
&lt;br /&gt;
8. Flash messages names have been changed and given for meaningful names.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/47b4b11e4b4b2e6793dbd54259ae36749ed113a7&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: As such no functionality changed in any function, only refactoring done. All the refactoring was carefully verified by running rspec tests. To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
We found that add_signup_topics_staggered was simply calling add_signup_topics function. So we eliminated the add_signup_topics_staggered function and manually checked and found that it is working perfectly fine.&lt;br /&gt;
&lt;br /&gt;
; Physical Testing&lt;br /&gt;
: &lt;br /&gt;
=== Login as instructor ===&lt;br /&gt;
# Hover on Manage Tab&lt;br /&gt;
# Click on Assignments Tab&lt;br /&gt;
# Click on Edit Button for &amp;quot;OSS project &amp;amp; documentation&amp;quot; assignment&lt;br /&gt;
# Select the Topic Tab&lt;br /&gt;
# Click the Green Check for any topic&lt;br /&gt;
# Enter a student UnityID and click submit&lt;br /&gt;
&lt;br /&gt;
=== Login as student ===&lt;br /&gt;
# Click on OSS project/Writing assignment 2&lt;br /&gt;
# Click on Signup sheet&lt;br /&gt;
# The list must be visible, which indicates functionality is as before after refactoring list function.&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143329</id>
		<title>CSC/ECE 517 Spring 2022 - E2223. Refactor sign up sheet controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143329"/>
		<updated>2022-03-21T23:06:54Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Peer Review Information ==&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are below:&lt;br /&gt;
* Instructor login: username -&amp;gt; instructor6,  password -&amp;gt; password&lt;br /&gt;
* Student login: username -&amp;gt; student5899,  password -&amp;gt; password&lt;br /&gt;
&lt;br /&gt;
== About Controller == &lt;br /&gt;
The sign up sheet controller &lt;br /&gt;
* Allows an instructor to add/remove topics&lt;br /&gt;
* Allows an instructor to assign/remove students to topics&lt;br /&gt;
* Allows an student to see the list of available topics which can be bid on for given OSS assignment.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
1. Naming is inconsistent.  When used as a verb, “sign up” is two words.  When an adjective or a noun, it should be one word, e.g., “signup_sheet_controller.”  Cf. “sign_up_as_instructor”.  Please make the naming consistent.  Of course, this will result in changes in calling methods as well.&lt;br /&gt;
&lt;br /&gt;
2. Add_signup_topics_staggered does not do anything different from add_signup_topics. Separate functions are needed, because add_signup_topics_staggered needs to make sure that the deadlines are set. [Assignment 1042 has staggered deadlines]&lt;br /&gt;
&lt;br /&gt;
3. Several method names can be improved (including: load_add_signup_topics, list, ad_info etc.)&lt;br /&gt;
&lt;br /&gt;
4. What are differences between signup_as_instructor and signup_as_instructor_action methods? Investigate if they are needed and improve the method names if both are needed. Provide comments as to what each method does.&lt;br /&gt;
&lt;br /&gt;
5. The list method is too long and is sparsely commented. Provide comments and identify if the method can be split or made cleaner by moving code to models or helper methods.&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action has if-else ladder. It can be made more elegant.&lt;br /&gt;
&lt;br /&gt;
7.  Delete_signup and delete_signup_as_instructor have much in common and violate the DRY principle. Refactor.&lt;br /&gt;
&lt;br /&gt;
== Solutions ==&lt;br /&gt;
1. Changed the name of the controller from sign_up_sheet_controller.rb --&amp;gt; signup_sheet_controller.rb. Also changed several method names that had 'sign_up' being used as an adjective or a noun to 'signup'.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/9e99f56c9f8051fa5ee6b6a4bdf3659ec50852dc&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/66fc8bc5fc3850639306ad2be79afaa3de1fad70&lt;br /&gt;
&lt;br /&gt;
2. The requirement that deadlines be submitted is no longer implemented and therefore a separate function for &amp;quot;staggered&amp;quot; is no longer needed.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/db12bf9c05831576183363b6bfe68bbad64e9c5a&lt;br /&gt;
&lt;br /&gt;
3. Used a single update_attributes method in place of the many instance variables.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. The requirement that deadlines be submitted is no longer implemented and therefore a separate function for &amp;quot;staggered&amp;quot; is no longer needed.&lt;br /&gt;
&lt;br /&gt;
5. Ad_info was renamed to ads_for_partners_info to give better picture of what function does. &lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/6507f15f6d23f44900465536a91cc6c80f90ad75&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action's if-else ladder has been made more elegant. &lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/50aae43edb7fcec3804deb93df28471db1b31c15&lt;br /&gt;
&lt;br /&gt;
7. signup_as_instructor is not needed and has been removed.&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/e92e704f5cb6c549d440784339bcce6eba408a6b&lt;br /&gt;
&lt;br /&gt;
8. The list method is broken into 2 functions. The small part of computing signup topics is created. Also comments has been added to understand the functio better.&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/4b7bb6113dfb8984d7aa4dca467b55f67de3c93a&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/bd86f5a4ec8aa02c27a0cd34c85bd21776feca2c&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/56be9eed8ac89632041608947108f87dfbcb28ab&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9. Refactored the participants variable and improved readability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10.  Previously signup_as_instructor_action provided unhelpful feedback to the instructor by only stating if the instructor could/couldn't assign a topic for a student.  The refactored code provides the instructor with the student id of the person that they are assigning, the team that the student is on, and the topic that the instructor is assigning to the team. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
11. delete_signup and delete_signup_as_instructor violated the DRY principle due to both functions using identical if/else statements.  To solve this issue, flash_delete_signup_message function was created.&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/ddf35e88a2486d5ca748d3d93b15d9f6f4984af9&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: signup_as_instructor_action is the only function updated.  All other functions has remained the same.  To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
; Physical Testing&lt;br /&gt;
: &lt;br /&gt;
# Login as instructor&lt;br /&gt;
# Hover on Manage Tab&lt;br /&gt;
# Click on Assignments Tab&lt;br /&gt;
# Click on Edit Button for &amp;quot;OSS project &amp;amp; documentation&amp;quot; assignment&lt;br /&gt;
# Select the Topic Tab&lt;br /&gt;
# Click the Green Check for any topic&lt;br /&gt;
# Enter a student UnityID and click submit&lt;br /&gt;
&lt;br /&gt;
# Login as student&lt;br /&gt;
# Click on OSS project/Writing assignment 2&lt;br /&gt;
# Click on Signup sheet&lt;br /&gt;
# The list must be visible, which indiactes functionality is as before after refactoring list fucntion.&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143326</id>
		<title>CSC/ECE 517 Spring 2022 - E2223. Refactor sign up sheet controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143326"/>
		<updated>2022-03-21T23:04:26Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Peer Review Information ==&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are below:&lt;br /&gt;
* Instructor login: username -&amp;gt; instructor6,  password -&amp;gt; password&lt;br /&gt;
* Student login: username -&amp;gt; student5899,  password -&amp;gt; password&lt;br /&gt;
&lt;br /&gt;
== About Controller == &lt;br /&gt;
The sign up sheet controller &lt;br /&gt;
* Allows an instructor to add/remove topics&lt;br /&gt;
* Allows an instructor to assign/remove students to topics&lt;br /&gt;
* Allows an student to see the list of available topics which can be bid on for given OSS assignment.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
1. Naming is inconsistent.  When used as a verb, “sign up” is two words.  When an adjective or a noun, it should be one word, e.g., “signup_sheet_controller.”  Cf. “sign_up_as_instructor”.  Please make the naming consistent.  Of course, this will result in changes in calling methods as well.&lt;br /&gt;
&lt;br /&gt;
2. Add_signup_topics_staggered does not do anything different from add_signup_topics. Separate functions are needed, because add_signup_topics_staggered needs to make sure that the deadlines are set. [Assignment 1042 has staggered deadlines]&lt;br /&gt;
&lt;br /&gt;
3. Several method names can be improved (including: load_add_signup_topics, list, ad_info etc.)&lt;br /&gt;
&lt;br /&gt;
4. What are differences between signup_as_instructor and signup_as_instructor_action methods? Investigate if they are needed and improve the method names if both are needed. Provide comments as to what each method does.&lt;br /&gt;
&lt;br /&gt;
5. The list method is too long and is sparsely commented. Provide comments and identify if the method can be split or made cleaner by moving code to models or helper methods.&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action has if-else ladder. It can be made more elegant.&lt;br /&gt;
&lt;br /&gt;
7.  Delete_signup and delete_signup_as_instructor have much in common and violate the DRY principle. Refactor.&lt;br /&gt;
&lt;br /&gt;
== Solutions ==&lt;br /&gt;
1. Changed the name of the controller from sign_up_sheet_controller.rb --&amp;gt; signup_sheet_controller.rb. Also changed several method names that had 'sign_up' being used as an adjective or a noun to 'signup'.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/9e99f56c9f8051fa5ee6b6a4bdf3659ec50852dc&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/66fc8bc5fc3850639306ad2be79afaa3de1fad70&lt;br /&gt;
&lt;br /&gt;
2. The requirement that deadlines be submitted is no longer implemented and therefore a separate function for &amp;quot;staggered&amp;quot; is no longer needed.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/db12bf9c05831576183363b6bfe68bbad64e9c5a&lt;br /&gt;
&lt;br /&gt;
3. Used a single update_attributes method in place of the many instance variables.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. The requirement that deadlines be submitted is no longer implemented and therefore a separate function for &amp;quot;staggered&amp;quot; is no longer needed.&lt;br /&gt;
&lt;br /&gt;
5. Ad_info was renamed to ads_for_partners_info to give better picture of what function does. &lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/6507f15f6d23f44900465536a91cc6c80f90ad75&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action's if-else ladder has been made more elegant. &lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/50aae43edb7fcec3804deb93df28471db1b31c15&lt;br /&gt;
&lt;br /&gt;
7. signup_as_instructor is not needed and has been removed.&lt;br /&gt;
&lt;br /&gt;
8. The list method is broken into 2 functions. The small part of computing signup topics is created. Also comments has been added to understand the functio better.&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/4b7bb6113dfb8984d7aa4dca467b55f67de3c93a&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/bd86f5a4ec8aa02c27a0cd34c85bd21776feca2c&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/56be9eed8ac89632041608947108f87dfbcb28ab&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9. Refactored the participants variable and improved readability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10.  Previously signup_as_instructor_action provided unhelpful feedback to the instructor by only stating if the instructor could/couldn't assign a topic for a student.  The refactored code provides the instructor with the student id of the person that they are assigning, the team that the student is on, and the topic that the instructor is assigning to the team. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
11. delete_signup and delete_signup_as_instructor violated the DRY principle due to both functions using identical if/else statements.  To solve this issue, delete_signup_heleper function was created.&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/ddf35e88a2486d5ca748d3d93b15d9f6f4984af9&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: signup_as_instructor_action is the only function updated.  All other functions has remained the same.  To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
; Physical Testing&lt;br /&gt;
: &lt;br /&gt;
# Login as instructor&lt;br /&gt;
# Hover on Manage Tab&lt;br /&gt;
# Click on Assignments Tab&lt;br /&gt;
# Click on Edit Button for &amp;quot;OSS project &amp;amp; documentation&amp;quot; assignment&lt;br /&gt;
# Select the Topic Tab&lt;br /&gt;
# Click the Green Check for any topic&lt;br /&gt;
# Enter a student UnityID and click submit&lt;br /&gt;
&lt;br /&gt;
# Login as student&lt;br /&gt;
# Click on OSS project/Writing assignment 2&lt;br /&gt;
# Click on Signup sheet&lt;br /&gt;
# The list must be visible, which indiactes functionality is as before after refactoring list fucntion.&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143321</id>
		<title>CSC/ECE 517 Spring 2022 - E2223. Refactor sign up sheet controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143321"/>
		<updated>2022-03-21T23:01:15Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Peer Review Information ==&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are below:&lt;br /&gt;
* Instructor login: username -&amp;gt; instructor6,  password -&amp;gt; password&lt;br /&gt;
* Student login: username -&amp;gt; student5899,  password -&amp;gt; password&lt;br /&gt;
&lt;br /&gt;
== About Controller == &lt;br /&gt;
The sign up sheet controller &lt;br /&gt;
* Allows an instructor to add/remove topics&lt;br /&gt;
* Allows an instructor to assign/remove students to topics&lt;br /&gt;
* Allows an student to see the list of available topics which can be bid on for given OSS assignment.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
1. Naming is inconsistent.  When used as a verb, “sign up” is two words.  When an adjective or a noun, it should be one word, e.g., “signup_sheet_controller.”  Cf. “sign_up_as_instructor”.  Please make the naming consistent.  Of course, this will result in changes in calling methods as well.&lt;br /&gt;
&lt;br /&gt;
2. Add_signup_topics_staggered does not do anything different from add_signup_topics. Separate functions are needed, because add_signup_topics_staggered needs to make sure that the deadlines are set. [Assignment 1042 has staggered deadlines]&lt;br /&gt;
&lt;br /&gt;
3. Several method names can be improved (including: load_add_signup_topics, list, ad_info etc.)&lt;br /&gt;
&lt;br /&gt;
4. What are differences between signup_as_instructor and signup_as_instructor_action methods? Investigate if they are needed and improve the method names if both are needed. Provide comments as to what each method does.&lt;br /&gt;
&lt;br /&gt;
5. The list method is too long and is sparsely commented. Provide comments and identify if the method can be split or made cleaner by moving code to models or helper methods.&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action has if-else ladder. It can be made more elegant.&lt;br /&gt;
&lt;br /&gt;
7.  Delete_signup and delete_signup_as_instructor have much in common and violate the DRY principle. Refactor.&lt;br /&gt;
&lt;br /&gt;
== Solutions ==&lt;br /&gt;
1. Changed the name of the controller from sign_up_sheet_controller.rb --&amp;gt; signup_sheet_controller.rb. Also changed several method names that had 'sign_up' being used as an adjective or a noun to 'signup'.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/9e99f56c9f8051fa5ee6b6a4bdf3659ec50852dc&lt;br /&gt;
&lt;br /&gt;
2. The requirement that deadlines be submitted is no longer implemented and therefore a separate function for &amp;quot;staggered&amp;quot; is no longer needed.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/db12bf9c05831576183363b6bfe68bbad64e9c5a&lt;br /&gt;
&lt;br /&gt;
3. Used a single update_attributes method in place of the many instance variables.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. The requirement that deadlines be submitted is no longer implemented and therefore a separate function for &amp;quot;staggered&amp;quot; is no longer needed.&lt;br /&gt;
&lt;br /&gt;
5. Ad_info was renamed to ads_for_partners_info to give better picture of what function does. &lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/6507f15f6d23f44900465536a91cc6c80f90ad75&lt;br /&gt;
&lt;br /&gt;
6. signup_as_instructor is not needed and has been removed.&lt;br /&gt;
&lt;br /&gt;
7. The list method is broken into 2 functions. The small part of computing signup topics is created. Also comments has been added to understand the functio better.&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/4b7bb6113dfb8984d7aa4dca467b55f67de3c93a&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/bd86f5a4ec8aa02c27a0cd34c85bd21776feca2c&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/56be9eed8ac89632041608947108f87dfbcb28ab&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Refactored the participants variable and improved readability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9.  Previously signup_as_instructor_action provided unhelpful feedback to the instructor by only stating if the instructor could/couldn't assign a topic for a student.  The refactored code provides the instructor with the student id of the person that they are assigning, the team that the student is on, and the topic that the instructor is assigning to the team. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10. delete_signup and delete_signup_as_instructor violated the DRY principle due to both functions using identical if/else statements.  To solve this issue, delete_signup_heleper function was created.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: signup_as_instructor_action is the only function updated.  All other functions has remained the same.  To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
; Physical Testing&lt;br /&gt;
: &lt;br /&gt;
# Login as instructor&lt;br /&gt;
# Hover on Manage Tab&lt;br /&gt;
# Click on Assignments Tab&lt;br /&gt;
# Click on Edit Button for &amp;quot;OSS project &amp;amp; documentation&amp;quot; assignment&lt;br /&gt;
# Select the Topic Tab&lt;br /&gt;
# Click the Green Check for any topic&lt;br /&gt;
# Enter a student UnityID and click submit&lt;br /&gt;
&lt;br /&gt;
# Login as student&lt;br /&gt;
# Click on OSS project/Writing assignment 2&lt;br /&gt;
# Click on Signup sheet&lt;br /&gt;
# The list must be visible, which indiactes functionality is as before after refactoring list fucntion.&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143319</id>
		<title>CSC/ECE 517 Spring 2022 - E2223. Refactor sign up sheet controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143319"/>
		<updated>2022-03-21T22:59:56Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Peer Review Information ==&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are below:&lt;br /&gt;
* Instructor login: username -&amp;gt; instructor6,  password -&amp;gt; password&lt;br /&gt;
* Student login: username -&amp;gt; student5899,  password -&amp;gt; password&lt;br /&gt;
&lt;br /&gt;
== About Controller == &lt;br /&gt;
The sign up sheet controller &lt;br /&gt;
* Allows an instructor to add/remove topics&lt;br /&gt;
* Allows an instructor to assign/remove students to topics&lt;br /&gt;
* Allows an student to see the list of available topics which can be bid on for given OSS assignment.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
1. Naming is inconsistent.  When used as a verb, “sign up” is two words.  When an adjective or a noun, it should be one word, e.g., “signup_sheet_controller.”  Cf. “sign_up_as_instructor”.  Please make the naming consistent.  Of course, this will result in changes in calling methods as well.&lt;br /&gt;
&lt;br /&gt;
2. Add_signup_topics_staggered does not do anything different from add_signup_topics. Separate functions are needed, because add_signup_topics_staggered needs to make sure that the deadlines are set. [Assignment 1042 has staggered deadlines]&lt;br /&gt;
&lt;br /&gt;
3. Several method names can be improved (including: load_add_signup_topics, list, ad_info etc.)&lt;br /&gt;
&lt;br /&gt;
4. What are differences between signup_as_instructor and signup_as_instructor_action methods? Investigate if they are needed and improve the method names if both are needed. Provide comments as to what each method does.&lt;br /&gt;
&lt;br /&gt;
5. The list method is too long and is sparsely commented. Provide comments and identify if the method can be split or made cleaner by moving code to models or helper methods.&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action has if-else ladder. It can be made more elegant.&lt;br /&gt;
&lt;br /&gt;
7.  Delete_signup and delete_signup_as_instructor have much in common and violate the DRY principle. Refactor.&lt;br /&gt;
&lt;br /&gt;
== Solutions ==&lt;br /&gt;
1. Changed the name of the controller from sign_up_sheet_controller.rb --&amp;gt; signup_sheet_controller.rb. Also changed several method names that had 'sign_up' being used as an adjective or a noun to 'signup'.&lt;br /&gt;
&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/9e99f56c9f8051fa5ee6b6a4bdf3659ec50852dc&lt;br /&gt;
&lt;br /&gt;
2. Changed the create method to only create a new topic if that topic doesn't already exist. If it does exist, the program flashes an error message and backs out. &lt;br /&gt;
&lt;br /&gt;
3. Used a single update_attributes method in place of the many instance variables.&lt;br /&gt;
&lt;br /&gt;
'''Before'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/9e99f56c9f8051fa5ee6b6a4bdf3659ec50852dc&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/66fc8bc5fc3850639306ad2be79afaa3de1fad70&lt;br /&gt;
def update&lt;br /&gt;
    @topic = SignUpTopic.find(params[:id])&lt;br /&gt;
    if @topic&lt;br /&gt;
      @topic.topic_identifier = params[:topic][:topic_identifier]&lt;br /&gt;
      update_max_choosers @topic&lt;br /&gt;
      @topic.category = params[:topic][:category]&lt;br /&gt;
      @topic.topic_name = params[:topic][:topic_name]&lt;br /&gt;
      @topic.micropayment = params[:topic][:micropayment]&lt;br /&gt;
      @topic.description = params[:topic][:description]&lt;br /&gt;
      @topic.link = params[:topic][:link]&lt;br /&gt;
      @topic.save&lt;br /&gt;
      params[:topic][:topic_name], micropayment: params[:topic][:micropayment], description: params[:topic][:description], link: params[:topic][:link])&lt;br /&gt;
      undo_link(&amp;quot;The topic: \&amp;quot;#{@topic.topic_name}\&amp;quot; has been successfully updated. &amp;quot;)&lt;br /&gt;
    else&lt;br /&gt;
      flash[:error] = &amp;quot;The topic could not be updated.&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    # Akshay - correctly changing the redirection url to topics tab in edit assignment view.&lt;br /&gt;
    redirect_to edit_assignment_path(params[:assignment_id]) + &amp;quot;#tabs-2&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def update&lt;br /&gt;
    @topic = SignUpTopic.find(params[:id])&lt;br /&gt;
    if @topic&lt;br /&gt;
      update_max_choosers @topic&lt;br /&gt;
      updated_max_choosers = @topic.max_choosers&lt;br /&gt;
      @topic.update_attributes(topic_identifier: params[:topic][:topic_identifier], max_choosers: updated_max_choosers, category: params[:topic][:category], topic_name: params[:topic][:topic_name], micropayment: params[:topic][:micropayment], description: params[:topic][:description], link: params[:topic][:link])&lt;br /&gt;
      undo_link(&amp;quot;The topic: \&amp;quot;#{@topic.topic_name}\&amp;quot; has been successfully updated. &amp;quot;)&lt;br /&gt;
    else&lt;br /&gt;
      flash[:error] = &amp;quot;The topic could not be updated.&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    # Akshay - correctly changing the redirection url to topics tab in edit assignment view.&lt;br /&gt;
    redirect_to edit_assignment_path(params[:assignment_id]) + &amp;quot;#tabs-2&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. The requirement that deadlines be submitted is no longer implemented and therefore a separate function for &amp;quot;staggered&amp;quot; is no longer needed.&lt;br /&gt;
&lt;br /&gt;
5. Ad_info was renamed to ads_for_partners_info to give better picture of what function does. &lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/6507f15f6d23f44900465536a91cc6c80f90ad75&lt;br /&gt;
&lt;br /&gt;
6. signup_as_instructor is not needed and has been removed.&lt;br /&gt;
&lt;br /&gt;
7. The list method is broken into 2 functions. The small part of computing signup topics is created. Also comments has been added to understand the functio better.&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/4b7bb6113dfb8984d7aa4dca467b55f67de3c93a&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/bd86f5a4ec8aa02c27a0cd34c85bd21776feca2c&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/56be9eed8ac89632041608947108f87dfbcb28ab&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Refactored the participants variable and improved readability.&lt;br /&gt;
&lt;br /&gt;
'''Before'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@participants = SignedUpTeam.find_team_participants(assignment_id, session[:ip])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip = session[:ip]&lt;br /&gt;
@participants = SignedUpTeam.find_team_participants(@id, ip)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9.  Previously signup_as_instructor_action provided unhelpful feedback to the instructor by only stating if the instructor could/couldn't assign a topic for a student.  The refactored code provides the instructor with the student id of the person that they are assigning, the team that the student is on, and the topic that the instructor is assigning to the team. &lt;br /&gt;
&lt;br /&gt;
'''Before''' &lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
def signup_as_instructor_action&lt;br /&gt;
    user = User.find_by(name: params[:username])&lt;br /&gt;
    if user.nil? # validate invalid user&lt;br /&gt;
      flash[:error] = &amp;quot;That student does not exist!&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      if AssignmentParticipant.exists? user_id: user.id, parent_id: params[:assignment_id]&lt;br /&gt;
        if SignUpSheet.signup_team(params[:assignment_id], user.id, params[:topic_id])&lt;br /&gt;
          flash[:success] = &amp;quot;You have successfully signed up the student for the topic!&amp;quot;&lt;br /&gt;
          ExpertizaLogger.info LoggerMessage.new(controller_name, '', 'Instructor signed up student for topic: ' + params[:topic_id].to_s)&lt;br /&gt;
        else&lt;br /&gt;
          flash[:error] = &amp;quot;The student has already signed up for a topic!&amp;quot;&lt;br /&gt;
          ExpertizaLogger.info LoggerMessage.new(controller_name, '', 'Instructor is signing up a student who already has a topic')&lt;br /&gt;
        end&lt;br /&gt;
      else&lt;br /&gt;
        flash[:error] = &amp;quot;The student is not registered for the assignment!&amp;quot;&lt;br /&gt;
        ExpertizaLogger.info LoggerMessage.new(controller_name, '', 'The student is not registered for the assignment: ' &amp;lt;&amp;lt; user.id)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to controller: 'assignments', action: 'edit', id: params[:assignment_id]&lt;br /&gt;
  end&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After''' &lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
def signup_as_instructor_action&lt;br /&gt;
    #put name of student and team in log&lt;br /&gt;
    # flash name of student and team&lt;br /&gt;
    user = User.find_by(name: params[:username])&lt;br /&gt;
    team = Team.find_team_for_assignment_and_user(params[:assignment_id], user.id).first&lt;br /&gt;
    assignment = Assignment.find(params[:assignment_id])&lt;br /&gt;
    if user.nil? # validate invalid user&lt;br /&gt;
      flash[:error] = user.name + &amp;quot; does not exist!&amp;quot;&lt;br /&gt;
    else #If the user is not null and the student exists then sign up student for topic&lt;br /&gt;
      if AssignmentParticipant.exists? user_id: user.id, parent_id: params[:assignment_id]&lt;br /&gt;
        if SignUpSheet.signup_team(params[:assignment_id], user.id, params[:topic_id])&lt;br /&gt;
          flash[:success] = &amp;quot;You have successfully signed up &amp;quot; + user.name + &amp;quot; on &amp;quot; + team.name + &amp;quot;  for the topic &amp;quot; + params[:topic_id].to_s&lt;br /&gt;
          ExpertizaLogger.info LoggerMessage.new(controller_name, '', 'Instructor signed up ' + user.name + ' on team ' + team.name + ' for topic: ' + params[:topic_id].to_s)&lt;br /&gt;
        else #If the students team already has a topic then cancel the sign up&lt;br /&gt;
          flash[:error] = user.name + &amp;quot; on &amp;quot; + team.name + &amp;quot; has already signed up for a topic!&amp;quot;&lt;br /&gt;
          ExpertizaLogger.info LoggerMessage.new(controller_name, '', 'Instructor is signing up a ' + user.name + 'on ' + team.name + ' who already has a topic')&lt;br /&gt;
        end&lt;br /&gt;
      else #If the student isn't a part of the assignment then cancel the sign up&lt;br /&gt;
        flash[:error] = user.name + &amp;quot; is not registered for the assignment!&amp;quot;&lt;br /&gt;
        ExpertizaLogger.info LoggerMessage.new(controller_name, '', user.name + ' is not registered for the assignment: ' + assignment.name)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to controller: 'assignments', action: 'edit', id: params[:assignment_id]&lt;br /&gt;
  end&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. delete_signup and delete_signup_as_instructor violated the DRY principle due to both functions using identical if/else statements.  To solve this issue, delete_signup_heleper function was created. &lt;br /&gt;
&lt;br /&gt;
'''Before'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def delete_signup&lt;br /&gt;
    participant = AssignmentParticipant.find(params[:id])&lt;br /&gt;
    assignment = participant.assignment&lt;br /&gt;
    drop_topic_deadline = assignment.due_dates.find_by(deadline_type_id: 6)&lt;br /&gt;
    # A student who has already submitted work should not be allowed to drop his/her topic!&lt;br /&gt;
    # (A student/team has submitted if participant directory_num is non-null or submitted_hyperlinks is non-null.)&lt;br /&gt;
    # If there is no drop topic deadline, student can drop topic at any time (if all the submissions are deleted)&lt;br /&gt;
    # If there is a drop topic deadline, student cannot drop topic after this deadline.&lt;br /&gt;
    if !participant.team.submitted_files.empty? or !participant.team.hyperlinks.empty?&lt;br /&gt;
      flash[:error] = &amp;quot;You have already submitted your work, so you are not allowed to drop your topic.&amp;quot;&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Dropping topic for already submitted a work: ' + params[:topic_id].to_s)&lt;br /&gt;
    elsif !drop_topic_deadline.nil? and Time.now &amp;gt; drop_topic_deadline.due_at&lt;br /&gt;
      flash[:error] = &amp;quot;You cannot drop your topic after the drop topic deadline!&amp;quot;&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Dropping topic for ended work: ' + params[:topic_id].to_s)&lt;br /&gt;
    else&lt;br /&gt;
      delete_signup_for_topic(assignment.id, params[:topic_id], session[:user].id)&lt;br /&gt;
      flash[:success] = &amp;quot;You have successfully dropped your topic!&amp;quot;&lt;br /&gt;
      ExpertizaLogger.info LoggerMessage.new(controller_name, session[:user].id, 'Student has dropped the topic: ' + params[:topic_id].to_s)&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to action: 'list', id: params[:id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def delete_signup_as_instructor&lt;br /&gt;
    # find participant using assignment using team and topic ids&lt;br /&gt;
    team = Team.find(params[:id])&lt;br /&gt;
    assignment = Assignment.find(team.parent_id)&lt;br /&gt;
    user = TeamsUser.find_by(team_id: team.id).user&lt;br /&gt;
    participant = AssignmentParticipant.find_by(user_id: user.id, parent_id: assignment.id)&lt;br /&gt;
    drop_topic_deadline = assignment.due_dates.find_by(deadline_type_id: 6)&lt;br /&gt;
    if !participant.team.submitted_files.empty? or !participant.team.hyperlinks.empty?&lt;br /&gt;
      flash[:error] = &amp;quot;The student has already submitted their work, so you are not allowed to remove them.&amp;quot;&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Drop failed for already submitted work: ' + params[:topic_id].to_s)&lt;br /&gt;
    elsif !drop_topic_deadline.nil? and Time.now &amp;gt; drop_topic_deadline.due_at&lt;br /&gt;
      flash[:error] = &amp;quot;You cannot drop a student after the drop topic deadline!&amp;quot;&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Drop failed for ended work: ' + params[:topic_id].to_s)&lt;br /&gt;
    else&lt;br /&gt;
      delete_signup_for_topic(assignment.id, params[:topic_id], participant.user_id)&lt;br /&gt;
      flash[:success] = &amp;quot;You have successfully dropped the student from the topic!&amp;quot;&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Student has been dropped from the topic: ' + params[:topic_id].to_s)&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to controller: 'assignments', action: 'edit', id: assignment.id&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def delete_signup_helper(isInstructor, participant, assignment, drop_topic_deadline)&lt;br /&gt;
    messages = [&amp;quot;You have already submitted your work, so you are not allowed to drop your topic.&amp;quot;,&lt;br /&gt;
                &amp;quot;You cannot drop your topic after the drop topic deadline!&amp;quot;,&lt;br /&gt;
                &amp;quot;You have successfully dropped your topic!&amp;quot;,&lt;br /&gt;
                &amp;quot;The team has already submitted their work, so you are not allowed to remove them.&amp;quot;,&lt;br /&gt;
                &amp;quot;You cannot drop a student after the drop topic deadline!&amp;quot;,&lt;br /&gt;
                &amp;quot;You have successfully dropped the student from the topic!&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
    if isInstructor == false&lt;br /&gt;
      flash1 = messages[0]&lt;br /&gt;
      flash2 = messages[1]&lt;br /&gt;
      flash3 = messages[2]&lt;br /&gt;
      id_param = session[:user]&lt;br /&gt;
    else&lt;br /&gt;
      flash1 = messages[3]&lt;br /&gt;
      flash2 = messages[4]&lt;br /&gt;
      flash3 = messages[5]&lt;br /&gt;
      id_param = participant&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if !participant.team.submitted_files.empty? or !participant.team.hyperlinks.empty?&lt;br /&gt;
      flash[:error] = flash1&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Dropping failed for already submitted a work: ' + params[:topic_id].to_s)&lt;br /&gt;
    elsif !drop_topic_deadline.nil? and Time.now &amp;gt; drop_topic_deadline.due_at&lt;br /&gt;
      flash[:error] = flash2&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Dropping failed for ended work: ' + params[:topic_id].to_s)&lt;br /&gt;
    else&lt;br /&gt;
      delete_signup_for_topic(assignment.id, params[:topic_id], id_param.id)&lt;br /&gt;
      flash[:success] = flash3&lt;br /&gt;
      ExpertizaLogger.info LoggerMessage.new(controller_name, session[:user].id, 'Student has dropped the topic: ' + params[:topic_id].to_s)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # this function is used to delete a previous signup&lt;br /&gt;
  def delete_signup&lt;br /&gt;
    participant = AssignmentParticipant.find(params[:id])&lt;br /&gt;
    assignment = participant.assignment&lt;br /&gt;
    drop_topic_deadline = assignment.due_dates.find_by(deadline_type_id: 6)&lt;br /&gt;
    # A student who has already submitted work should not be allowed to drop his/her topic!&lt;br /&gt;
    # (A student/team has submitted if participant directory_num is non-null or submitted_hyperlinks is non-null.)&lt;br /&gt;
    # If there is no drop topic deadline, student can drop topic at any time (if all the submissions are deleted)&lt;br /&gt;
    # If there is a drop topic deadline, student cannot drop topic after this deadline.&lt;br /&gt;
    delete_signup_helper(false, participant, assignment, drop_topic_deadline)&lt;br /&gt;
    redirect_to action: 'list', id: params[:id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def delete_signup_as_instructor&lt;br /&gt;
    # find participant using assignment using team and topic ids&lt;br /&gt;
    team = Team.find(params[:id])&lt;br /&gt;
    assignment = Assignment.find(team.parent_id)&lt;br /&gt;
    user = TeamsUser.find_by(team_id: team.id).user&lt;br /&gt;
    participant = AssignmentParticipant.find_by(user_id: user.id, parent_id: assignment.id)&lt;br /&gt;
    drop_topic_deadline = assignment.due_dates.find_by(deadline_type_id: 6)&lt;br /&gt;
    delete_signup_helper(true, participant, assignment, drop_topic_deadline)&lt;br /&gt;
    redirect_to controller: 'assignments', action: 'edit', id: assignment.id&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: signup_as_instructor_action is the only function updated.  All other functions has remained the same.  To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
; Physical Testing&lt;br /&gt;
: &lt;br /&gt;
# Login as instructor&lt;br /&gt;
# Hover on Manage Tab&lt;br /&gt;
# Click on Assignments Tab&lt;br /&gt;
# Click on Edit Button for &amp;quot;OSS project &amp;amp; documentation&amp;quot; assignment&lt;br /&gt;
# Select the Topic Tab&lt;br /&gt;
# Click the Green Check for any topic&lt;br /&gt;
# Enter a student UnityID and click submit&lt;br /&gt;
&lt;br /&gt;
# Login as student&lt;br /&gt;
# Click on OSS project/Writing assignment 2&lt;br /&gt;
# Click on Signup sheet&lt;br /&gt;
# The list must be visible, which indiactes functionality is as before after refactoring list fucntion.&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143318</id>
		<title>CSC/ECE 517 Spring 2022 - E2223. Refactor sign up sheet controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143318"/>
		<updated>2022-03-21T22:59:44Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Peer Review Information ==&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are below:&lt;br /&gt;
* Instructor login: username -&amp;gt; instructor6,  password -&amp;gt; password&lt;br /&gt;
* Student login: username -&amp;gt; student5899,  password -&amp;gt; password&lt;br /&gt;
&lt;br /&gt;
== About Controller == &lt;br /&gt;
The sign up sheet controller &lt;br /&gt;
* Allows an instructor to add/remove topics&lt;br /&gt;
* Allows an instructor to assign/remove students to topics&lt;br /&gt;
* Allows an student to see the list of available topics which can be bid on for given OSS assignment.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
1. Naming is inconsistent.  When used as a verb, “sign up” is two words.  When an adjective or a noun, it should be one word, e.g., “signup_sheet_controller.”  Cf. “sign_up_as_instructor”.  Please make the naming consistent.  Of course, this will result in changes in calling methods as well.&lt;br /&gt;
&lt;br /&gt;
2. Add_signup_topics_staggered does not do anything different from add_signup_topics. Separate functions are needed, because add_signup_topics_staggered needs to make sure that the deadlines are set. [Assignment 1042 has staggered deadlines]&lt;br /&gt;
&lt;br /&gt;
3. Several method names can be improved (including: load_add_signup_topics, list, ad_info etc.)&lt;br /&gt;
&lt;br /&gt;
4. What are differences between signup_as_instructor and signup_as_instructor_action methods? Investigate if they are needed and improve the method names if both are needed. Provide comments as to what each method does.&lt;br /&gt;
&lt;br /&gt;
5. The list method is too long and is sparsely commented. Provide comments and identify if the method can be split or made cleaner by moving code to models or helper methods.&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action has if-else ladder. It can be made more elegant.&lt;br /&gt;
&lt;br /&gt;
7.  Delete_signup and delete_signup_as_instructor have much in common and violate the DRY principle. Refactor.&lt;br /&gt;
&lt;br /&gt;
== Solutions ==&lt;br /&gt;
1. Changed the name of the controller from sign_up_sheet_controller.rb --&amp;gt; signup_sheet_controller.rb. Also changed several method names that had 'sign_up' being used as an adjective or a noun to 'signup'.&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/9e99f56c9f8051fa5ee6b6a4bdf3659ec50852dc&lt;br /&gt;
&lt;br /&gt;
2. Changed the create method to only create a new topic if that topic doesn't already exist. If it does exist, the program flashes an error message and backs out. &lt;br /&gt;
&lt;br /&gt;
3. Used a single update_attributes method in place of the many instance variables.&lt;br /&gt;
&lt;br /&gt;
'''Before'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/9e99f56c9f8051fa5ee6b6a4bdf3659ec50852dc&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/66fc8bc5fc3850639306ad2be79afaa3de1fad70&lt;br /&gt;
def update&lt;br /&gt;
    @topic = SignUpTopic.find(params[:id])&lt;br /&gt;
    if @topic&lt;br /&gt;
      @topic.topic_identifier = params[:topic][:topic_identifier]&lt;br /&gt;
      update_max_choosers @topic&lt;br /&gt;
      @topic.category = params[:topic][:category]&lt;br /&gt;
      @topic.topic_name = params[:topic][:topic_name]&lt;br /&gt;
      @topic.micropayment = params[:topic][:micropayment]&lt;br /&gt;
      @topic.description = params[:topic][:description]&lt;br /&gt;
      @topic.link = params[:topic][:link]&lt;br /&gt;
      @topic.save&lt;br /&gt;
      params[:topic][:topic_name], micropayment: params[:topic][:micropayment], description: params[:topic][:description], link: params[:topic][:link])&lt;br /&gt;
      undo_link(&amp;quot;The topic: \&amp;quot;#{@topic.topic_name}\&amp;quot; has been successfully updated. &amp;quot;)&lt;br /&gt;
    else&lt;br /&gt;
      flash[:error] = &amp;quot;The topic could not be updated.&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    # Akshay - correctly changing the redirection url to topics tab in edit assignment view.&lt;br /&gt;
    redirect_to edit_assignment_path(params[:assignment_id]) + &amp;quot;#tabs-2&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def update&lt;br /&gt;
    @topic = SignUpTopic.find(params[:id])&lt;br /&gt;
    if @topic&lt;br /&gt;
      update_max_choosers @topic&lt;br /&gt;
      updated_max_choosers = @topic.max_choosers&lt;br /&gt;
      @topic.update_attributes(topic_identifier: params[:topic][:topic_identifier], max_choosers: updated_max_choosers, category: params[:topic][:category], topic_name: params[:topic][:topic_name], micropayment: params[:topic][:micropayment], description: params[:topic][:description], link: params[:topic][:link])&lt;br /&gt;
      undo_link(&amp;quot;The topic: \&amp;quot;#{@topic.topic_name}\&amp;quot; has been successfully updated. &amp;quot;)&lt;br /&gt;
    else&lt;br /&gt;
      flash[:error] = &amp;quot;The topic could not be updated.&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    # Akshay - correctly changing the redirection url to topics tab in edit assignment view.&lt;br /&gt;
    redirect_to edit_assignment_path(params[:assignment_id]) + &amp;quot;#tabs-2&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. The requirement that deadlines be submitted is no longer implemented and therefore a separate function for &amp;quot;staggered&amp;quot; is no longer needed.&lt;br /&gt;
&lt;br /&gt;
5. Ad_info was renamed to ads_for_partners_info to give better picture of what function does. &lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/6507f15f6d23f44900465536a91cc6c80f90ad75&lt;br /&gt;
&lt;br /&gt;
6. signup_as_instructor is not needed and has been removed.&lt;br /&gt;
&lt;br /&gt;
7. The list method is broken into 2 functions. The small part of computing signup topics is created. Also comments has been added to understand the functio better.&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/4b7bb6113dfb8984d7aa4dca467b55f67de3c93a&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/bd86f5a4ec8aa02c27a0cd34c85bd21776feca2c&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/56be9eed8ac89632041608947108f87dfbcb28ab&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Refactored the participants variable and improved readability.&lt;br /&gt;
&lt;br /&gt;
'''Before'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@participants = SignedUpTeam.find_team_participants(assignment_id, session[:ip])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip = session[:ip]&lt;br /&gt;
@participants = SignedUpTeam.find_team_participants(@id, ip)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9.  Previously signup_as_instructor_action provided unhelpful feedback to the instructor by only stating if the instructor could/couldn't assign a topic for a student.  The refactored code provides the instructor with the student id of the person that they are assigning, the team that the student is on, and the topic that the instructor is assigning to the team. &lt;br /&gt;
&lt;br /&gt;
'''Before''' &lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
def signup_as_instructor_action&lt;br /&gt;
    user = User.find_by(name: params[:username])&lt;br /&gt;
    if user.nil? # validate invalid user&lt;br /&gt;
      flash[:error] = &amp;quot;That student does not exist!&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      if AssignmentParticipant.exists? user_id: user.id, parent_id: params[:assignment_id]&lt;br /&gt;
        if SignUpSheet.signup_team(params[:assignment_id], user.id, params[:topic_id])&lt;br /&gt;
          flash[:success] = &amp;quot;You have successfully signed up the student for the topic!&amp;quot;&lt;br /&gt;
          ExpertizaLogger.info LoggerMessage.new(controller_name, '', 'Instructor signed up student for topic: ' + params[:topic_id].to_s)&lt;br /&gt;
        else&lt;br /&gt;
          flash[:error] = &amp;quot;The student has already signed up for a topic!&amp;quot;&lt;br /&gt;
          ExpertizaLogger.info LoggerMessage.new(controller_name, '', 'Instructor is signing up a student who already has a topic')&lt;br /&gt;
        end&lt;br /&gt;
      else&lt;br /&gt;
        flash[:error] = &amp;quot;The student is not registered for the assignment!&amp;quot;&lt;br /&gt;
        ExpertizaLogger.info LoggerMessage.new(controller_name, '', 'The student is not registered for the assignment: ' &amp;lt;&amp;lt; user.id)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to controller: 'assignments', action: 'edit', id: params[:assignment_id]&lt;br /&gt;
  end&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After''' &lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
def signup_as_instructor_action&lt;br /&gt;
    #put name of student and team in log&lt;br /&gt;
    # flash name of student and team&lt;br /&gt;
    user = User.find_by(name: params[:username])&lt;br /&gt;
    team = Team.find_team_for_assignment_and_user(params[:assignment_id], user.id).first&lt;br /&gt;
    assignment = Assignment.find(params[:assignment_id])&lt;br /&gt;
    if user.nil? # validate invalid user&lt;br /&gt;
      flash[:error] = user.name + &amp;quot; does not exist!&amp;quot;&lt;br /&gt;
    else #If the user is not null and the student exists then sign up student for topic&lt;br /&gt;
      if AssignmentParticipant.exists? user_id: user.id, parent_id: params[:assignment_id]&lt;br /&gt;
        if SignUpSheet.signup_team(params[:assignment_id], user.id, params[:topic_id])&lt;br /&gt;
          flash[:success] = &amp;quot;You have successfully signed up &amp;quot; + user.name + &amp;quot; on &amp;quot; + team.name + &amp;quot;  for the topic &amp;quot; + params[:topic_id].to_s&lt;br /&gt;
          ExpertizaLogger.info LoggerMessage.new(controller_name, '', 'Instructor signed up ' + user.name + ' on team ' + team.name + ' for topic: ' + params[:topic_id].to_s)&lt;br /&gt;
        else #If the students team already has a topic then cancel the sign up&lt;br /&gt;
          flash[:error] = user.name + &amp;quot; on &amp;quot; + team.name + &amp;quot; has already signed up for a topic!&amp;quot;&lt;br /&gt;
          ExpertizaLogger.info LoggerMessage.new(controller_name, '', 'Instructor is signing up a ' + user.name + 'on ' + team.name + ' who already has a topic')&lt;br /&gt;
        end&lt;br /&gt;
      else #If the student isn't a part of the assignment then cancel the sign up&lt;br /&gt;
        flash[:error] = user.name + &amp;quot; is not registered for the assignment!&amp;quot;&lt;br /&gt;
        ExpertizaLogger.info LoggerMessage.new(controller_name, '', user.name + ' is not registered for the assignment: ' + assignment.name)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to controller: 'assignments', action: 'edit', id: params[:assignment_id]&lt;br /&gt;
  end&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. delete_signup and delete_signup_as_instructor violated the DRY principle due to both functions using identical if/else statements.  To solve this issue, delete_signup_heleper function was created. &lt;br /&gt;
&lt;br /&gt;
'''Before'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def delete_signup&lt;br /&gt;
    participant = AssignmentParticipant.find(params[:id])&lt;br /&gt;
    assignment = participant.assignment&lt;br /&gt;
    drop_topic_deadline = assignment.due_dates.find_by(deadline_type_id: 6)&lt;br /&gt;
    # A student who has already submitted work should not be allowed to drop his/her topic!&lt;br /&gt;
    # (A student/team has submitted if participant directory_num is non-null or submitted_hyperlinks is non-null.)&lt;br /&gt;
    # If there is no drop topic deadline, student can drop topic at any time (if all the submissions are deleted)&lt;br /&gt;
    # If there is a drop topic deadline, student cannot drop topic after this deadline.&lt;br /&gt;
    if !participant.team.submitted_files.empty? or !participant.team.hyperlinks.empty?&lt;br /&gt;
      flash[:error] = &amp;quot;You have already submitted your work, so you are not allowed to drop your topic.&amp;quot;&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Dropping topic for already submitted a work: ' + params[:topic_id].to_s)&lt;br /&gt;
    elsif !drop_topic_deadline.nil? and Time.now &amp;gt; drop_topic_deadline.due_at&lt;br /&gt;
      flash[:error] = &amp;quot;You cannot drop your topic after the drop topic deadline!&amp;quot;&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Dropping topic for ended work: ' + params[:topic_id].to_s)&lt;br /&gt;
    else&lt;br /&gt;
      delete_signup_for_topic(assignment.id, params[:topic_id], session[:user].id)&lt;br /&gt;
      flash[:success] = &amp;quot;You have successfully dropped your topic!&amp;quot;&lt;br /&gt;
      ExpertizaLogger.info LoggerMessage.new(controller_name, session[:user].id, 'Student has dropped the topic: ' + params[:topic_id].to_s)&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to action: 'list', id: params[:id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def delete_signup_as_instructor&lt;br /&gt;
    # find participant using assignment using team and topic ids&lt;br /&gt;
    team = Team.find(params[:id])&lt;br /&gt;
    assignment = Assignment.find(team.parent_id)&lt;br /&gt;
    user = TeamsUser.find_by(team_id: team.id).user&lt;br /&gt;
    participant = AssignmentParticipant.find_by(user_id: user.id, parent_id: assignment.id)&lt;br /&gt;
    drop_topic_deadline = assignment.due_dates.find_by(deadline_type_id: 6)&lt;br /&gt;
    if !participant.team.submitted_files.empty? or !participant.team.hyperlinks.empty?&lt;br /&gt;
      flash[:error] = &amp;quot;The student has already submitted their work, so you are not allowed to remove them.&amp;quot;&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Drop failed for already submitted work: ' + params[:topic_id].to_s)&lt;br /&gt;
    elsif !drop_topic_deadline.nil? and Time.now &amp;gt; drop_topic_deadline.due_at&lt;br /&gt;
      flash[:error] = &amp;quot;You cannot drop a student after the drop topic deadline!&amp;quot;&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Drop failed for ended work: ' + params[:topic_id].to_s)&lt;br /&gt;
    else&lt;br /&gt;
      delete_signup_for_topic(assignment.id, params[:topic_id], participant.user_id)&lt;br /&gt;
      flash[:success] = &amp;quot;You have successfully dropped the student from the topic!&amp;quot;&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Student has been dropped from the topic: ' + params[:topic_id].to_s)&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to controller: 'assignments', action: 'edit', id: assignment.id&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def delete_signup_helper(isInstructor, participant, assignment, drop_topic_deadline)&lt;br /&gt;
    messages = [&amp;quot;You have already submitted your work, so you are not allowed to drop your topic.&amp;quot;,&lt;br /&gt;
                &amp;quot;You cannot drop your topic after the drop topic deadline!&amp;quot;,&lt;br /&gt;
                &amp;quot;You have successfully dropped your topic!&amp;quot;,&lt;br /&gt;
                &amp;quot;The team has already submitted their work, so you are not allowed to remove them.&amp;quot;,&lt;br /&gt;
                &amp;quot;You cannot drop a student after the drop topic deadline!&amp;quot;,&lt;br /&gt;
                &amp;quot;You have successfully dropped the student from the topic!&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
    if isInstructor == false&lt;br /&gt;
      flash1 = messages[0]&lt;br /&gt;
      flash2 = messages[1]&lt;br /&gt;
      flash3 = messages[2]&lt;br /&gt;
      id_param = session[:user]&lt;br /&gt;
    else&lt;br /&gt;
      flash1 = messages[3]&lt;br /&gt;
      flash2 = messages[4]&lt;br /&gt;
      flash3 = messages[5]&lt;br /&gt;
      id_param = participant&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if !participant.team.submitted_files.empty? or !participant.team.hyperlinks.empty?&lt;br /&gt;
      flash[:error] = flash1&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Dropping failed for already submitted a work: ' + params[:topic_id].to_s)&lt;br /&gt;
    elsif !drop_topic_deadline.nil? and Time.now &amp;gt; drop_topic_deadline.due_at&lt;br /&gt;
      flash[:error] = flash2&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Dropping failed for ended work: ' + params[:topic_id].to_s)&lt;br /&gt;
    else&lt;br /&gt;
      delete_signup_for_topic(assignment.id, params[:topic_id], id_param.id)&lt;br /&gt;
      flash[:success] = flash3&lt;br /&gt;
      ExpertizaLogger.info LoggerMessage.new(controller_name, session[:user].id, 'Student has dropped the topic: ' + params[:topic_id].to_s)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # this function is used to delete a previous signup&lt;br /&gt;
  def delete_signup&lt;br /&gt;
    participant = AssignmentParticipant.find(params[:id])&lt;br /&gt;
    assignment = participant.assignment&lt;br /&gt;
    drop_topic_deadline = assignment.due_dates.find_by(deadline_type_id: 6)&lt;br /&gt;
    # A student who has already submitted work should not be allowed to drop his/her topic!&lt;br /&gt;
    # (A student/team has submitted if participant directory_num is non-null or submitted_hyperlinks is non-null.)&lt;br /&gt;
    # If there is no drop topic deadline, student can drop topic at any time (if all the submissions are deleted)&lt;br /&gt;
    # If there is a drop topic deadline, student cannot drop topic after this deadline.&lt;br /&gt;
    delete_signup_helper(false, participant, assignment, drop_topic_deadline)&lt;br /&gt;
    redirect_to action: 'list', id: params[:id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def delete_signup_as_instructor&lt;br /&gt;
    # find participant using assignment using team and topic ids&lt;br /&gt;
    team = Team.find(params[:id])&lt;br /&gt;
    assignment = Assignment.find(team.parent_id)&lt;br /&gt;
    user = TeamsUser.find_by(team_id: team.id).user&lt;br /&gt;
    participant = AssignmentParticipant.find_by(user_id: user.id, parent_id: assignment.id)&lt;br /&gt;
    drop_topic_deadline = assignment.due_dates.find_by(deadline_type_id: 6)&lt;br /&gt;
    delete_signup_helper(true, participant, assignment, drop_topic_deadline)&lt;br /&gt;
    redirect_to controller: 'assignments', action: 'edit', id: assignment.id&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: signup_as_instructor_action is the only function updated.  All other functions has remained the same.  To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
; Physical Testing&lt;br /&gt;
: &lt;br /&gt;
# Login as instructor&lt;br /&gt;
# Hover on Manage Tab&lt;br /&gt;
# Click on Assignments Tab&lt;br /&gt;
# Click on Edit Button for &amp;quot;OSS project &amp;amp; documentation&amp;quot; assignment&lt;br /&gt;
# Select the Topic Tab&lt;br /&gt;
# Click the Green Check for any topic&lt;br /&gt;
# Enter a student UnityID and click submit&lt;br /&gt;
&lt;br /&gt;
# Login as student&lt;br /&gt;
# Click on OSS project/Writing assignment 2&lt;br /&gt;
# Click on Signup sheet&lt;br /&gt;
# The list must be visible, which indiactes functionality is as before after refactoring list fucntion.&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143315</id>
		<title>CSC/ECE 517 Spring 2022 - E2223. Refactor sign up sheet controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143315"/>
		<updated>2022-03-21T22:57:12Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Peer Review Information ==&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are below:&lt;br /&gt;
* Instructor login: username -&amp;gt; instructor6,  password -&amp;gt; password&lt;br /&gt;
* Student login: username -&amp;gt; student5899,  password -&amp;gt; password&lt;br /&gt;
&lt;br /&gt;
== About Controller == &lt;br /&gt;
The sign up sheet controller &lt;br /&gt;
* Allows an instructor to add/remove topics&lt;br /&gt;
* Allows an instructor to assign/remove students to topics&lt;br /&gt;
* Allows an student to see the list of available topics which can be bid on for given OSS assignment.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
1. Naming is inconsistent.  When used as a verb, “sign up” is two words.  When an adjective or a noun, it should be one word, e.g., “signup_sheet_controller.”  Cf. “sign_up_as_instructor”.  Please make the naming consistent.  Of course, this will result in changes in calling methods as well.&lt;br /&gt;
&lt;br /&gt;
2. Add_signup_topics_staggered does not do anything different from add_signup_topics. Separate functions are needed, because add_signup_topics_staggered needs to make sure that the deadlines are set. [Assignment 1042 has staggered deadlines]&lt;br /&gt;
&lt;br /&gt;
3. Several method names can be improved (including: load_add_signup_topics, list, ad_info etc.)&lt;br /&gt;
&lt;br /&gt;
4. What are differences between signup_as_instructor and signup_as_instructor_action methods? Investigate if they are needed and improve the method names if both are needed. Provide comments as to what each method does.&lt;br /&gt;
&lt;br /&gt;
5. The list method is too long and is sparsely commented. Provide comments and identify if the method can be split or made cleaner by moving code to models or helper methods.&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action has if-else ladder. It can be made more elegant.&lt;br /&gt;
&lt;br /&gt;
7.  Delete_signup and delete_signup_as_instructor have much in common and violate the DRY principle. Refactor.&lt;br /&gt;
&lt;br /&gt;
== Solutions ==&lt;br /&gt;
1. Changed the name of the controller from sign_up_sheet_controller.rb --&amp;gt; signup_sheet_controller.rb. Also changed several method names that had 'sign_up' being used as an adjective or a noun to 'signup'.&lt;br /&gt;
https://github.com/expertiza/expertiza/pull/2339/commits/9e99f56c9f8051fa5ee6b6a4bdf3659ec50852dc&lt;br /&gt;
&lt;br /&gt;
2. Changed the create method to only create a new topic if that topic doesn't already exist. If it does exist, the program flashes an error message and backs out. &lt;br /&gt;
&lt;br /&gt;
3. Used a single update_attributes method in place of the many instance variables.&lt;br /&gt;
&lt;br /&gt;
'''Before'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def update&lt;br /&gt;
    @topic = SignUpTopic.find(params[:id])&lt;br /&gt;
    if @topic&lt;br /&gt;
      @topic.topic_identifier = params[:topic][:topic_identifier]&lt;br /&gt;
      update_max_choosers @topic&lt;br /&gt;
      @topic.category = params[:topic][:category]&lt;br /&gt;
      @topic.topic_name = params[:topic][:topic_name]&lt;br /&gt;
      @topic.micropayment = params[:topic][:micropayment]&lt;br /&gt;
      @topic.description = params[:topic][:description]&lt;br /&gt;
      @topic.link = params[:topic][:link]&lt;br /&gt;
      @topic.save&lt;br /&gt;
      params[:topic][:topic_name], micropayment: params[:topic][:micropayment], description: params[:topic][:description], link: params[:topic][:link])&lt;br /&gt;
      undo_link(&amp;quot;The topic: \&amp;quot;#{@topic.topic_name}\&amp;quot; has been successfully updated. &amp;quot;)&lt;br /&gt;
    else&lt;br /&gt;
      flash[:error] = &amp;quot;The topic could not be updated.&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    # Akshay - correctly changing the redirection url to topics tab in edit assignment view.&lt;br /&gt;
    redirect_to edit_assignment_path(params[:assignment_id]) + &amp;quot;#tabs-2&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def update&lt;br /&gt;
    @topic = SignUpTopic.find(params[:id])&lt;br /&gt;
    if @topic&lt;br /&gt;
      update_max_choosers @topic&lt;br /&gt;
      updated_max_choosers = @topic.max_choosers&lt;br /&gt;
      @topic.update_attributes(topic_identifier: params[:topic][:topic_identifier], max_choosers: updated_max_choosers, category: params[:topic][:category], topic_name: params[:topic][:topic_name], micropayment: params[:topic][:micropayment], description: params[:topic][:description], link: params[:topic][:link])&lt;br /&gt;
      undo_link(&amp;quot;The topic: \&amp;quot;#{@topic.topic_name}\&amp;quot; has been successfully updated. &amp;quot;)&lt;br /&gt;
    else&lt;br /&gt;
      flash[:error] = &amp;quot;The topic could not be updated.&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    # Akshay - correctly changing the redirection url to topics tab in edit assignment view.&lt;br /&gt;
    redirect_to edit_assignment_path(params[:assignment_id]) + &amp;quot;#tabs-2&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. The requirement that deadlines be submitted is no longer implemented and therefore a separate function for &amp;quot;staggered&amp;quot; is no longer needed.&lt;br /&gt;
&lt;br /&gt;
5. Ad_info was renamed to ads_for_partners_info to give better picture of what function does. &lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/6507f15f6d23f44900465536a91cc6c80f90ad75&lt;br /&gt;
&lt;br /&gt;
6. signup_as_instructor is not needed and has been removed.&lt;br /&gt;
&lt;br /&gt;
7. The list method is broken into 2 functions. The small part of computing signup topics is created. Also comments has been added to understand the functio better.&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/4b7bb6113dfb8984d7aa4dca467b55f67de3c93a&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/bd86f5a4ec8aa02c27a0cd34c85bd21776feca2c&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/56be9eed8ac89632041608947108f87dfbcb28ab&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Refactored the participants variable and improved readability.&lt;br /&gt;
&lt;br /&gt;
'''Before'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@participants = SignedUpTeam.find_team_participants(assignment_id, session[:ip])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip = session[:ip]&lt;br /&gt;
@participants = SignedUpTeam.find_team_participants(@id, ip)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9.  Previously signup_as_instructor_action provided unhelpful feedback to the instructor by only stating if the instructor could/couldn't assign a topic for a student.  The refactored code provides the instructor with the student id of the person that they are assigning, the team that the student is on, and the topic that the instructor is assigning to the team. &lt;br /&gt;
&lt;br /&gt;
'''Before''' &lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
def signup_as_instructor_action&lt;br /&gt;
    user = User.find_by(name: params[:username])&lt;br /&gt;
    if user.nil? # validate invalid user&lt;br /&gt;
      flash[:error] = &amp;quot;That student does not exist!&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      if AssignmentParticipant.exists? user_id: user.id, parent_id: params[:assignment_id]&lt;br /&gt;
        if SignUpSheet.signup_team(params[:assignment_id], user.id, params[:topic_id])&lt;br /&gt;
          flash[:success] = &amp;quot;You have successfully signed up the student for the topic!&amp;quot;&lt;br /&gt;
          ExpertizaLogger.info LoggerMessage.new(controller_name, '', 'Instructor signed up student for topic: ' + params[:topic_id].to_s)&lt;br /&gt;
        else&lt;br /&gt;
          flash[:error] = &amp;quot;The student has already signed up for a topic!&amp;quot;&lt;br /&gt;
          ExpertizaLogger.info LoggerMessage.new(controller_name, '', 'Instructor is signing up a student who already has a topic')&lt;br /&gt;
        end&lt;br /&gt;
      else&lt;br /&gt;
        flash[:error] = &amp;quot;The student is not registered for the assignment!&amp;quot;&lt;br /&gt;
        ExpertizaLogger.info LoggerMessage.new(controller_name, '', 'The student is not registered for the assignment: ' &amp;lt;&amp;lt; user.id)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to controller: 'assignments', action: 'edit', id: params[:assignment_id]&lt;br /&gt;
  end&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After''' &lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
def signup_as_instructor_action&lt;br /&gt;
    #put name of student and team in log&lt;br /&gt;
    # flash name of student and team&lt;br /&gt;
    user = User.find_by(name: params[:username])&lt;br /&gt;
    team = Team.find_team_for_assignment_and_user(params[:assignment_id], user.id).first&lt;br /&gt;
    assignment = Assignment.find(params[:assignment_id])&lt;br /&gt;
    if user.nil? # validate invalid user&lt;br /&gt;
      flash[:error] = user.name + &amp;quot; does not exist!&amp;quot;&lt;br /&gt;
    else #If the user is not null and the student exists then sign up student for topic&lt;br /&gt;
      if AssignmentParticipant.exists? user_id: user.id, parent_id: params[:assignment_id]&lt;br /&gt;
        if SignUpSheet.signup_team(params[:assignment_id], user.id, params[:topic_id])&lt;br /&gt;
          flash[:success] = &amp;quot;You have successfully signed up &amp;quot; + user.name + &amp;quot; on &amp;quot; + team.name + &amp;quot;  for the topic &amp;quot; + params[:topic_id].to_s&lt;br /&gt;
          ExpertizaLogger.info LoggerMessage.new(controller_name, '', 'Instructor signed up ' + user.name + ' on team ' + team.name + ' for topic: ' + params[:topic_id].to_s)&lt;br /&gt;
        else #If the students team already has a topic then cancel the sign up&lt;br /&gt;
          flash[:error] = user.name + &amp;quot; on &amp;quot; + team.name + &amp;quot; has already signed up for a topic!&amp;quot;&lt;br /&gt;
          ExpertizaLogger.info LoggerMessage.new(controller_name, '', 'Instructor is signing up a ' + user.name + 'on ' + team.name + ' who already has a topic')&lt;br /&gt;
        end&lt;br /&gt;
      else #If the student isn't a part of the assignment then cancel the sign up&lt;br /&gt;
        flash[:error] = user.name + &amp;quot; is not registered for the assignment!&amp;quot;&lt;br /&gt;
        ExpertizaLogger.info LoggerMessage.new(controller_name, '', user.name + ' is not registered for the assignment: ' + assignment.name)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to controller: 'assignments', action: 'edit', id: params[:assignment_id]&lt;br /&gt;
  end&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. delete_signup and delete_signup_as_instructor violated the DRY principle due to both functions using identical if/else statements.  To solve this issue, delete_signup_heleper function was created. &lt;br /&gt;
&lt;br /&gt;
'''Before'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def delete_signup&lt;br /&gt;
    participant = AssignmentParticipant.find(params[:id])&lt;br /&gt;
    assignment = participant.assignment&lt;br /&gt;
    drop_topic_deadline = assignment.due_dates.find_by(deadline_type_id: 6)&lt;br /&gt;
    # A student who has already submitted work should not be allowed to drop his/her topic!&lt;br /&gt;
    # (A student/team has submitted if participant directory_num is non-null or submitted_hyperlinks is non-null.)&lt;br /&gt;
    # If there is no drop topic deadline, student can drop topic at any time (if all the submissions are deleted)&lt;br /&gt;
    # If there is a drop topic deadline, student cannot drop topic after this deadline.&lt;br /&gt;
    if !participant.team.submitted_files.empty? or !participant.team.hyperlinks.empty?&lt;br /&gt;
      flash[:error] = &amp;quot;You have already submitted your work, so you are not allowed to drop your topic.&amp;quot;&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Dropping topic for already submitted a work: ' + params[:topic_id].to_s)&lt;br /&gt;
    elsif !drop_topic_deadline.nil? and Time.now &amp;gt; drop_topic_deadline.due_at&lt;br /&gt;
      flash[:error] = &amp;quot;You cannot drop your topic after the drop topic deadline!&amp;quot;&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Dropping topic for ended work: ' + params[:topic_id].to_s)&lt;br /&gt;
    else&lt;br /&gt;
      delete_signup_for_topic(assignment.id, params[:topic_id], session[:user].id)&lt;br /&gt;
      flash[:success] = &amp;quot;You have successfully dropped your topic!&amp;quot;&lt;br /&gt;
      ExpertizaLogger.info LoggerMessage.new(controller_name, session[:user].id, 'Student has dropped the topic: ' + params[:topic_id].to_s)&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to action: 'list', id: params[:id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def delete_signup_as_instructor&lt;br /&gt;
    # find participant using assignment using team and topic ids&lt;br /&gt;
    team = Team.find(params[:id])&lt;br /&gt;
    assignment = Assignment.find(team.parent_id)&lt;br /&gt;
    user = TeamsUser.find_by(team_id: team.id).user&lt;br /&gt;
    participant = AssignmentParticipant.find_by(user_id: user.id, parent_id: assignment.id)&lt;br /&gt;
    drop_topic_deadline = assignment.due_dates.find_by(deadline_type_id: 6)&lt;br /&gt;
    if !participant.team.submitted_files.empty? or !participant.team.hyperlinks.empty?&lt;br /&gt;
      flash[:error] = &amp;quot;The student has already submitted their work, so you are not allowed to remove them.&amp;quot;&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Drop failed for already submitted work: ' + params[:topic_id].to_s)&lt;br /&gt;
    elsif !drop_topic_deadline.nil? and Time.now &amp;gt; drop_topic_deadline.due_at&lt;br /&gt;
      flash[:error] = &amp;quot;You cannot drop a student after the drop topic deadline!&amp;quot;&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Drop failed for ended work: ' + params[:topic_id].to_s)&lt;br /&gt;
    else&lt;br /&gt;
      delete_signup_for_topic(assignment.id, params[:topic_id], participant.user_id)&lt;br /&gt;
      flash[:success] = &amp;quot;You have successfully dropped the student from the topic!&amp;quot;&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Student has been dropped from the topic: ' + params[:topic_id].to_s)&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to controller: 'assignments', action: 'edit', id: assignment.id&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def delete_signup_helper(isInstructor, participant, assignment, drop_topic_deadline)&lt;br /&gt;
    messages = [&amp;quot;You have already submitted your work, so you are not allowed to drop your topic.&amp;quot;,&lt;br /&gt;
                &amp;quot;You cannot drop your topic after the drop topic deadline!&amp;quot;,&lt;br /&gt;
                &amp;quot;You have successfully dropped your topic!&amp;quot;,&lt;br /&gt;
                &amp;quot;The team has already submitted their work, so you are not allowed to remove them.&amp;quot;,&lt;br /&gt;
                &amp;quot;You cannot drop a student after the drop topic deadline!&amp;quot;,&lt;br /&gt;
                &amp;quot;You have successfully dropped the student from the topic!&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
    if isInstructor == false&lt;br /&gt;
      flash1 = messages[0]&lt;br /&gt;
      flash2 = messages[1]&lt;br /&gt;
      flash3 = messages[2]&lt;br /&gt;
      id_param = session[:user]&lt;br /&gt;
    else&lt;br /&gt;
      flash1 = messages[3]&lt;br /&gt;
      flash2 = messages[4]&lt;br /&gt;
      flash3 = messages[5]&lt;br /&gt;
      id_param = participant&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if !participant.team.submitted_files.empty? or !participant.team.hyperlinks.empty?&lt;br /&gt;
      flash[:error] = flash1&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Dropping failed for already submitted a work: ' + params[:topic_id].to_s)&lt;br /&gt;
    elsif !drop_topic_deadline.nil? and Time.now &amp;gt; drop_topic_deadline.due_at&lt;br /&gt;
      flash[:error] = flash2&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Dropping failed for ended work: ' + params[:topic_id].to_s)&lt;br /&gt;
    else&lt;br /&gt;
      delete_signup_for_topic(assignment.id, params[:topic_id], id_param.id)&lt;br /&gt;
      flash[:success] = flash3&lt;br /&gt;
      ExpertizaLogger.info LoggerMessage.new(controller_name, session[:user].id, 'Student has dropped the topic: ' + params[:topic_id].to_s)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # this function is used to delete a previous signup&lt;br /&gt;
  def delete_signup&lt;br /&gt;
    participant = AssignmentParticipant.find(params[:id])&lt;br /&gt;
    assignment = participant.assignment&lt;br /&gt;
    drop_topic_deadline = assignment.due_dates.find_by(deadline_type_id: 6)&lt;br /&gt;
    # A student who has already submitted work should not be allowed to drop his/her topic!&lt;br /&gt;
    # (A student/team has submitted if participant directory_num is non-null or submitted_hyperlinks is non-null.)&lt;br /&gt;
    # If there is no drop topic deadline, student can drop topic at any time (if all the submissions are deleted)&lt;br /&gt;
    # If there is a drop topic deadline, student cannot drop topic after this deadline.&lt;br /&gt;
    delete_signup_helper(false, participant, assignment, drop_topic_deadline)&lt;br /&gt;
    redirect_to action: 'list', id: params[:id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def delete_signup_as_instructor&lt;br /&gt;
    # find participant using assignment using team and topic ids&lt;br /&gt;
    team = Team.find(params[:id])&lt;br /&gt;
    assignment = Assignment.find(team.parent_id)&lt;br /&gt;
    user = TeamsUser.find_by(team_id: team.id).user&lt;br /&gt;
    participant = AssignmentParticipant.find_by(user_id: user.id, parent_id: assignment.id)&lt;br /&gt;
    drop_topic_deadline = assignment.due_dates.find_by(deadline_type_id: 6)&lt;br /&gt;
    delete_signup_helper(true, participant, assignment, drop_topic_deadline)&lt;br /&gt;
    redirect_to controller: 'assignments', action: 'edit', id: assignment.id&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: signup_as_instructor_action is the only function updated.  All other functions has remained the same.  To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
; Physical Testing&lt;br /&gt;
: &lt;br /&gt;
# Login as instructor&lt;br /&gt;
# Hover on Manage Tab&lt;br /&gt;
# Click on Assignments Tab&lt;br /&gt;
# Click on Edit Button for &amp;quot;OSS project &amp;amp; documentation&amp;quot; assignment&lt;br /&gt;
# Select the Topic Tab&lt;br /&gt;
# Click the Green Check for any topic&lt;br /&gt;
# Enter a student UnityID and click submit&lt;br /&gt;
&lt;br /&gt;
# Login as student&lt;br /&gt;
# Click on OSS project/Writing assignment 2&lt;br /&gt;
# Click on Signup sheet&lt;br /&gt;
# The list must be visible, which indiactes functionality is as before after refactoring list fucntion.&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143314</id>
		<title>CSC/ECE 517 Spring 2022 - E2223. Refactor sign up sheet controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2022_-_E2223._Refactor_sign_up_sheet_controller.rb&amp;diff=143314"/>
		<updated>2022-03-21T22:57:01Z</updated>

		<summary type="html">&lt;p&gt;Jkini: /* Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the information regarding the changes made for the E2223 OSS assignment for Spring 2022, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Expertiza is a open source project developed on Ruby on Rails.  This web application is maintained by the student and faculty at NC State.  This application gives complete control to the instructor to maintain the assignments in their class.  With multiple functionalities such as adding topics, creating groups, and peer reviews, Expertiza is a well developed application that can handle all types of assignments.  To learn more about the full functionality Expertiza has to offer, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Peer Review Information ==&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are below:&lt;br /&gt;
* Instructor login: username -&amp;gt; instructor6,  password -&amp;gt; password&lt;br /&gt;
* Student login: username -&amp;gt; student5899,  password -&amp;gt; password&lt;br /&gt;
&lt;br /&gt;
== About Controller == &lt;br /&gt;
The sign up sheet controller &lt;br /&gt;
* Allows an instructor to add/remove topics&lt;br /&gt;
* Allows an instructor to assign/remove students to topics&lt;br /&gt;
* Allows an student to see the list of available topics which can be bid on for given OSS assignment.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
1. Naming is inconsistent.  When used as a verb, “sign up” is two words.  When an adjective or a noun, it should be one word, e.g., “signup_sheet_controller.”  Cf. “sign_up_as_instructor”.  Please make the naming consistent.  Of course, this will result in changes in calling methods as well.&lt;br /&gt;
&lt;br /&gt;
2. Add_signup_topics_staggered does not do anything different from add_signup_topics. Separate functions are needed, because add_signup_topics_staggered needs to make sure that the deadlines are set. [Assignment 1042 has staggered deadlines]&lt;br /&gt;
&lt;br /&gt;
3. Several method names can be improved (including: load_add_signup_topics, list, ad_info etc.)&lt;br /&gt;
&lt;br /&gt;
4. What are differences between signup_as_instructor and signup_as_instructor_action methods? Investigate if they are needed and improve the method names if both are needed. Provide comments as to what each method does.&lt;br /&gt;
&lt;br /&gt;
5. The list method is too long and is sparsely commented. Provide comments and identify if the method can be split or made cleaner by moving code to models or helper methods.&lt;br /&gt;
&lt;br /&gt;
6. Signup_as_instructor_action has if-else ladder. It can be made more elegant.&lt;br /&gt;
&lt;br /&gt;
7.  Delete_signup and delete_signup_as_instructor have much in common and violate the DRY principle. Refactor.&lt;br /&gt;
&lt;br /&gt;
== Solutions ==&lt;br /&gt;
1. Changed the name of the controller from sign_up_sheet_controller.rb --&amp;gt; signup_sheet_controller.rb. Also changed several method names that had 'sign_up' being used as an adjective or a noun to 'signup'.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/pull/2339/commits/9e99f56c9f8051fa5ee6b6a4bdf3659ec50852dc&lt;br /&gt;
&lt;br /&gt;
2. Changed the create method to only create a new topic if that topic doesn't already exist. If it does exist, the program flashes an error message and backs out. &lt;br /&gt;
&lt;br /&gt;
3. Used a single update_attributes method in place of the many instance variables.&lt;br /&gt;
&lt;br /&gt;
'''Before'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def update&lt;br /&gt;
    @topic = SignUpTopic.find(params[:id])&lt;br /&gt;
    if @topic&lt;br /&gt;
      @topic.topic_identifier = params[:topic][:topic_identifier]&lt;br /&gt;
      update_max_choosers @topic&lt;br /&gt;
      @topic.category = params[:topic][:category]&lt;br /&gt;
      @topic.topic_name = params[:topic][:topic_name]&lt;br /&gt;
      @topic.micropayment = params[:topic][:micropayment]&lt;br /&gt;
      @topic.description = params[:topic][:description]&lt;br /&gt;
      @topic.link = params[:topic][:link]&lt;br /&gt;
      @topic.save&lt;br /&gt;
      params[:topic][:topic_name], micropayment: params[:topic][:micropayment], description: params[:topic][:description], link: params[:topic][:link])&lt;br /&gt;
      undo_link(&amp;quot;The topic: \&amp;quot;#{@topic.topic_name}\&amp;quot; has been successfully updated. &amp;quot;)&lt;br /&gt;
    else&lt;br /&gt;
      flash[:error] = &amp;quot;The topic could not be updated.&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    # Akshay - correctly changing the redirection url to topics tab in edit assignment view.&lt;br /&gt;
    redirect_to edit_assignment_path(params[:assignment_id]) + &amp;quot;#tabs-2&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def update&lt;br /&gt;
    @topic = SignUpTopic.find(params[:id])&lt;br /&gt;
    if @topic&lt;br /&gt;
      update_max_choosers @topic&lt;br /&gt;
      updated_max_choosers = @topic.max_choosers&lt;br /&gt;
      @topic.update_attributes(topic_identifier: params[:topic][:topic_identifier], max_choosers: updated_max_choosers, category: params[:topic][:category], topic_name: params[:topic][:topic_name], micropayment: params[:topic][:micropayment], description: params[:topic][:description], link: params[:topic][:link])&lt;br /&gt;
      undo_link(&amp;quot;The topic: \&amp;quot;#{@topic.topic_name}\&amp;quot; has been successfully updated. &amp;quot;)&lt;br /&gt;
    else&lt;br /&gt;
      flash[:error] = &amp;quot;The topic could not be updated.&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    # Akshay - correctly changing the redirection url to topics tab in edit assignment view.&lt;br /&gt;
    redirect_to edit_assignment_path(params[:assignment_id]) + &amp;quot;#tabs-2&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. The requirement that deadlines be submitted is no longer implemented and therefore a separate function for &amp;quot;staggered&amp;quot; is no longer needed.&lt;br /&gt;
&lt;br /&gt;
5. Ad_info was renamed to ads_for_partners_info to give better picture of what function does. &lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/6507f15f6d23f44900465536a91cc6c80f90ad75&lt;br /&gt;
&lt;br /&gt;
6. signup_as_instructor is not needed and has been removed.&lt;br /&gt;
&lt;br /&gt;
7. The list method is broken into 2 functions. The small part of computing signup topics is created. Also comments has been added to understand the functio better.&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/4b7bb6113dfb8984d7aa4dca467b55f67de3c93a&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/bd86f5a4ec8aa02c27a0cd34c85bd21776feca2c&lt;br /&gt;
https://github.com/palvitgarg99/expertiza/commit/56be9eed8ac89632041608947108f87dfbcb28ab&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Refactored the participants variable and improved readability.&lt;br /&gt;
&lt;br /&gt;
'''Before'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@participants = SignedUpTeam.find_team_participants(assignment_id, session[:ip])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip = session[:ip]&lt;br /&gt;
@participants = SignedUpTeam.find_team_participants(@id, ip)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9.  Previously signup_as_instructor_action provided unhelpful feedback to the instructor by only stating if the instructor could/couldn't assign a topic for a student.  The refactored code provides the instructor with the student id of the person that they are assigning, the team that the student is on, and the topic that the instructor is assigning to the team. &lt;br /&gt;
&lt;br /&gt;
'''Before''' &lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
def signup_as_instructor_action&lt;br /&gt;
    user = User.find_by(name: params[:username])&lt;br /&gt;
    if user.nil? # validate invalid user&lt;br /&gt;
      flash[:error] = &amp;quot;That student does not exist!&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      if AssignmentParticipant.exists? user_id: user.id, parent_id: params[:assignment_id]&lt;br /&gt;
        if SignUpSheet.signup_team(params[:assignment_id], user.id, params[:topic_id])&lt;br /&gt;
          flash[:success] = &amp;quot;You have successfully signed up the student for the topic!&amp;quot;&lt;br /&gt;
          ExpertizaLogger.info LoggerMessage.new(controller_name, '', 'Instructor signed up student for topic: ' + params[:topic_id].to_s)&lt;br /&gt;
        else&lt;br /&gt;
          flash[:error] = &amp;quot;The student has already signed up for a topic!&amp;quot;&lt;br /&gt;
          ExpertizaLogger.info LoggerMessage.new(controller_name, '', 'Instructor is signing up a student who already has a topic')&lt;br /&gt;
        end&lt;br /&gt;
      else&lt;br /&gt;
        flash[:error] = &amp;quot;The student is not registered for the assignment!&amp;quot;&lt;br /&gt;
        ExpertizaLogger.info LoggerMessage.new(controller_name, '', 'The student is not registered for the assignment: ' &amp;lt;&amp;lt; user.id)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to controller: 'assignments', action: 'edit', id: params[:assignment_id]&lt;br /&gt;
  end&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After''' &lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
def signup_as_instructor_action&lt;br /&gt;
    #put name of student and team in log&lt;br /&gt;
    # flash name of student and team&lt;br /&gt;
    user = User.find_by(name: params[:username])&lt;br /&gt;
    team = Team.find_team_for_assignment_and_user(params[:assignment_id], user.id).first&lt;br /&gt;
    assignment = Assignment.find(params[:assignment_id])&lt;br /&gt;
    if user.nil? # validate invalid user&lt;br /&gt;
      flash[:error] = user.name + &amp;quot; does not exist!&amp;quot;&lt;br /&gt;
    else #If the user is not null and the student exists then sign up student for topic&lt;br /&gt;
      if AssignmentParticipant.exists? user_id: user.id, parent_id: params[:assignment_id]&lt;br /&gt;
        if SignUpSheet.signup_team(params[:assignment_id], user.id, params[:topic_id])&lt;br /&gt;
          flash[:success] = &amp;quot;You have successfully signed up &amp;quot; + user.name + &amp;quot; on &amp;quot; + team.name + &amp;quot;  for the topic &amp;quot; + params[:topic_id].to_s&lt;br /&gt;
          ExpertizaLogger.info LoggerMessage.new(controller_name, '', 'Instructor signed up ' + user.name + ' on team ' + team.name + ' for topic: ' + params[:topic_id].to_s)&lt;br /&gt;
        else #If the students team already has a topic then cancel the sign up&lt;br /&gt;
          flash[:error] = user.name + &amp;quot; on &amp;quot; + team.name + &amp;quot; has already signed up for a topic!&amp;quot;&lt;br /&gt;
          ExpertizaLogger.info LoggerMessage.new(controller_name, '', 'Instructor is signing up a ' + user.name + 'on ' + team.name + ' who already has a topic')&lt;br /&gt;
        end&lt;br /&gt;
      else #If the student isn't a part of the assignment then cancel the sign up&lt;br /&gt;
        flash[:error] = user.name + &amp;quot; is not registered for the assignment!&amp;quot;&lt;br /&gt;
        ExpertizaLogger.info LoggerMessage.new(controller_name, '', user.name + ' is not registered for the assignment: ' + assignment.name)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to controller: 'assignments', action: 'edit', id: params[:assignment_id]&lt;br /&gt;
  end&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. delete_signup and delete_signup_as_instructor violated the DRY principle due to both functions using identical if/else statements.  To solve this issue, delete_signup_heleper function was created. &lt;br /&gt;
&lt;br /&gt;
'''Before'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def delete_signup&lt;br /&gt;
    participant = AssignmentParticipant.find(params[:id])&lt;br /&gt;
    assignment = participant.assignment&lt;br /&gt;
    drop_topic_deadline = assignment.due_dates.find_by(deadline_type_id: 6)&lt;br /&gt;
    # A student who has already submitted work should not be allowed to drop his/her topic!&lt;br /&gt;
    # (A student/team has submitted if participant directory_num is non-null or submitted_hyperlinks is non-null.)&lt;br /&gt;
    # If there is no drop topic deadline, student can drop topic at any time (if all the submissions are deleted)&lt;br /&gt;
    # If there is a drop topic deadline, student cannot drop topic after this deadline.&lt;br /&gt;
    if !participant.team.submitted_files.empty? or !participant.team.hyperlinks.empty?&lt;br /&gt;
      flash[:error] = &amp;quot;You have already submitted your work, so you are not allowed to drop your topic.&amp;quot;&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Dropping topic for already submitted a work: ' + params[:topic_id].to_s)&lt;br /&gt;
    elsif !drop_topic_deadline.nil? and Time.now &amp;gt; drop_topic_deadline.due_at&lt;br /&gt;
      flash[:error] = &amp;quot;You cannot drop your topic after the drop topic deadline!&amp;quot;&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Dropping topic for ended work: ' + params[:topic_id].to_s)&lt;br /&gt;
    else&lt;br /&gt;
      delete_signup_for_topic(assignment.id, params[:topic_id], session[:user].id)&lt;br /&gt;
      flash[:success] = &amp;quot;You have successfully dropped your topic!&amp;quot;&lt;br /&gt;
      ExpertizaLogger.info LoggerMessage.new(controller_name, session[:user].id, 'Student has dropped the topic: ' + params[:topic_id].to_s)&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to action: 'list', id: params[:id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def delete_signup_as_instructor&lt;br /&gt;
    # find participant using assignment using team and topic ids&lt;br /&gt;
    team = Team.find(params[:id])&lt;br /&gt;
    assignment = Assignment.find(team.parent_id)&lt;br /&gt;
    user = TeamsUser.find_by(team_id: team.id).user&lt;br /&gt;
    participant = AssignmentParticipant.find_by(user_id: user.id, parent_id: assignment.id)&lt;br /&gt;
    drop_topic_deadline = assignment.due_dates.find_by(deadline_type_id: 6)&lt;br /&gt;
    if !participant.team.submitted_files.empty? or !participant.team.hyperlinks.empty?&lt;br /&gt;
      flash[:error] = &amp;quot;The student has already submitted their work, so you are not allowed to remove them.&amp;quot;&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Drop failed for already submitted work: ' + params[:topic_id].to_s)&lt;br /&gt;
    elsif !drop_topic_deadline.nil? and Time.now &amp;gt; drop_topic_deadline.due_at&lt;br /&gt;
      flash[:error] = &amp;quot;You cannot drop a student after the drop topic deadline!&amp;quot;&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Drop failed for ended work: ' + params[:topic_id].to_s)&lt;br /&gt;
    else&lt;br /&gt;
      delete_signup_for_topic(assignment.id, params[:topic_id], participant.user_id)&lt;br /&gt;
      flash[:success] = &amp;quot;You have successfully dropped the student from the topic!&amp;quot;&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Student has been dropped from the topic: ' + params[:topic_id].to_s)&lt;br /&gt;
    end&lt;br /&gt;
    redirect_to controller: 'assignments', action: 'edit', id: assignment.id&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def delete_signup_helper(isInstructor, participant, assignment, drop_topic_deadline)&lt;br /&gt;
    messages = [&amp;quot;You have already submitted your work, so you are not allowed to drop your topic.&amp;quot;,&lt;br /&gt;
                &amp;quot;You cannot drop your topic after the drop topic deadline!&amp;quot;,&lt;br /&gt;
                &amp;quot;You have successfully dropped your topic!&amp;quot;,&lt;br /&gt;
                &amp;quot;The team has already submitted their work, so you are not allowed to remove them.&amp;quot;,&lt;br /&gt;
                &amp;quot;You cannot drop a student after the drop topic deadline!&amp;quot;,&lt;br /&gt;
                &amp;quot;You have successfully dropped the student from the topic!&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
    if isInstructor == false&lt;br /&gt;
      flash1 = messages[0]&lt;br /&gt;
      flash2 = messages[1]&lt;br /&gt;
      flash3 = messages[2]&lt;br /&gt;
      id_param = session[:user]&lt;br /&gt;
    else&lt;br /&gt;
      flash1 = messages[3]&lt;br /&gt;
      flash2 = messages[4]&lt;br /&gt;
      flash3 = messages[5]&lt;br /&gt;
      id_param = participant&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if !participant.team.submitted_files.empty? or !participant.team.hyperlinks.empty?&lt;br /&gt;
      flash[:error] = flash1&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Dropping failed for already submitted a work: ' + params[:topic_id].to_s)&lt;br /&gt;
    elsif !drop_topic_deadline.nil? and Time.now &amp;gt; drop_topic_deadline.due_at&lt;br /&gt;
      flash[:error] = flash2&lt;br /&gt;
      ExpertizaLogger.error LoggerMessage.new(controller_name, session[:user].id, 'Dropping failed for ended work: ' + params[:topic_id].to_s)&lt;br /&gt;
    else&lt;br /&gt;
      delete_signup_for_topic(assignment.id, params[:topic_id], id_param.id)&lt;br /&gt;
      flash[:success] = flash3&lt;br /&gt;
      ExpertizaLogger.info LoggerMessage.new(controller_name, session[:user].id, 'Student has dropped the topic: ' + params[:topic_id].to_s)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # this function is used to delete a previous signup&lt;br /&gt;
  def delete_signup&lt;br /&gt;
    participant = AssignmentParticipant.find(params[:id])&lt;br /&gt;
    assignment = participant.assignment&lt;br /&gt;
    drop_topic_deadline = assignment.due_dates.find_by(deadline_type_id: 6)&lt;br /&gt;
    # A student who has already submitted work should not be allowed to drop his/her topic!&lt;br /&gt;
    # (A student/team has submitted if participant directory_num is non-null or submitted_hyperlinks is non-null.)&lt;br /&gt;
    # If there is no drop topic deadline, student can drop topic at any time (if all the submissions are deleted)&lt;br /&gt;
    # If there is a drop topic deadline, student cannot drop topic after this deadline.&lt;br /&gt;
    delete_signup_helper(false, participant, assignment, drop_topic_deadline)&lt;br /&gt;
    redirect_to action: 'list', id: params[:id]&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def delete_signup_as_instructor&lt;br /&gt;
    # find participant using assignment using team and topic ids&lt;br /&gt;
    team = Team.find(params[:id])&lt;br /&gt;
    assignment = Assignment.find(team.parent_id)&lt;br /&gt;
    user = TeamsUser.find_by(team_id: team.id).user&lt;br /&gt;
    participant = AssignmentParticipant.find_by(user_id: user.id, parent_id: assignment.id)&lt;br /&gt;
    drop_topic_deadline = assignment.due_dates.find_by(deadline_type_id: 6)&lt;br /&gt;
    delete_signup_helper(true, participant, assignment, drop_topic_deadline)&lt;br /&gt;
    redirect_to controller: 'assignments', action: 'edit', id: assignment.id&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
; RSpec &lt;br /&gt;
: signup_as_instructor_action is the only function updated.  All other functions has remained the same.  To run the spec file, run: &lt;br /&gt;
: rspec spec/controllers/signup_sheet_controller_spec.rb&lt;br /&gt;
; Physical Testing&lt;br /&gt;
: &lt;br /&gt;
# Login as instructor&lt;br /&gt;
# Hover on Manage Tab&lt;br /&gt;
# Click on Assignments Tab&lt;br /&gt;
# Click on Edit Button for &amp;quot;OSS project &amp;amp; documentation&amp;quot; assignment&lt;br /&gt;
# Select the Topic Tab&lt;br /&gt;
# Click the Green Check for any topic&lt;br /&gt;
# Enter a student UnityID and click submit&lt;br /&gt;
&lt;br /&gt;
# Login as student&lt;br /&gt;
# Click on OSS project/Writing assignment 2&lt;br /&gt;
# Click on Signup sheet&lt;br /&gt;
# The list must be visible, which indiactes functionality is as before after refactoring list fucntion.&lt;/div&gt;</summary>
		<author><name>Jkini</name></author>
	</entry>
</feed>