<?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=Sdanda</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=Sdanda"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Sdanda"/>
	<updated>2026-05-06T09:57:49Z</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_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=150166</id>
		<title>CSC/ECE 517 Spring 2023 - E2339. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb (Project 4)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=150166"/>
		<updated>2023-04-25T23:10:49Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* Design Strategy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla&lt;br /&gt;
* PR Request:- https://github.com/expertiza/reimplementation-back-end/pull/34&lt;br /&gt;
* Project Board:- https://github.com/users/surya-prakash-susarla/projects/1&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to reimplement the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to reimplement the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation.&lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* Thorough RSpec tests are required for the reimplemented models. &lt;br /&gt;
* Change all references of sign_up_teams to signed_up_teams.&lt;br /&gt;
* Fix all code review comments.&lt;br /&gt;
* There is no designated waitlist model to handle scenarios regarding waitlisting, upgrading and handling multiple registrations.&lt;br /&gt;
* Some methods have readability concerns that needs to be refactored.&lt;br /&gt;
* There are ambiguous class and instance methods that can be optimized for better reusability.&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into signup_topic.rb and waitlist.rb.&lt;br /&gt;
* In signed_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| destroy || Implemented || It is responsible for deleting the team from the table and delegating any changes in topic.&lt;br /&gt;
|-&lt;br /&gt;
| get_team_participants || Implemented || It is responsible to get participants in the team signed up for a given topic.&lt;br /&gt;
|-&lt;br /&gt;
| create_signed_up_team || Implemented || It is responsible for creating a SignedUpTeam instance with given topic_id and team_id if topic is available.&lt;br /&gt;
|}&lt;br /&gt;
* Add necessary schema migrations for backward compatibility. &lt;br /&gt;
* In signup_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| destroy_topic || Implemented || It is used to destroy topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || Implemented || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| get_team_participants || Implemented || It is used to fetch participants of the team assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_filled_slots || Implemented || It is used to return the number of slots filled for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_available_slots || Implemented || It is used to return the number of slots available for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| release_team || Implemented || It is used to promote 1 team from the waitlist and assign the topic.&lt;br /&gt;
|-&lt;br /&gt;
| is_assigned_to_team || Implemented || It is used to validate if the topic is assigned to the team&lt;br /&gt;
|-&lt;br /&gt;
| get_assigned_teams || Implemented || It is used to retrieve all teams assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| is_available || Implemented || It is used to check if the given topic is available for selection by signed_up_teams&lt;br /&gt;
|-&lt;br /&gt;
| as_json || Implemented || It is responsible for serializing content of SignupTopic instance to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| count_waitlisted_teams || Implemented || It is used to return the number of waitlisted teams for the particular topic.&lt;br /&gt;
|-&lt;br /&gt;
| promote_teams_from_waitlist || Implemented || It is used to promote first N teams from the waitlist and assigns them to the topic.&lt;br /&gt;
|}&lt;br /&gt;
* Refactor instance methods to be more succinct (ex: find_if_topic_available to available, create_sign_up_team to sign_up_team, drop_sign_up_team to drop_team)&lt;br /&gt;
* Rename model from “Sign Up Team” to “Signed Up Team” for better clarity.&lt;br /&gt;
* Remove is_waitlisted attribute in favor of better querying from the Waitlist model.&lt;br /&gt;
* Add tests for error conditions and exit handling.&lt;br /&gt;
* Add tests to validate usage of @counter_cache used to count relations.&lt;br /&gt;
* Create empty models (if non-existent) and add necessary model-association relations.&lt;br /&gt;
* Integrate and delegate waitlist handling from sign_up_topic.&lt;br /&gt;
* Add cascading deletes for relations to other models as appropriate.&lt;br /&gt;
* Add JSON serializers for REST API responses.&lt;br /&gt;
* Add tests using ‘shoulda-matchers’ for more exhaustive tests as appropriate.&lt;br /&gt;
* Integrate ‘FactoryBot’ for automatic model record generation during testing.&lt;br /&gt;
* Add ‘preference_priority_number’ for backward compatibility during migration.&lt;br /&gt;
&lt;br /&gt;
== E/R Diagram ==&lt;br /&gt;
[[File:E_r_diagram.png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
* Upgrade RSpec test cases for sign_up_team.rb to validate delete_team and get_participants.&lt;br /&gt;
* Upgrade and add RSpec test cases for sign_up_topic.rb to find participants, handle slot availability and assignment status.&lt;br /&gt;
* Create RSpec test cases for waitlist.rb to validate adding teams to waitlist, remove teams from waitlist and query status of team's waitlist.&lt;br /&gt;
* Add general RSpec test cases for error handling and validate JSON serialization.&lt;br /&gt;
* Test Cases for signed_up_team.rb model&lt;br /&gt;
[[File:Signedup_team_rspec.png|900px]]&lt;br /&gt;
* Test Cases for waitlist.rb model&lt;br /&gt;
[[File:Waitlist_rspec.png|900px]]&lt;br /&gt;
* Test Cases for signup_topic.rb&lt;br /&gt;
[[File:Signup_topic_rspec.png|900px]]&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Signedup_team_rspec.png&amp;diff=150157</id>
		<title>File:Signedup team rspec.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Signedup_team_rspec.png&amp;diff=150157"/>
		<updated>2023-04-25T22:01:20Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: Sdanda uploaded a new version of File:Signedup team rspec.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Waitlist_rspec.png&amp;diff=150154</id>
		<title>File:Waitlist rspec.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Waitlist_rspec.png&amp;diff=150154"/>
		<updated>2023-04-25T21:57:29Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: Sdanda uploaded a new version of File:Waitlist rspec.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Waitlist_rspec.png&amp;diff=150152</id>
		<title>File:Waitlist rspec.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Waitlist_rspec.png&amp;diff=150152"/>
		<updated>2023-04-25T21:49:25Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: Sdanda uploaded a new version of File:Waitlist rspec.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=150151</id>
		<title>CSC/ECE 517 Spring 2023 - E2339. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb (Project 4)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=150151"/>
		<updated>2023-04-25T21:48:05Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla&lt;br /&gt;
* PR Request:- https://github.com/expertiza/reimplementation-back-end/pull/34&lt;br /&gt;
* Project Board:- https://github.com/users/surya-prakash-susarla/projects/1&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to reimplement the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to reimplement the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation.&lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* Thorough RSpec tests are required for the reimplemented models. &lt;br /&gt;
* Change all references of sign_up_teams to signed_up_teams.&lt;br /&gt;
* Fix all code review comments.&lt;br /&gt;
* There is no designated waitlist model to handle scenarios regarding waitlisting, upgrading and handling multiple registrations.&lt;br /&gt;
* Some methods have readability concerns that needs to be refactored.&lt;br /&gt;
* There are ambiguous class and instance methods that can be optimized for better reusability.&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into signup_topic.rb and waitlist.rb.&lt;br /&gt;
* In signed_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| destroy || Implemented || It is responsible for deleting the team from the table and delegating any changes in topic.&lt;br /&gt;
|-&lt;br /&gt;
| get_team_participants || Implemented || It is responsible to get participants in the team signed up for a given topic.&lt;br /&gt;
|-&lt;br /&gt;
| create_signed_up_team || Implemented || It is responsible for creating a SignedUpTeam instance with given topic_id and team_id if topic is available.&lt;br /&gt;
|}&lt;br /&gt;
* Add necessary schema migrations for backward compatibility. &lt;br /&gt;
* In signup_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| destroy_topic || Implemented || It is used to destroy topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || Implemented || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| get_team_participants || Implemented || It is used to fetch participants of the team assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_filled_slots || Implemented || It is used to return the number of slots filled for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_available_slots || Implemented || It is used to return the number of slots available for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| release_team || Implemented || It is used to promote 1 team from the waitlist and assign the topic.&lt;br /&gt;
|-&lt;br /&gt;
| is_assigned_to_team || Implemented || It is used to validate if the topic is assigned to the team&lt;br /&gt;
|-&lt;br /&gt;
| get_assigned_teams || Implemented || It is used to retrieve all teams assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| as_json || Implemented || It is responsible for serializing content of SignupTopic instance to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| count_waitlisted_teams || Implemented || It is used to return the number of waitlisted teams for the particular topic.&lt;br /&gt;
|-&lt;br /&gt;
| promote_teams_from_waitlist || Implemented || It is used to promote first N teams from the waitlist and assigns them to the topic.&lt;br /&gt;
|}&lt;br /&gt;
* Refactor instance methods to be more succinct (ex: find_if_topic_available to available, create_sign_up_team to sign_up_team, drop_sign_up_team to drop_team)&lt;br /&gt;
* Rename model from “Sign Up Team” to “Signed Up Team” for better clarity.&lt;br /&gt;
* Remove is_waitlisted attribute in favor of better querying from the Waitlist model.&lt;br /&gt;
* Add tests for error conditions and exit handling.&lt;br /&gt;
* Add tests to validate usage of @counter_cache used to count relations.&lt;br /&gt;
* Create empty models (if non-existent) and add necessary model-association relations.&lt;br /&gt;
* Integrate and delegate waitlist handling from sign_up_topic.&lt;br /&gt;
* Add cascading deletes for relations to other models as appropriate.&lt;br /&gt;
* Add JSON serializers for REST API responses.&lt;br /&gt;
* Add tests using ‘shoulda-matchers’ for more exhaustive tests as appropriate.&lt;br /&gt;
* Integrate ‘FactoryBot’ for automatic model record generation during testing.&lt;br /&gt;
* Add ‘preference_priority_number’ for backward compatibility during migration.&lt;br /&gt;
&lt;br /&gt;
== E/R Diagram ==&lt;br /&gt;
[[File:E_r_diagram.png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
* Upgrade RSpec test cases for sign_up_team.rb to validate delete_team and get_participants.&lt;br /&gt;
* Upgrade and add RSpec test cases for sign_up_topic.rb to find participants, handle slot availability and assignment status.&lt;br /&gt;
* Create RSpec test cases for waitlist.rb to validate adding teams to waitlist, remove teams from waitlist and query status of team's waitlist.&lt;br /&gt;
* Add general RSpec test cases for error handling and validate JSON serialization.&lt;br /&gt;
* Test Cases for signed_up_team.rb model&lt;br /&gt;
[[File:Signedup_team_rspec.png|900px]]&lt;br /&gt;
* Test Cases for waitlist.rb model&lt;br /&gt;
[[File:Waitlist_rspec.png|900px]]&lt;br /&gt;
* Test Cases for signup_topic.rb&lt;br /&gt;
[[File:Signup_topic_rspec.png|900px]]&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Waitlist_rspec.png&amp;diff=150149</id>
		<title>File:Waitlist rspec.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Waitlist_rspec.png&amp;diff=150149"/>
		<updated>2023-04-25T21:42:41Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Signedup_team_rspec.png&amp;diff=150148</id>
		<title>File:Signedup team rspec.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Signedup_team_rspec.png&amp;diff=150148"/>
		<updated>2023-04-25T21:42:18Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Signup_topic_rspec.png&amp;diff=150147</id>
		<title>File:Signup topic rspec.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Signup_topic_rspec.png&amp;diff=150147"/>
		<updated>2023-04-25T21:40:51Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=150146</id>
		<title>CSC/ECE 517 Spring 2023 - E2339. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb (Project 4)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=150146"/>
		<updated>2023-04-25T20:39:45Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* Design Strategy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla&lt;br /&gt;
* PR Request:- https://github.com/expertiza/reimplementation-back-end/pull/34&lt;br /&gt;
* Project Board:- https://github.com/users/surya-prakash-susarla/projects/1&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to reimplement the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to reimplement the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation.&lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* Thorough RSpec tests are required for the reimplemented models. &lt;br /&gt;
* Change all references of sign_up_teams to signed_up_teams.&lt;br /&gt;
* Fix all code review comments.&lt;br /&gt;
* There is no designated waitlist model to handle scenarios regarding waitlisting, upgrading and handling multiple registrations.&lt;br /&gt;
* Some methods have readability concerns that needs to be refactored.&lt;br /&gt;
* There are ambiguous class and instance methods that can be optimized for better reusability.&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into signup_topic.rb and waitlist.rb.&lt;br /&gt;
* In signed_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| destroy || Implemented || It is responsible for deleting the team from the table and delegating any changes in topic.&lt;br /&gt;
|-&lt;br /&gt;
| get_team_participants || Implemented || It is responsible to get participants in the team signed up for a given topic.&lt;br /&gt;
|-&lt;br /&gt;
| create_signed_up_team || Implemented || It is responsible for creating a SignedUpTeam instance with given topic_id and team_id if topic is available.&lt;br /&gt;
|}&lt;br /&gt;
* Add necessary schema migrations for backward compatibility. &lt;br /&gt;
* In signup_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| destroy_topic || Implemented || It is used to destroy topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || Implemented || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| get_team_participants || Implemented || It is used to fetch participants of the team assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_filled_slots || Implemented || It is used to return the number of slots filled for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_available_slots || Implemented || It is used to return the number of slots available for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| release_team || Implemented || It is used to promote 1 team from the waitlist and assign the topic.&lt;br /&gt;
|-&lt;br /&gt;
| is_assigned_to_team || Implemented || It is used to validate if the topic is assigned to the team&lt;br /&gt;
|-&lt;br /&gt;
| get_assigned_teams || Implemented || It is used to retrieve all teams assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| as_json || Implemented || It is responsible for serializing content of SignupTopic instance to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| count_waitlisted_teams || Implemented || It is used to return the number of waitlisted teams for the particular topic.&lt;br /&gt;
|-&lt;br /&gt;
| promote_teams_from_waitlist || Implemented || It is used to promote first N teams from the waitlist and assigns them to the topic.&lt;br /&gt;
|}&lt;br /&gt;
* Refactor instance methods to be more succinct (ex: find_if_topic_available to available, create_sign_up_team to sign_up_team, drop_sign_up_team to drop_team)&lt;br /&gt;
* Rename model from “Sign Up Team” to “Signed Up Team” for better clarity.&lt;br /&gt;
* Remove is_waitlisted attribute in favor of better querying from the Waitlist model.&lt;br /&gt;
* Add tests for error conditions and exit handling.&lt;br /&gt;
* Add tests to validate usage of @counter_cache used to count relations.&lt;br /&gt;
* Create empty models (if non-existent) and add necessary model-association relations.&lt;br /&gt;
* Integrate and delegate waitlist handling from sign_up_topic.&lt;br /&gt;
* Add cascading deletes for relations to other models as appropriate.&lt;br /&gt;
* Add JSON serializers for REST API responses.&lt;br /&gt;
* Add tests using ‘shoulda-matchers’ for more exhaustive tests as appropriate.&lt;br /&gt;
* Integrate ‘FactoryBot’ for automatic model record generation during testing.&lt;br /&gt;
* Add ‘preference_priority_number’ for backward compatibility during migration.&lt;br /&gt;
&lt;br /&gt;
== E/R Diagram ==&lt;br /&gt;
[[File:E_r_diagram.png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
* Upgrade RSpec test cases for sign_up_team.rb to validate delete_team and get_participants.&lt;br /&gt;
* Upgrade and add RSpec test cases for sign_up_topic.rb to find participants, handle slot availability and assignment status.&lt;br /&gt;
* Create RSpec test cases for waitlist.rb to validate adding teams to waitlist, remove teams from waitlist and query status of team's waitlist.&lt;br /&gt;
* Add general RSpec test cases for error handling and validate JSON serialization.&lt;br /&gt;
* Test Cases for signup_team.rb model&lt;br /&gt;
[[File:Test signup team1.png|900px]]&lt;br /&gt;
* Test Cases for waitlist.rb model&lt;br /&gt;
[[File:Test wait1.png|900px]]&lt;br /&gt;
[[File:Test wait2.png|900px]]&lt;br /&gt;
[[File:Test wait3.png|900px]]&lt;br /&gt;
[[File:Test wait4.png|900px]]&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=150145</id>
		<title>CSC/ECE 517 Spring 2023 - E2339. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb (Project 4)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=150145"/>
		<updated>2023-04-25T19:56:38Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* Flow Chart */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla&lt;br /&gt;
* PR Request:- https://github.com/expertiza/reimplementation-back-end/pull/34&lt;br /&gt;
* Project Board:- https://github.com/users/surya-prakash-susarla/projects/1&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to reimplement the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to reimplement the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation.&lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* Thorough RSpec tests are required for the reimplemented models. &lt;br /&gt;
* Change all references of sign_up_teams to signed_up_teams.&lt;br /&gt;
* Fix all code review comments.&lt;br /&gt;
* There is no designated waitlist model to handle scenarios regarding waitlisting, upgrading and handling multiple registrations.&lt;br /&gt;
* Some methods have readability concerns that needs to be refactored.&lt;br /&gt;
* There are ambiguous class and instance methods that can be optimized for better reusability.&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into signup_topic.rb and waitlist.rb.&lt;br /&gt;
* In signed_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| delete_signed_up_team || Implemented || It is responsible for deleting the team from the table and delegating any changes in topic.&lt;br /&gt;
|-&lt;br /&gt;
| get_team_participants || Implemented || It is responsible to get participants in the team signed up for a given topic.&lt;br /&gt;
|-&lt;br /&gt;
| create_signed_up_team || Implemented || It is responsible for creating a SignedUpTeam instance with given topic_id and team_id if topic is available.&lt;br /&gt;
|}&lt;br /&gt;
* Add necessary schema migrations for backward compatibility. &lt;br /&gt;
* In signup_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| destroy_topic || Implemented || It is used to destroy topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || Implemented || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| get_team_participants || Implemented || It is used to fetch participants of the team assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_filled_slots || Implemented || It is used to return the number of slots filled for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_available_slots || Implemented || It is used to return the number of slots available for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| release_team || Implemented || It is used to remove team from the topic and delegate changes to waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| is_assigned_to_team || Implemented || It is used to validate if the topic is assigned to the team&lt;br /&gt;
|-&lt;br /&gt;
| get_assigned_teams || Implemented || It is used to retrieve all teams assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| as_json || Implemented || It is responsible for serializing content of SignupTopic instance to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| count_waitlisted_teams || Implemented || It is used to return the number of waitlisted teams for the particular topic.&lt;br /&gt;
|-&lt;br /&gt;
| promote_teams_from_waitlist || Implemented || It is used to promote first N teams from the waitlist and assigns them to the topic.&lt;br /&gt;
|}&lt;br /&gt;
* Refactor instance methods to be more succinct (ex: find_if_topic_available to available, create_sign_up_team to sign_up_team, drop_sign_up_team to drop_team)&lt;br /&gt;
* Rename model from “Sign Up Team” to “Signed Up Team” for better clarity.&lt;br /&gt;
* Remove is_waitlisted attribute in favor of better querying from the Waitlist model.&lt;br /&gt;
* Add tests for error conditions and exit handling.&lt;br /&gt;
* Add tests to validate usage of @counter_cache used to count relations.&lt;br /&gt;
* Create empty models (if non-existent) and add necessary model-association relations.&lt;br /&gt;
* Integrate and delegate waitlist handling from sign_up_topic.&lt;br /&gt;
* Add cascading deletes for relations to other models as appropriate.&lt;br /&gt;
* Add JSON serializers for REST API responses.&lt;br /&gt;
* Add tests using ‘shoulda-matchers’ for more exhaustive tests as appropriate.&lt;br /&gt;
* Integrate ‘FactoryBot’ for automatic model record generation during testing.&lt;br /&gt;
* Add ‘preference_priority_number’ for backward compatibility during migration.&lt;br /&gt;
&lt;br /&gt;
== E/R Diagram ==&lt;br /&gt;
[[File:E_r_diagram.png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
* Upgrade RSpec test cases for sign_up_team.rb to validate delete_team and get_participants.&lt;br /&gt;
* Upgrade and add RSpec test cases for sign_up_topic.rb to find participants, handle slot availability and assignment status.&lt;br /&gt;
* Create RSpec test cases for waitlist.rb to validate adding teams to waitlist, remove teams from waitlist and query status of team's waitlist.&lt;br /&gt;
* Add general RSpec test cases for error handling and validate JSON serialization.&lt;br /&gt;
* Test Cases for signup_team.rb model&lt;br /&gt;
[[File:Test signup team1.png|900px]]&lt;br /&gt;
* Test Cases for waitlist.rb model&lt;br /&gt;
[[File:Test wait1.png|900px]]&lt;br /&gt;
[[File:Test wait2.png|900px]]&lt;br /&gt;
[[File:Test wait3.png|900px]]&lt;br /&gt;
[[File:Test wait4.png|900px]]&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:E_r_diagram.png&amp;diff=150144</id>
		<title>File:E r diagram.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:E_r_diagram.png&amp;diff=150144"/>
		<updated>2023-04-25T19:43:35Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=150143</id>
		<title>CSC/ECE 517 Spring 2023 - E2339. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb (Project 4)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=150143"/>
		<updated>2023-04-25T18:51:36Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* Design Strategy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla&lt;br /&gt;
* PR Request:- https://github.com/expertiza/reimplementation-back-end/pull/34&lt;br /&gt;
* Project Board:- https://github.com/users/surya-prakash-susarla/projects/1&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to reimplement the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to reimplement the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation.&lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* Thorough RSpec tests are required for the reimplemented models. &lt;br /&gt;
* Change all references of sign_up_teams to signed_up_teams.&lt;br /&gt;
* Fix all code review comments.&lt;br /&gt;
* There is no designated waitlist model to handle scenarios regarding waitlisting, upgrading and handling multiple registrations.&lt;br /&gt;
* Some methods have readability concerns that needs to be refactored.&lt;br /&gt;
* There are ambiguous class and instance methods that can be optimized for better reusability.&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into signup_topic.rb and waitlist.rb.&lt;br /&gt;
* In signed_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| delete_signed_up_team || Implemented || It is responsible for deleting the team from the table and delegating any changes in topic.&lt;br /&gt;
|-&lt;br /&gt;
| get_team_participants || Implemented || It is responsible to get participants in the team signed up for a given topic.&lt;br /&gt;
|-&lt;br /&gt;
| create_signed_up_team || Implemented || It is responsible for creating a SignedUpTeam instance with given topic_id and team_id if topic is available.&lt;br /&gt;
|}&lt;br /&gt;
* Add necessary schema migrations for backward compatibility. &lt;br /&gt;
* In signup_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| destroy_topic || Implemented || It is used to destroy topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || Implemented || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| get_team_participants || Implemented || It is used to fetch participants of the team assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_filled_slots || Implemented || It is used to return the number of slots filled for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_available_slots || Implemented || It is used to return the number of slots available for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| release_team || Implemented || It is used to remove team from the topic and delegate changes to waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| is_assigned_to_team || Implemented || It is used to validate if the topic is assigned to the team&lt;br /&gt;
|-&lt;br /&gt;
| get_assigned_teams || Implemented || It is used to retrieve all teams assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| as_json || Implemented || It is responsible for serializing content of SignupTopic instance to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| count_waitlisted_teams || Implemented || It is used to return the number of waitlisted teams for the particular topic.&lt;br /&gt;
|-&lt;br /&gt;
| promote_teams_from_waitlist || Implemented || It is used to promote first N teams from the waitlist and assigns them to the topic.&lt;br /&gt;
|}&lt;br /&gt;
* Refactor instance methods to be more succinct (ex: find_if_topic_available to available, create_sign_up_team to sign_up_team, drop_sign_up_team to drop_team)&lt;br /&gt;
* Rename model from “Sign Up Team” to “Signed Up Team” for better clarity.&lt;br /&gt;
* Remove is_waitlisted attribute in favor of better querying from the Waitlist model.&lt;br /&gt;
* Add tests for error conditions and exit handling.&lt;br /&gt;
* Add tests to validate usage of @counter_cache used to count relations.&lt;br /&gt;
* Create empty models (if non-existent) and add necessary model-association relations.&lt;br /&gt;
* Integrate and delegate waitlist handling from sign_up_topic.&lt;br /&gt;
* Add cascading deletes for relations to other models as appropriate.&lt;br /&gt;
* Add JSON serializers for REST API responses.&lt;br /&gt;
* Add tests using ‘shoulda-matchers’ for more exhaustive tests as appropriate.&lt;br /&gt;
* Integrate ‘FactoryBot’ for automatic model record generation during testing.&lt;br /&gt;
* Add ‘preference_priority_number’ for backward compatibility during migration.&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
* Upgrade RSpec test cases for sign_up_team.rb to validate delete_team and get_participants.&lt;br /&gt;
* Upgrade and add RSpec test cases for sign_up_topic.rb to find participants, handle slot availability and assignment status.&lt;br /&gt;
* Create RSpec test cases for waitlist.rb to validate adding teams to waitlist, remove teams from waitlist and query status of team's waitlist.&lt;br /&gt;
* Add general RSpec test cases for error handling and validate JSON serialization.&lt;br /&gt;
* Test Cases for signup_team.rb model&lt;br /&gt;
[[File:Test signup team1.png|900px]]&lt;br /&gt;
* Test Cases for waitlist.rb model&lt;br /&gt;
[[File:Test wait1.png|900px]]&lt;br /&gt;
[[File:Test wait2.png|900px]]&lt;br /&gt;
[[File:Test wait3.png|900px]]&lt;br /&gt;
[[File:Test wait4.png|900px]]&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=150142</id>
		<title>CSC/ECE 517 Spring 2023 - E2339. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb (Project 4)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=150142"/>
		<updated>2023-04-25T18:46:20Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* Design Strategy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla&lt;br /&gt;
* PR Request:- https://github.com/expertiza/reimplementation-back-end/pull/34&lt;br /&gt;
* Project Board:- https://github.com/users/surya-prakash-susarla/projects/1&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to reimplement the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to reimplement the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation.&lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* Thorough RSpec tests are required for the reimplemented models. &lt;br /&gt;
* Change all references of sign_up_teams to signed_up_teams.&lt;br /&gt;
* Fix all code review comments.&lt;br /&gt;
* There is no designated waitlist model to handle scenarios regarding waitlisting, upgrading and handling multiple registrations.&lt;br /&gt;
* Some methods have readability concerns that needs to be refactored.&lt;br /&gt;
* There are ambiguous class and instance methods that can be optimized for better reusability.&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into sign_up_topic.rb and waitlist.rb.&lt;br /&gt;
* In sign_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| delete_team || TODO || It is responsible for deleting the team from the table and delegating any changes in topic.&lt;br /&gt;
|-&lt;br /&gt;
| serialize_display ||  TODO || It is responsible for serializing content to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
* Add necessary schema migrations for backward compatibility. &lt;br /&gt;
* In sign_up_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| destroy_topic || Implemented || It is used to destroy topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || Implemented || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| get_team_participants || Implemented || It is used to fetch participants of the team assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_filled_slots || Implemented || It is used to return the number of slots filled for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_available_slots || Implemented || It is used to return the number of slots available for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| release_team || Implemented || It is used to remove team from the topic and delegate changes to waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| is_assigned_to_team || Implemented || It is used to validate if the topic is assigned to the team&lt;br /&gt;
|-&lt;br /&gt;
| get_assigned_teams || Implemented || It is used to retrieve all teams assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| as_json || Implemented || It is responsible for serializing content of SignupTopic instance to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| count_waitlisted_teams || Implemented || It is used to return the number of waitlisted teams for the particular topic.&lt;br /&gt;
|-&lt;br /&gt;
| promote_teams_from_waitlist || Implemented || It is used to promote first N teams from the waitlist and assigns them to the topic.&lt;br /&gt;
|}&lt;br /&gt;
* Refactor instance methods to be more succinct (ex: find_if_topic_available to available, create_sign_up_team to sign_up_team, drop_sign_up_team to drop_team)&lt;br /&gt;
* Rename model from “Sign Up Team” to “Signed Up Team” for better clarity.&lt;br /&gt;
* Remove is_waitlisted attribute in favor of better querying from the Waitlist model.&lt;br /&gt;
* Add tests for error conditions and exit handling.&lt;br /&gt;
* Add tests to validate usage of @counter_cache used to count relations.&lt;br /&gt;
* Create empty models (if non-existent) and add necessary model-association relations.&lt;br /&gt;
* Integrate and delegate waitlist handling from sign_up_topic.&lt;br /&gt;
* Add cascading deletes for relations to other models as appropriate.&lt;br /&gt;
* Add JSON serializers for REST API responess.&lt;br /&gt;
* Add tests using ‘shoulda-matchers’ for more exhaustive tests as appropriate.&lt;br /&gt;
* Integrate ‘FactoryBot’ for automatic model record generation during testing.&lt;br /&gt;
* Add ‘preferene_priority_number’ for backward compatibility during migration.&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
* Upgrade RSpec test cases for sign_up_team.rb to validate delete_team and get_participants.&lt;br /&gt;
* Upgrade and add RSpec test cases for sign_up_topic.rb to find participants, handle slot availability and assignment status.&lt;br /&gt;
* Create RSpec test cases for waitlist.rb to validate adding teams to waitlist, remove teams from waitlist and query status of team's waitlist.&lt;br /&gt;
* Add general RSpec test cases for error handling and validate JSON serialization.&lt;br /&gt;
* Test Cases for signup_team.rb model&lt;br /&gt;
[[File:Test signup team1.png|900px]]&lt;br /&gt;
* Test Cases for waitlist.rb model&lt;br /&gt;
[[File:Test wait1.png|900px]]&lt;br /&gt;
[[File:Test wait2.png|900px]]&lt;br /&gt;
[[File:Test wait3.png|900px]]&lt;br /&gt;
[[File:Test wait4.png|900px]]&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=149768</id>
		<title>CSC/ECE 517 Spring 2023 - E2339. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb (Project 4)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=149768"/>
		<updated>2023-04-17T14:51:08Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* Team */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla&lt;br /&gt;
* PR Request:- https://github.com/expertiza/reimplementation-back-end/pull/34&lt;br /&gt;
* Project Board:- https://github.com/users/surya-prakash-susarla/projects/1&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to reimplement the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to reimplement the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation.&lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* Thorough RSpec tests are required for the reimplemented models. &lt;br /&gt;
* Change all references of sign_up_teams to signed_up_teams.&lt;br /&gt;
* Fix all code review comments.&lt;br /&gt;
* There is no designated waitlist model to handle scenarios regarding waitlisting, upgrading and handling multiple registrations.&lt;br /&gt;
* Some methods have readability concerns that needs to be refactored.&lt;br /&gt;
* There are ambiguous class and instance methods that can be optimized for better reusability.&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into sign_up_topic.rb and waitlist.rb.&lt;br /&gt;
* In sign_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| delete_team || TODO || It is responsible for deleting the team from the table and delegating any changes in topic.&lt;br /&gt;
|-&lt;br /&gt;
| serialize_display ||  TODO || It is responsible for serializing content to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
* Add necessary schema migrations for backward compatibility. &lt;br /&gt;
* In sign_up_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| destroy_topic || TODO || It is used to destroy topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || TODO || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| find_team_participants || TODO || It is used to retrieve participants assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_filled_slots || TODO || It is used to return the number of slots filled for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_available_slots || TODO || It is used to return the number of slots available for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| release_topic || TODO || It is used to remove team from the topic and delegate changes to waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| is_assigned_to_team || TODO || It is used to validate if the topic is assigned to the team&lt;br /&gt;
|-&lt;br /&gt;
| get_assigned_teams || TODO || It is used to retrieve teams assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| serialize_to_json || TODO || It is responsible for serializing content to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| count_waitlisted_teams || TODO || It is used to return the number of waitlisted teams for the particular topic.&lt;br /&gt;
|-&lt;br /&gt;
| remove_teams_from_waitlist || TODO || It is used to remove teams from the waitlist and return the removed teams.&lt;br /&gt;
|-&lt;br /&gt;
| add_teams_to_waitlist || TODO || It is used to add teams to the waitlist of the topic.&lt;br /&gt;
|-&lt;br /&gt;
| get_waitlisted_teams || TODO || It is used to retrieve the teams added to waitlist for the topic.&lt;br /&gt;
|}&lt;br /&gt;
* Refactor instance methods to be more succinct (ex: find_if_topic_available to available, create_sign_up_team to sign_up_team, drop_sign_up_team to drop_team)&lt;br /&gt;
* Rename model from “Sign Up Team” to “Signed Up Team” for better clarity.&lt;br /&gt;
* Remove is_waitlisted attribute in favor of better querying from the Waitlist model.&lt;br /&gt;
* Add tests for error conditions and exit handling.&lt;br /&gt;
* Add tests to validate usage of @counter_cache used to count relations.&lt;br /&gt;
* Create empty models (if non-existent) and add necessary model-association relations.&lt;br /&gt;
* Integrate and delegate waitlist handling from sign_up_topic.&lt;br /&gt;
* Add cascading deletes for relations to other models as appropriate.&lt;br /&gt;
* Add JSON serializers for REST API responess.&lt;br /&gt;
* Add tests using ‘shoulda-matchers’ for more exhaustive tests as appropriate.&lt;br /&gt;
* Integrate ‘FactoryBot’ for automatic model record generation during testing.&lt;br /&gt;
* Add ‘preferene_priority_number’ for backward compatibility during migration.&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
* Upgrade RSpec test cases for sign_up_team.rb to validate delete_team and get_participants.&lt;br /&gt;
* Upgrade and add RSpec test cases for sign_up_topic.rb to find participants, handle slot availability and assignment status.&lt;br /&gt;
* Create RSpec test cases for waitlist.rb to validate adding teams to waitlist, remove teams from waitlist and query status of team's waitlist.&lt;br /&gt;
* Add general RSpec test cases for error handling and validate JSON serialization.&lt;br /&gt;
* Test Cases for signup_team.rb model&lt;br /&gt;
[[File:Test signup team1.png|900px]]&lt;br /&gt;
* Test Cases for waitlist.rb model&lt;br /&gt;
[[File:Test wait1.png|900px]]&lt;br /&gt;
[[File:Test wait2.png|900px]]&lt;br /&gt;
[[File:Test wait3.png|900px]]&lt;br /&gt;
[[File:Test wait4.png|900px]]&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=149745</id>
		<title>CSC/ECE 517 Spring 2023 - E2339. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb (Project 4)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=149745"/>
		<updated>2023-04-14T19:15:47Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla&lt;br /&gt;
* PR Request:- https://github.com/expertiza/reimplementation-back-end/pull/34&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to reimplement the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to reimplement the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation.&lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* Thorough RSpec tests are required for the reimplemented models. &lt;br /&gt;
* Change all references of sign_up_teams to signed_up_teams.&lt;br /&gt;
* Fix all code review comments.&lt;br /&gt;
* There is no designated waitlist model to handle scenarios regarding waitlisting, upgrading and handling multiple registrations.&lt;br /&gt;
* Some methods have readability concerns that needs to be refactored.&lt;br /&gt;
* There are ambiguous class and instance methods that can be optimized for better reusability.&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into sign_up_topic.rb and waitlist.rb.&lt;br /&gt;
* In sign_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| delete_team || TODO || It is responsible for deleting the team from the table and delegating any changes in topic.&lt;br /&gt;
|-&lt;br /&gt;
| serialize_display ||  TODO || It is responsible for serializing content to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
* Add necessary schema migrations for backward compatibility. &lt;br /&gt;
* In sign_up_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| destroy_topic || TODO || It is used to destroy topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || TODO || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| find_team_participants || TODO || It is used to retrieve participants assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_filled_slots || TODO || It is used to return the number of slots filled for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_available_slots || TODO || It is used to return the number of slots available for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| release_topic || TODO || It is used to remove team from the topic and delegate changes to waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| is_assigned_to_team || TODO || It is used to validate if the topic is assigned to the team&lt;br /&gt;
|-&lt;br /&gt;
| get_assigned_teams || TODO || It is used to retrieve teams assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| serialize_to_json || TODO || It is responsible for serializing content to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| count_waitlisted_teams || TODO || It is used to return the number of waitlisted teams for the particular topic.&lt;br /&gt;
|-&lt;br /&gt;
| remove_teams_from_waitlist || TODO || It is used to remove teams from the waitlist and return the removed teams.&lt;br /&gt;
|-&lt;br /&gt;
| add_teams_to_waitlist || TODO || It is used to add teams to the waitlist of the topic.&lt;br /&gt;
|-&lt;br /&gt;
| get_waitlisted_teams || TODO || It is used to retrieve the teams added to waitlist for the topic.&lt;br /&gt;
|}&lt;br /&gt;
* Refactor instance methods to be more succinct (ex: find_if_topic_available to available, create_sign_up_team to sign_up_team, drop_sign_up_team to drop_team)&lt;br /&gt;
* Rename model from “Sign Up Team” to “Signed Up Team” for better clarity.&lt;br /&gt;
* Remove is_waitlisted attribute in favor of better querying from the Waitlist model.&lt;br /&gt;
* Add tests for error conditions and exit handling.&lt;br /&gt;
* Add tests to validate usage of @counter_cache used to count relations.&lt;br /&gt;
* Create empty models (if non-existent) and add necessary model-association relations.&lt;br /&gt;
* Integrate and delegate waitlist handling from sign_up_topic.&lt;br /&gt;
* Add cascading deletes for relations to other models as appropriate.&lt;br /&gt;
* Add JSON serializers for REST API responess.&lt;br /&gt;
* Add tests using ‘shoulda-matchers’ for more exhaustive tests as appropriate.&lt;br /&gt;
* Integrate ‘FactoryBot’ for automatic model record generation during testing.&lt;br /&gt;
* Add ‘preferene_priority_number’ for backward compatibility during migration.&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
* Upgrade RSpec test cases for sign_up_team.rb to validate delete_team and get_participants.&lt;br /&gt;
* Upgrade and add RSpec test cases for sign_up_topic.rb to find participants, handle slot availability and assignment status.&lt;br /&gt;
* Create RSpec test cases for waitlist.rb to validate adding teams to waitlist, remove teams from waitlist and query status of team's waitlist.&lt;br /&gt;
* Add general RSpec test cases for error handling and validate JSON serialization.&lt;br /&gt;
* Test Cases for signup_team.rb model&lt;br /&gt;
[[File:Test signup team1.png|900px]]&lt;br /&gt;
* Test Cases for waitlist.rb model&lt;br /&gt;
[[File:Test wait1.png|900px]]&lt;br /&gt;
[[File:Test wait2.png|900px]]&lt;br /&gt;
[[File:Test wait3.png|900px]]&lt;br /&gt;
[[File:Test wait4.png|900px]]&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Test_wait4.png&amp;diff=149744</id>
		<title>File:Test wait4.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Test_wait4.png&amp;diff=149744"/>
		<updated>2023-04-14T19:04:28Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Test_wait3.png&amp;diff=149743</id>
		<title>File:Test wait3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Test_wait3.png&amp;diff=149743"/>
		<updated>2023-04-14T19:04:11Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Test_wait2.png&amp;diff=149742</id>
		<title>File:Test wait2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Test_wait2.png&amp;diff=149742"/>
		<updated>2023-04-14T19:03:52Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Test_wait1.png&amp;diff=149741</id>
		<title>File:Test wait1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Test_wait1.png&amp;diff=149741"/>
		<updated>2023-04-14T19:03:35Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Test_signup_team1.png&amp;diff=149740</id>
		<title>File:Test signup team1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Test_signup_team1.png&amp;diff=149740"/>
		<updated>2023-04-14T19:03:10Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=149590</id>
		<title>CSC/ECE 517 Spring 2023 - E2339. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb (Project 4)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=149590"/>
		<updated>2023-04-13T00:06:51Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* Team */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla&lt;br /&gt;
* PR Request:- https://github.com/expertiza/reimplementation-back-end/pull/34&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to reimplement the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to reimplement the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation.&lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* Thorough RSpec tests are required for the reimplemented models. &lt;br /&gt;
* Change all references of sign_up_teams to signed_up_teams.&lt;br /&gt;
* Fix all code review comments.&lt;br /&gt;
* There is no designated waitlist model to handle scenarios regarding waitlisting, upgrading and handling multiple registrations.&lt;br /&gt;
* Some methods have readability concerns that needs to be refactored.&lt;br /&gt;
* There are ambiguous class and instance methods that can be optimized for better reusability.&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into sign_up_topic.rb and waitlist.rb.&lt;br /&gt;
* In sign_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| delete_team || TODO || It is responsible for deleting the team from the table and delegating any changes in topic.&lt;br /&gt;
|-&lt;br /&gt;
| serialize_display ||  TODO || It is responsible for serializing content to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
* Add necessary schema migrations for backward compatibility. &lt;br /&gt;
* In sign_up_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| destroy_topic || TODO || It is used to destroy topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || TODO || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| find_team_participants || TODO || It is used to retrieve participants assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_filled_slots || TODO || It is used to return the number of slots filled for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_available_slots || TODO || It is used to return the number of slots available for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| release_topic || TODO || It is used to remove team from the topic and delegate changes to waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| is_assigned_to_team || TODO || It is used to validate if the topic is assigned to the team&lt;br /&gt;
|-&lt;br /&gt;
| get_assigned_teams || TODO || It is used to retrieve teams assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| serialize_to_json || TODO || It is responsible for serializing content to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| count_waitlisted_teams || TODO || It is used to return the number of waitlisted teams for the particular topic.&lt;br /&gt;
|-&lt;br /&gt;
| remove_teams_from_waitlist || TODO || It is used to remove teams from the waitlist and return the removed teams.&lt;br /&gt;
|-&lt;br /&gt;
| add_teams_to_waitlist || TODO || It is used to add teams to the waitlist of the topic.&lt;br /&gt;
|-&lt;br /&gt;
| get_waitlisted_teams || TODO || It is used to retrieve the teams added to waitlist for the topic.&lt;br /&gt;
|}&lt;br /&gt;
* Refactor instance methods to be more succinct (ex: find_if_topic_available to available, create_sign_up_team to sign_up_team, drop_sign_up_team to drop_team)&lt;br /&gt;
* Rename model from “Sign Up Team” to “Signed Up Team” for better clarity.&lt;br /&gt;
* Remove is_waitlisted attribute in favor of better querying from the Waitlist model.&lt;br /&gt;
* Add tests for error conditions and exit handling.&lt;br /&gt;
* Add tests to validate usage of @counter_cache used to count relations.&lt;br /&gt;
* Create empty models (if non-existent) and add necessary model-association relations.&lt;br /&gt;
* Integrate and delegate waitlist handling from sign_up_topic.&lt;br /&gt;
* Add cascading deletes for relations to other models as appropriate.&lt;br /&gt;
* Add JSON serializers for REST API responess.&lt;br /&gt;
* Add tests using ‘shoulda-matchers’ for more exhaustive tests as appropriate.&lt;br /&gt;
* Integrate ‘FactoryBot’ for automatic model record generation during testing.&lt;br /&gt;
* Add ‘preferene_priority_number’ for backward compatibility during migration.&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
* Upgrade RSpec test cases for sign_up_team.rb to validate delete_team and get_participants.&lt;br /&gt;
* Upgrade and add RSpec test cases for sign_up_topic.rb to find participants, handle slot availability and assignment status.&lt;br /&gt;
* Create RSpec test cases for waitlist.rb to validate adding teams to waitlist, remove teams from waitlist and query status of team's waitlist.&lt;br /&gt;
* Add general RSpec test cases for error handling and validate JSON serialization.&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=149420</id>
		<title>CSC/ECE 517 Spring 2023 - E2339. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb (Project 4)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=149420"/>
		<updated>2023-04-12T00:55:58Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to reimplement the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to reimplement the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation.&lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* Thorough RSpec tests are required for the reimplemented models. &lt;br /&gt;
* Change all references of sign_up_teams to signed_up_teams.&lt;br /&gt;
* Fix all code review comments.&lt;br /&gt;
* There is no designated waitlist model to handle scenarios regarding waitlisting, upgrading and handling multiple registrations.&lt;br /&gt;
* Some methods have readability concerns that needs to be refactored.&lt;br /&gt;
* There are ambiguous class and instance methods that can be optimized for better reusability.&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into sign_up_topic.rb and waitlist.rb.&lt;br /&gt;
* In sign_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| delete_team || TODO || It is responsible for deleting the team from the table and delegating any changes in topic.&lt;br /&gt;
|-&lt;br /&gt;
| serialize_display ||  TODO || It is responsible for serializing content to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
* Add necessary schema migrations for backward compatibility. &lt;br /&gt;
* In sign_up_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| destroy_topic || TODO || It is used to destroy topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || TODO || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| find_team_participants || TODO || It is used to retrieve participants assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_filled_slots || TODO || It is used to return the number of slots filled for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_available_slots || TODO || It is used to return the number of slots available for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| release_topic || TODO || It is used to remove team from the topic and delegate changes to waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| is_assigned_to_team || TODO || It is used to validate if the topic is assigned to the team&lt;br /&gt;
|-&lt;br /&gt;
| get_assigned_teams || TODO || It is used to retrieve teams assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| serialize_to_json || TODO || It is responsible for serializing content to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| count_waitlisted_teams || TODO || It is used to return the number of waitlisted teams for the particular topic.&lt;br /&gt;
|-&lt;br /&gt;
| remove_teams_from_waitlist || TODO || It is used to remove teams from the waitlist and return the removed teams.&lt;br /&gt;
|-&lt;br /&gt;
| add_teams_to_waitlist || TODO || It is used to add teams to the waitlist of the topic.&lt;br /&gt;
|-&lt;br /&gt;
| get_waitlisted_teams || TODO || It is used to retrieve the teams added to waitlist for the topic.&lt;br /&gt;
|}&lt;br /&gt;
* Refactor instance methods to be more succinct (ex: find_if_topic_available to available, create_sign_up_team to sign_up_team, drop_sign_up_team to drop_team)&lt;br /&gt;
* Rename model from “Sign Up Team” to “Signed Up Team” for better clarity.&lt;br /&gt;
* Remove is_waitlisted attribute in favor of better querying from the Waitlist model.&lt;br /&gt;
* Add tests for error conditions and exit handling.&lt;br /&gt;
* Add tests to validate usage of @counter_cache used to count relations.&lt;br /&gt;
* Create empty models (if non-existent) and add necessary model-association relations.&lt;br /&gt;
* Integrate and delegate waitlist handling from sign_up_topic.&lt;br /&gt;
* Add cascading deletes for relations to other models as appropriate.&lt;br /&gt;
* Add JSON serializers for REST API responess.&lt;br /&gt;
* Add tests using ‘shoulda-matchers’ for more exhaustive tests as appropriate.&lt;br /&gt;
* Integrate ‘FactoryBot’ for automatic model record generation during testing.&lt;br /&gt;
* Add ‘preferene_priority_number’ for backward compatibility during migration.&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
* Upgrade RSpec test cases for sign_up_team.rb to validate delete_team and get_participants.&lt;br /&gt;
* Upgrade and add RSpec test cases for sign_up_topic.rb to find participants, handle slot availability and assignment status.&lt;br /&gt;
* Create RSpec test cases for waitlist.rb to validate adding teams to waitlist, remove teams from waitlist and query status of team's waitlist.&lt;br /&gt;
* Add general RSpec test cases for error handling and validate JSON serialization.&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023&amp;diff=149419</id>
		<title>CSC/ECE 517 Spring 2023</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023&amp;diff=149419"/>
		<updated>2023-04-12T00:54:47Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* OSS Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OSS Projects ==&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 -E2306. Refactor user_controller.rb, user.rb and its child classes]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2320. Reimplement the Question hierarchy]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2312 + E2313. Reimplement response.rb and responses_controller.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - NTNX-1. Support provisioning MongoDb via NDB Kubernetes Operator]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2316. Reimplement sign_up_sheet_controller.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2315. Reimplement signed_up_team.rb, sign_up_topic.rb, sign_up_sheet.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2339. Reimplement signed_up_team.rb, sign_up_topic.rb, sign_up_sheet.rb (Project 4)]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2323. Refactor DueDate functionality from assignment.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2317: Reimplement participant.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2314. Reimplement the response map hierarchy]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023- NTNX-4. Extend NDB operator provision postregresql aws]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2321. Reimplement QuestionnairesController and QuestionsController]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2305. Grading audit trail]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2329. Grading audit trail(Project 4)]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2309. Refactor Node model and its subclasses]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - NTNX-2. Support provisioning mySQL databases via NDB Kubernetes Operator]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2300. Refactor E1858. Github metrics integration]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Sping 2023 - E2322: Refactor Questionnaire View to display Bookmark Rating]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - NTNX-3. Refactor models to keep profiles (software, compute, network, etc) as optional and use default if not specified]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE_517_Spring_2023_-_E2301._Refactor_review_maping_helper]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE_517_Spring_2023_-_E2330._Reimplementation_Invitation_Controller]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE_517_Spring_2023_-_E2337._Reimplement_node_hierarchy]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE_517_Spring_2023_-E2339._Reimplement signed_up_teams_controller and sign_up_topics_controller.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE_517_Spring_2023_-_E2320._Reimplement the Question Hierarchy]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE_517_Spring_2023 - E2341. UI for Participants.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE_517_Spring_2023_-_E2336._Reimplement_response.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE_517_Spring_2023_-_E2345._Reimplement_QuestionnairesController_and_QuestionsController]]&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2340._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=148871</id>
		<title>CSC/ECE 517 Spring 2023 - E2340. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb (Project 4)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2340._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=148871"/>
		<updated>2023-04-06T19:27:48Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* Design Strategy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to reimplement the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to reimplement the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation.&lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* Thorough RSpec tests are required for the reimplemented models. &lt;br /&gt;
* Change all references of sign_up_teams to signed_up_teams.&lt;br /&gt;
* Fix all code review comments.&lt;br /&gt;
* There is no designated waitlist model to handle scenarios regarding waitlisting, upgrading and handling multiple registrations.&lt;br /&gt;
* Some methods have readability concerns that needs to be refactored.&lt;br /&gt;
* There are ambiguous class and instance methods that can be optimized for better reusability.&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into sign_up_topic.rb and waitlist.rb.&lt;br /&gt;
* In sign_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| delete_team || TODO || It is responsible for deleting the team from the table and delegating any changes in topic.&lt;br /&gt;
|-&lt;br /&gt;
| serialize_display ||  TODO || It is responsible for serializing content to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
* Add necessary schema migrations for backward compatibility. &lt;br /&gt;
* In sign_up_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| destroy_topic || TODO || It is used to destroy topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || TODO || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| find_team_participants || TODO || It is used to retrieve participants assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_filled_slots || TODO || It is used to return the number of slots filled for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_available_slots || TODO || It is used to return the number of slots available for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| release_topic || TODO || It is used to remove team from the topic and delegate changes to waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| is_assigned_to_team || TODO || It is used to validate if the topic is assigned to the team&lt;br /&gt;
|-&lt;br /&gt;
| get_assigned_teams || TODO || It is used to retrieve teams assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| serialize_to_json || TODO || It is responsible for serializing content to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| count_waitlisted_teams || TODO || It is used to return the number of waitlisted teams for the particular topic.&lt;br /&gt;
|-&lt;br /&gt;
| remove_teams_from_waitlist || TODO || It is used to remove teams from the waitlist and return the removed teams.&lt;br /&gt;
|-&lt;br /&gt;
| add_teams_to_waitlist || TODO || It is used to add teams to the waitlist of the topic.&lt;br /&gt;
|-&lt;br /&gt;
| get_waitlisted_teams || TODO || It is used to retrieve the teams added to waitlist for the topic.&lt;br /&gt;
|}&lt;br /&gt;
* Refactor instance methods to be more succinct (ex: find_if_topic_available to available, create_sign_up_team to sign_up_team, drop_sign_up_team to drop_team)&lt;br /&gt;
* Rename model from “Sign Up Team” to “Signed Up Team” for better clarity.&lt;br /&gt;
* Remove is_waitlisted attribute in favor of better querying from the Waitlist model.&lt;br /&gt;
* Add tests for error conditions and exit handling.&lt;br /&gt;
* Add tests to validate usage of @counter_cache used to count relations.&lt;br /&gt;
* Create empty models (if non-existent) and add necessary model-association relations.&lt;br /&gt;
* Integrate and delegate waitlist handling from sign_up_topic.&lt;br /&gt;
* Add cascading deletes for relations to other models as appropriate.&lt;br /&gt;
* Add JSON serializers for REST API responess.&lt;br /&gt;
* Add tests using ‘shoulda-matchers’ for more exhaustive tests as appropriate.&lt;br /&gt;
* Integrate ‘FactoryBot’ for automatic model record generation during testing.&lt;br /&gt;
* Add ‘preferene_priority_number’ for backward compatibility during migration.&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
* Upgrade RSpec test cases for sign_up_team.rb to validate delete_team and get_participants.&lt;br /&gt;
* Upgrade and add RSpec test cases for sign_up_topic.rb to find participants, handle slot availability and assignment status.&lt;br /&gt;
* Create RSpec test cases for waitlist.rb to validate adding teams to waitlist, remove teams from waitlist and query status of team's waitlist.&lt;br /&gt;
* Add general RSpec test cases for error handling and validate JSON serialization.&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2340._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=148801</id>
		<title>CSC/ECE 517 Spring 2023 - E2340. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb (Project 4)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2340._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=148801"/>
		<updated>2023-04-05T22:10:16Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to reimplement the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to reimplement the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation.&lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* Thorough RSpec tests are required for the reimplemented models. &lt;br /&gt;
* Change all references of sign_up_teams to signed_up_teams.&lt;br /&gt;
* Fix all code review comments.&lt;br /&gt;
* There is no designated waitlist model to handle scenarios regarding waitlisting, upgrading and handling multiple registrations.&lt;br /&gt;
* Some methods have readability concerns that needs to be refactored.&lt;br /&gt;
* There are ambiguous class and instance methods that can be optimized for better reusability.&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into sign_up_topic.rb and waitlist.rb.&lt;br /&gt;
* In sign_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| delete_team || TODO || It is responsible for deleting the team from the table and delegating any changes in topic.&lt;br /&gt;
|-&lt;br /&gt;
| serialize_display ||  TODO || It is responsible for serializing content to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
* Add necessary schema migrations for backward compatibility. &lt;br /&gt;
* In sign_up_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| destroy_topic || TODO || It is used to destroy topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || TODO || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| find_team_participants || TODO || It is used to retrieve participants assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_filled_slots || TODO || It is used to return the number of slots filled for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_available_slots || TODO || It is used to return the number of slots available for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| release_topic || TODO || It is used to remove team from the topic and delegate changes to waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| is_assigned_to_team || TODO || It is used to validate if the topic is assigned to the team&lt;br /&gt;
|-&lt;br /&gt;
| get_assigned_teams || TODO || It is used to retrieve teams assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| serialize_to_json || TODO || It is responsible for serializing content to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| count_waitlisted_teams || TODO || It is used to return the number of waitlisted teams for the particular topic.&lt;br /&gt;
|-&lt;br /&gt;
| remove_teams_from_waitlist || TODO || It is used to remove teams from the waitlist and return the removed teams.&lt;br /&gt;
|-&lt;br /&gt;
| add_teams_to_waitlist || TODO || It is used to add teams to the waitlist of the topic.&lt;br /&gt;
|-&lt;br /&gt;
| get_waitlisted_teams || TODO || It is used to retrieve the teams added to waitlist for the topic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
* Upgrade RSpec test cases for sign_up_team.rb to validate delete_team and get_participants.&lt;br /&gt;
* Upgrade and add RSpec test cases for sign_up_topic.rb to find participants, handle slot availability and assignment status.&lt;br /&gt;
* Create RSpec test cases for waitlist.rb to validate adding teams to waitlist, remove teams from waitlist and query status of team's waitlist.&lt;br /&gt;
* Add general RSpec test cases for error handling and validate JSON serialization.&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2340._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=148792</id>
		<title>CSC/ECE 517 Spring 2023 - E2340. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb (Project 4)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2340._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=148792"/>
		<updated>2023-04-05T21:57:51Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: Created page with &amp;quot;== Team ==  * Mentor - Krishna Saurabh Vankadaru * Sai Venkata Varun Danda * Saketh Vangala * Surya Prakash Susarla * Pull Request - https://github.com/expertiza/reimplementat...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla&lt;br /&gt;
* Pull Request - https://github.com/expertiza/reimplementation-back-end/pull/19&lt;br /&gt;
* Project Board - https://github.com/users/SakethVangala11/projects/1/views/1&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to reimplement the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to reimplement the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation.&lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* Thorough RSpec tests are required for the reimplemented models. &lt;br /&gt;
* Change all references of sign_up_teams to signed_up_teams.&lt;br /&gt;
* Fix all code review comments.&lt;br /&gt;
* There is no designated waitlist model to handle scenarios regarding waitlisting, upgrading and handling multiple registrations.&lt;br /&gt;
* Some methods have readability concerns that needs to be refactored.&lt;br /&gt;
* There are ambiguous class and instance methods that can be optimized for better reusability.&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into sign_up_topic.rb and waitlist.rb.&lt;br /&gt;
* In sign_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| delete_team || TODO || It is responsible for deleting the team from the table and delegating any changes in topic.&lt;br /&gt;
|-&lt;br /&gt;
| serialize_display ||  TODO || It is responsible for serializing content to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
* Add necessary schema migrations for backward compatibility. &lt;br /&gt;
* In sign_up_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| destroy_topic || TODO || It is used to destroy topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || TODO || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| find_team_participants || TODO || It is used to retrieve participants assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_filled_slots || TODO || It is used to return the number of slots filled for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_available_slots || TODO || It is used to return the number of slots available for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| release_topic || TODO || It is used to remove team from the topic and delegate changes to waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| is_assigned_to_team || TODO || It is used to validate if the topic is assigned to the team&lt;br /&gt;
|-&lt;br /&gt;
| get_assigned_teams || TODO || It is used to retrieve teams assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| serialize_to_json || TODO || It is responsible for serializing content to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| count_waitlisted_teams || TODO || It is used to return the number of waitlisted teams for the particular topic.&lt;br /&gt;
|-&lt;br /&gt;
| remove_teams_from_waitlist || TODO || It is used to remove teams from the waitlist and return the removed teams.&lt;br /&gt;
|-&lt;br /&gt;
| add_teams_to_waitlist || TODO || It is used to add teams to the waitlist of the topic.&lt;br /&gt;
|-&lt;br /&gt;
| get_waitlisted_teams || TODO || It is used to retrieve the teams added to waitlist for the topic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
* Upgrade RSpec test cases for sign_up_team.rb to validate delete_team and get_participants.&lt;br /&gt;
* Upgrade and add RSpec test cases for sign_up_topic.rb to find participants, handle slot availability and assignment status.&lt;br /&gt;
* Create RSpec test cases for waitlist.rb to validate adding teams to waitlist, remove teams from waitlist and query status of team's waitlist.&lt;br /&gt;
* Add general RSpec test cases for error handling and validate JSON serialization.&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023&amp;diff=148791</id>
		<title>CSC/ECE 517 Spring 2023</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023&amp;diff=148791"/>
		<updated>2023-04-05T21:57:38Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* OSS Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OSS Projects ==&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 -E2306. Refactor user_controller.rb, user.rb and its child classes]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2320. Reimplement the Question hierarchy]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2312 + E2313. Reimplement response.rb and responses_controller.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - NTNX-1. Support provisioning MongoDb via NDB Kubernetes Operator]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2316. Reimplement sign_up_sheet_controller.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2315. Reimplement signed_up_team.rb, sign_up_topic.rb, sign_up_sheet.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2340. Reimplement signed_up_team.rb, sign_up_topic.rb, sign_up_sheet.rb (Project 4)]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2323. Refactor DueDate functionality from assignment.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2317: Reimplement participant.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2314. Reimplement the response map hierarchy]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023- NTNX-4. Extend NDB operator provision postregresql aws]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2321. Reimplement QuestionnairesController and QuestionsController]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2305. Grading audit trail]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2309. Refactor Node model and its subclasses]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - NTNX-2. Support provisioning mySQL databases via NDB Kubernetes Operator]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2300. Refactor E1858. Github metrics integration]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Sping 2023 - E2322: Refactor Questionnaire View to display Bookmark Rating]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - NTNX-3. Refactor models to keep profiles (software, compute, network, etc) as optional and use default if not specified]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE_517_Spring_2023_-_E2301._Refactor_review_maping_helper]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE_517_Spring_2023_-_E2337._Reimplement_node_hierarchy]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE_517_Spring_2023_-_E2320._Reimplement the Question Hierarchy]]&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023&amp;diff=148788</id>
		<title>CSC/ECE 517 Spring 2023</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023&amp;diff=148788"/>
		<updated>2023-04-05T21:55:36Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* OSS Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OSS Projects ==&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 -E2306. Refactor user_controller.rb, user.rb and its child classes]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2320. Reimplement the Question hierarchy]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2312 + E2313. Reimplement response.rb and responses_controller.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - NTNX-1. Support provisioning MongoDb via NDB Kubernetes Operator]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2316. Reimplement sign_up_sheet_controller.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2315. Reimplement signed_up_team.rb, sign_up_topic.rb, sign_up_sheet.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2339. Reimplement signed_up_team.rb, sign_up_topic.rb, sign_up_sheet.rb (Project 4)]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2323. Refactor DueDate functionality from assignment.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2317: Reimplement participant.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2314. Reimplement the response map hierarchy]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023- NTNX-4. Extend NDB operator provision postregresql aws]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2321. Reimplement QuestionnairesController and QuestionsController]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2305. Grading audit trail]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2309. Refactor Node model and its subclasses]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - NTNX-2. Support provisioning mySQL databases via NDB Kubernetes Operator]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2300. Refactor E1858. Github metrics integration]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Sping 2023 - E2322: Refactor Questionnaire View to display Bookmark Rating]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - NTNX-3. Refactor models to keep profiles (software, compute, network, etc) as optional and use default if not specified]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE_517_Spring_2023_-_E2301._Refactor_review_maping_helper]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE_517_Spring_2023_-_E2337._Reimplement_node_hierarchy]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE_517_Spring_2023_-_E2320._Reimplement the Question Hierarchy]]&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023&amp;diff=148787</id>
		<title>CSC/ECE 517 Spring 2023</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023&amp;diff=148787"/>
		<updated>2023-04-05T21:55:04Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* OSS Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OSS Projects ==&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 -E2306. Refactor user_controller.rb, user.rb and its child classes]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2320. Reimplement the Question hierarchy]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2312 + E2313. Reimplement response.rb and responses_controller.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - NTNX-1. Support provisioning MongoDb via NDB Kubernetes Operator]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2316. Reimplement sign_up_sheet_controller.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2315. Reimplement signed_up_team.rb, sign_up_topic.rb, sign_up_sheet.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2340. Reimplement signed_up_team.rb, sign_up_topic.rb, sign_up_sheet.rb (Project 4)]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2323. Refactor DueDate functionality from assignment.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2317: Reimplement participant.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2314. Reimplement the response map hierarchy]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023- NTNX-4. Extend NDB operator provision postregresql aws]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2321. Reimplement QuestionnairesController and QuestionsController]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2305. Grading audit trail]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2309. Refactor Node model and its subclasses]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - NTNX-2. Support provisioning mySQL databases via NDB Kubernetes Operator]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2300. Refactor E1858. Github metrics integration]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Sping 2023 - E2322: Refactor Questionnaire View to display Bookmark Rating]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - NTNX-3. Refactor models to keep profiles (software, compute, network, etc) as optional and use default if not specified]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE_517_Spring_2023_-_E2301._Refactor_review_maping_helper]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE_517_Spring_2023_-_E2337._Reimplement_node_hierarchy]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE_517_Spring_2023_-_E2320._Reimplement the Question Hierarchy]]&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=148784</id>
		<title>CSC/ECE 517 Spring 2023 - E2339. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb (Project 4)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2339._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb_(Project_4)&amp;diff=148784"/>
		<updated>2023-04-05T21:44:24Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: created design doc for Prog 4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla&lt;br /&gt;
* Pull Request - https://github.com/expertiza/reimplementation-back-end/pull/19&lt;br /&gt;
* Project Board - https://github.com/users/SakethVangala11/projects/1/views/1&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to reimplement the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to reimplement the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation.&lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* Thorough RSpec tests are required for the reimplemented models. &lt;br /&gt;
* Change all references of sign_up_teams to signed_up_teams.&lt;br /&gt;
* Fix all code review comments.&lt;br /&gt;
* There is no designated waitlist model to handle scenarios regarding waitlisting, upgrading and handling multiple registrations.&lt;br /&gt;
* Some methods have readability concerns that needs to be refactored.&lt;br /&gt;
* There are ambiguous class and instance methods that can be optimized for better reusability.&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into sign_up_topic.rb and waitlist.rb.&lt;br /&gt;
* In sign_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| delete_team || TODO || It is responsible for deleting the team from the table and delegating any changes in topic.&lt;br /&gt;
|-&lt;br /&gt;
| serialize_display ||  TODO || It is responsible for serializing content to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
* Add necessary schema migrations for backward compatibility. &lt;br /&gt;
* In sign_up_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| destroy_topic || TODO || It is used to destroy topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || TODO || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| find_team_participants || TODO || It is used to retrieve participants assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_filled_slots || TODO || It is used to return the number of slots filled for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| count_available_slots || TODO || It is used to return the number of slots available for the topic.&lt;br /&gt;
|-&lt;br /&gt;
| release_topic || TODO || It is used to remove team from the topic and delegate changes to waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| is_assigned_to_team || TODO || It is used to validate if the topic is assigned to the team&lt;br /&gt;
|-&lt;br /&gt;
| get_assigned_teams || TODO || It is used to retrieve teams assigned to the topic.&lt;br /&gt;
|-&lt;br /&gt;
| serialize_to_json || TODO || It is responsible for serializing content to JSON format.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| count_waitlisted_teams || TODO || It is used to return the number of waitlisted teams for the particular topic.&lt;br /&gt;
|-&lt;br /&gt;
| remove_teams_from_waitlist || TODO || It is used to remove teams from the waitlist and return the removed teams.&lt;br /&gt;
|-&lt;br /&gt;
| add_teams_to_waitlist || TODO || It is used to add teams to the waitlist of the topic.&lt;br /&gt;
|-&lt;br /&gt;
| get_waitlisted_teams || TODO || It is used to retrieve the teams added to waitlist for the topic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
* Upgrade RSpec test cases for sign_up_team.rb to validate delete_team and get_participants.&lt;br /&gt;
* Upgrade and add RSpec test cases for sign_up_topic.rb to find participants, handle slot availability and assignment status.&lt;br /&gt;
* Create RSpec test cases for waitlist.rb to validate adding teams to waitlist, remove teams from waitlist and query status of team's waitlist.&lt;br /&gt;
* Add general RSpec test cases for error handling and validate JSON serialization.&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023&amp;diff=148780</id>
		<title>CSC/ECE 517 Spring 2023</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023&amp;diff=148780"/>
		<updated>2023-04-05T20:44:23Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* OSS Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OSS Projects ==&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 -E2306. Refactor user_controller.rb, user.rb and its child classes]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2320. Reimplement the Question hierarchy]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2312 + E2313. Reimplement response.rb and responses_controller.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - NTNX-1. Support provisioning MongoDb via NDB Kubernetes Operator]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2316. Reimplement sign_up_sheet_controller.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2315. Reimplement signed_up_team.rb, sign_up_topic.rb, sign_up_sheet.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2339. Reimplement signed_up_team.rb, sign_up_topic.rb, sign_up_sheet.rb (Project 4)]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring_2023 - E2323. Refactor DueDate functionality from assignment.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2317: Reimplement participant.rb]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2314. Reimplement the response map hierarchy]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023- NTNX-4. Extend NDB operator provision postregresql aws]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2321. Reimplement QuestionnairesController and QuestionsController]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2305. Grading audit trail]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2309. Refactor Node model and its subclasses]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - NTNX-2. Support provisioning mySQL databases via NDB Kubernetes Operator]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - E2300. Refactor E1858. Github metrics integration]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Sping 2023 - E2322: Refactor Questionnaire View to display Bookmark Rating]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE 517 Spring 2023 - NTNX-3. Refactor models to keep profiles (software, compute, network, etc) as optional and use default if not specified]]&lt;br /&gt;
&lt;br /&gt;
[[CSC/ECE_517_Spring_2023_-_E2301._Refactor_review_maping_helper]]&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=148448</id>
		<title>CSC/ECE 517 Spring 2023 - E2315. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=148448"/>
		<updated>2023-03-27T22:20:48Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* Team */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source software written using Ruby on Rails which functions as a learning management software system. It has many different functions and abilities including the ability to create assignments, quizzes, assignment groups and topics, and also a complete mechanism for providing peer reviews and feedback for other groups and other teammates. It includes functionality to assign a project topic for each team. If it is not available, then it waitlists the team in case if the topic is available. The sign_up_team.rb, sign_up_topic.rb and sign_up_sheet.rb are the model classes in this project to provide this functionality.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla&lt;br /&gt;
* Pull Request - https://github.com/expertiza/reimplementation-back-end/pull/19&lt;br /&gt;
* Project Board - https://github.com/users/SakethVangala11/projects/1/views/1&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to reimplement the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to reimplement the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation.&lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into sign_up_topic.rb and waitlist.rb.&lt;br /&gt;
* In sign_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_sign_up_team || Implemented || It is responsible for creating a new sign up team in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_sign_up_team || Implemented || It is responsible for deleting a sign up team from the table.&lt;br /&gt;
|-&lt;br /&gt;
| find_team_participants || Implemented || It is used to get participants in the team signed up for the given topic.&lt;br /&gt;
|-&lt;br /&gt;
| update_sign_up_team || TODO || It is responsible for adding/removing a team member from the sign up team and updating the changes in the table.&lt;br /&gt;
|-&lt;br /&gt;
| release_topics || TODO || It is used to update the waitlist and release topics.  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:signupteam-1.jpeg]]&lt;br /&gt;
[[File:signupteam-2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
* In sign_up_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_topic || Implemented || It is used to create a new topic in the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || Implemented || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_topic || Implemented || It is used to remove the sign up topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| format_for_display || Implemented || It is used to return the formatted topic name.&lt;br /&gt;
|-&lt;br /&gt;
| find_if_topic_available? || Implemented || It is used to fetch available topic for further selection. A topic is considered available if the total number of teams assigned to the topic are less than the maximum choosers allowed.&lt;br /&gt;
|-&lt;br /&gt;
| update_waitlisted_users || TODO || It is used to send update to all waitlisted users regarding waitlist changes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:signuptopic-1.jpeg]]&lt;br /&gt;
[[File:signuptopic-2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| add_team_to_waitlist || TODO || It is used to add a sign up team to the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| assign_topic_to_team || TODO || It is used to assign the topic to a team in the waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_waitlist || TODO || It is used to remove a sign up team from the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| destroy_waitlist || TODO || It is used to remove all the sign up teams from the topic’s waitlist.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
We have implemented test cases using RSpec for different validation checks for both sign_up_team.rb and sign_up_topic.rb. The other test cases include 'create' tests that validate whether the utility methods can create the records in the table as expected. Moreover, 'update' test cases are included to validate whether the modifications are updated in the table. Finally, we perform 'destroy' tests to validate whether the record is deleted from the table. We also added unit tests that validate other instance methods, such as format_for_display, in both SignUpTeam and SignUpTopic model classes. We created helper stubs for the new methods yet to be implemented to perform the testing process smoothly. We have attached the unit test assessment video as shown here https://vimeo.com/810685088&lt;br /&gt;
&lt;br /&gt;
[[File:unit_test-1.jpeg]]&lt;br /&gt;
[[File:unit_test-2.jpeg]]&lt;br /&gt;
[[File:unit_test-3.jpeg]]&lt;br /&gt;
[[File:unit_test-4.jpeg]]&lt;br /&gt;
&lt;br /&gt;
== Future Plan ==&lt;br /&gt;
&lt;br /&gt;
The future scope of this project is to implement waitlist.rb model class that handles the functions related to adding/removing sign up teams to the waitlist for each topic. There are other instance methods in both sign_up_team.rb and sign_up_topic.rb that requires implementation. But, since they are dependent on other model classes, we have added them to our TODO list to implement them in the future.&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=148311</id>
		<title>CSC/ECE 517 Spring 2023 - E2315. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=148311"/>
		<updated>2023-03-23T21:49:06Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* Project Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source software written using Ruby on Rails which functions as a learning management software system. It has many different functions and abilities including the ability to create assignments, quizzes, assignment groups and topics, and also a complete mechanism for providing peer reviews and feedback for other groups and other teammates. It includes functionality to assign a project topic for each team. If it is not available, then it waitlists the team in case if the topic is available. The sign_up_team.rb, sign_up_topic.rb and sign_up_sheet.rb are the model classes in this project to provide this functionality.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla&lt;br /&gt;
* Pull Request - https://github.com/expertiza/reimplementation-back-end/pull/19&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to reimplement the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to reimplement the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation.&lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into sign_up_topic.rb and waitlist.rb.&lt;br /&gt;
* In sign_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_sign_up_team || Implemented || It is responsible for creating a new sign up team in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_sign_up_team || Implemented || It is responsible for deleting a sign up team from the table.&lt;br /&gt;
|-&lt;br /&gt;
| find_team_participants || Implemented || It is used to get participants in the team signed up for the given topic.&lt;br /&gt;
|-&lt;br /&gt;
| update_sign_up_team || TODO || It is responsible for adding/removing a team member from the sign up team and updating the changes in the table.&lt;br /&gt;
|-&lt;br /&gt;
| release_topics || TODO || It is used to update the waitlist and release topics.  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:signupteam-1.jpeg]]&lt;br /&gt;
[[File:signupteam-2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
* In sign_up_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_topic || Implemented || It is used to create a new topic in the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || Implemented || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_topic || Implemented || It is used to remove the sign up topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| format_for_display || Implemented || It is used to return the formatted topic name.&lt;br /&gt;
|-&lt;br /&gt;
| find_if_topic_available? || Implemented || It is used to fetch available topic for further selection. A topic is considered available if the total number of teams assigned to the topic are less than the maximum choosers allowed.&lt;br /&gt;
|-&lt;br /&gt;
| update_waitlisted_users || TODO || It is used to send update to all waitlisted users regarding waitlist changes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:signuptopic-1.jpeg]]&lt;br /&gt;
[[File:signuptopic-2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| add_team_to_waitlist || TODO || It is used to add a sign up team to the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| assign_topic_to_team || TODO || It is used to assign the topic to a team in the waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_waitlist || TODO || It is used to remove a sign up team from the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| destroy_waitlist || TODO || It is used to remove all the sign up teams from the topic’s waitlist.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
We have implemented test cases using RSpec for different validation checks for both sign_up_team.rb and sign_up_topic.rb. The other test cases include 'create' tests that validate whether the utility methods can create the records in the table as expected. Moreover, 'update' test cases are included to validate whether the modifications are updated in the table. Finally, we perform 'destroy' tests to validate whether the record is deleted from the table. We also added unit tests that validate other instance methods, such as format_for_display, in both SignUpTeam and SignUpTopic model classes. We created helper stubs for the new methods yet to be implemented to perform the testing process smoothly. We have attached the unit test assessment video as shown here https://vimeo.com/810685088&lt;br /&gt;
&lt;br /&gt;
[[File:unit_test-1.jpeg]]&lt;br /&gt;
[[File:unit_test-2.jpeg]]&lt;br /&gt;
[[File:unit_test-3.jpeg]]&lt;br /&gt;
[[File:unit_test-4.jpeg]]&lt;br /&gt;
&lt;br /&gt;
== Future Plan ==&lt;br /&gt;
&lt;br /&gt;
The future scope of this project is to implement waitlist.rb model class that handles the functions related to adding/removing sign up teams to the waitlist for each topic. There are other instance methods in both sign_up_team.rb and sign_up_topic.rb that requires implementation. But, since they are dependent on other model classes, we have added them to our TODO list to implement them in the future.&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=148310</id>
		<title>CSC/ECE 517 Spring 2023 - E2315. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=148310"/>
		<updated>2023-03-23T21:48:16Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* Project Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source software written using Ruby on Rails which functions as a learning management software system. It has many different functions and abilities including the ability to create assignments, quizzes, assignment groups and topics, and also a complete mechanism for providing peer reviews and feedback for other groups and other teammates. It includes functionality to assign a project topic for each team. If it is not available, then it waitlists the team in case if the topic is available. The sign_up_team.rb, sign_up_topic.rb and sign_up_sheet.rb are the model classes in this project to provide this functionality.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla&lt;br /&gt;
* Pull Request - https://github.com/expertiza/reimplementation-back-end/pull/19&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to reimplement the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to refactor the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation.&lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into sign_up_topic.rb and waitlist.rb.&lt;br /&gt;
* In sign_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_sign_up_team || Implemented || It is responsible for creating a new sign up team in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_sign_up_team || Implemented || It is responsible for deleting a sign up team from the table.&lt;br /&gt;
|-&lt;br /&gt;
| find_team_participants || Implemented || It is used to get participants in the team signed up for the given topic.&lt;br /&gt;
|-&lt;br /&gt;
| update_sign_up_team || TODO || It is responsible for adding/removing a team member from the sign up team and updating the changes in the table.&lt;br /&gt;
|-&lt;br /&gt;
| release_topics || TODO || It is used to update the waitlist and release topics.  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:signupteam-1.jpeg]]&lt;br /&gt;
[[File:signupteam-2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
* In sign_up_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_topic || Implemented || It is used to create a new topic in the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || Implemented || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_topic || Implemented || It is used to remove the sign up topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| format_for_display || Implemented || It is used to return the formatted topic name.&lt;br /&gt;
|-&lt;br /&gt;
| find_if_topic_available? || Implemented || It is used to fetch available topic for further selection. A topic is considered available if the total number of teams assigned to the topic are less than the maximum choosers allowed.&lt;br /&gt;
|-&lt;br /&gt;
| update_waitlisted_users || TODO || It is used to send update to all waitlisted users regarding waitlist changes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:signuptopic-1.jpeg]]&lt;br /&gt;
[[File:signuptopic-2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| add_team_to_waitlist || TODO || It is used to add a sign up team to the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| assign_topic_to_team || TODO || It is used to assign the topic to a team in the waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_waitlist || TODO || It is used to remove a sign up team from the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| destroy_waitlist || TODO || It is used to remove all the sign up teams from the topic’s waitlist.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
We have implemented test cases using RSpec for different validation checks for both sign_up_team.rb and sign_up_topic.rb. The other test cases include 'create' tests that validate whether the utility methods can create the records in the table as expected. Moreover, 'update' test cases are included to validate whether the modifications are updated in the table. Finally, we perform 'destroy' tests to validate whether the record is deleted from the table. We also added unit tests that validate other instance methods, such as format_for_display, in both SignUpTeam and SignUpTopic model classes. We created helper stubs for the new methods yet to be implemented to perform the testing process smoothly. We have attached the unit test assessment video as shown here https://vimeo.com/810685088&lt;br /&gt;
&lt;br /&gt;
[[File:unit_test-1.jpeg]]&lt;br /&gt;
[[File:unit_test-2.jpeg]]&lt;br /&gt;
[[File:unit_test-3.jpeg]]&lt;br /&gt;
[[File:unit_test-4.jpeg]]&lt;br /&gt;
&lt;br /&gt;
== Future Plan ==&lt;br /&gt;
&lt;br /&gt;
The future scope of this project is to implement waitlist.rb model class that handles the functions related to adding/removing sign up teams to the waitlist for each topic. There are other instance methods in both sign_up_team.rb and sign_up_topic.rb that requires implementation. But, since they are dependent on other model classes, we have added them to our TODO list to implement them in the future.&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=147975</id>
		<title>CSC/ECE 517 Spring 2023 - E2315. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=147975"/>
		<updated>2023-03-22T21:34:57Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source software written using Ruby on Rails which functions as a learning management software system. It has many different functions and abilities including the ability to create assignments, quizzes, assignment groups and topics, and also a complete mechanism for providing peer reviews and feedback for other groups and other teammates. It includes functionality to assign a project topic for each team. If it is not available, then it waitlists the team in case if the topic is available. The sign_up_team.rb, sign_up_topic.rb and sign_up_sheet.rb are the model classes in this project to provide this functionality.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla&lt;br /&gt;
* Pull Request - https://github.com/expertiza/reimplementation-back-end/pull/19&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to refactor the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to refactor the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation. &lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into sign_up_topic.rb and waitlist.rb.&lt;br /&gt;
* In sign_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_sign_up_team || Implemented || It is responsible for creating a new sign up team in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_sign_up_team || Implemented || It is responsible for deleting a sign up team from the table.&lt;br /&gt;
|-&lt;br /&gt;
| find_team_participants || Implemented || It is used to get participants in the team signed up for the given topic.&lt;br /&gt;
|-&lt;br /&gt;
| update_sign_up_team || TODO || It is responsible for adding/removing a team member from the sign up team and updating the changes in the table.&lt;br /&gt;
|-&lt;br /&gt;
| release_topics || TODO || It is used to update the waitlist and release topics.  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:signupteam-1.jpeg]]&lt;br /&gt;
[[File:signupteam-2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
* In sign_up_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_topic || Implemented || It is used to create a new topic in the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || Implemented || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_topic || Implemented || It is used to remove the sign up topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| format_for_display || Implemented || It is used to return the formatted topic name.&lt;br /&gt;
|-&lt;br /&gt;
| find_if_topic_available? || Implemented || It is used to fetch available topic for further selection. A topic is considered available if the total number of teams assigned to the topic are less than the maximum choosers allowed.&lt;br /&gt;
|-&lt;br /&gt;
| update_waitlisted_users || TODO || It is used to send update to all waitlisted users regarding waitlist changes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:signuptopic-1.jpeg]]&lt;br /&gt;
[[File:signuptopic-2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| add_team_to_waitlist || TODO || It is used to add a sign up team to the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| assign_topic_to_team || TODO || It is used to assign the topic to a team in the waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_waitlist || TODO || It is used to remove a sign up team from the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| destroy_waitlist || TODO || It is used to remove all the sign up teams from the topic’s waitlist.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
We have implemented test cases using RSpec for different validation checks for both sign_up_team.rb and sign_up_topic.rb. The other test cases include 'create' tests that validate whether the utility methods can create the records in the table as expected. Moreover, 'update' test cases are included to validate whether the modifications are updated in the table. Finally, we perform 'destroy' tests to validate whether the record is deleted from the table. We also added unit tests that validate other instance methods, such as format_for_display, in both SignUpTeam and SignUpTopic model classes. We created helper stubs for the new methods yet to be implemented to perform the testing process smoothly. We have attached the unit test assessment video as shown here https://vimeo.com/810685088&lt;br /&gt;
&lt;br /&gt;
[[File:unit_test-1.jpeg]]&lt;br /&gt;
[[File:unit_test-2.jpeg]]&lt;br /&gt;
[[File:unit_test-3.jpeg]]&lt;br /&gt;
[[File:unit_test-4.jpeg]]&lt;br /&gt;
&lt;br /&gt;
== Future Plan ==&lt;br /&gt;
&lt;br /&gt;
The future scope of this project is to implement waitlist.rb model class that handles the functions related to adding/removing sign up teams to the waitlist for each topic. There are other instance methods in both sign_up_team.rb and sign_up_topic.rb that requires implementation. But, since they are dependent on other model classes, we have added them to our TODO list to implement them in the future.&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=147974</id>
		<title>CSC/ECE 517 Spring 2023 - E2315. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=147974"/>
		<updated>2023-03-22T21:34:31Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* Team */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source software written using Ruby on Rails which functions as a learning management software system. It has many different functions and abilities including the ability to create assignments, quizzes, assignment groups and topics, and also a complete mechanism for providing peer reviews and feedback for other groups and other teammates. It includes functionality to assign a project topic for each team. If it is not available, then it waitlists the team in case if the topic is available. The sign_up_team.rb, sign_up_topic.rb and sign_up_sheet.rb are the model classes in this project to provide this functionality.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla&lt;br /&gt;
* Pull Request - https://github.com/expertiza/reimplementation-back-end/pull/19&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to refactor the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to refactor the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation. &lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into sign_up_topic.rb and waitlist.rb.&lt;br /&gt;
* In sign_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_sign_up_team || Implemented || It is responsible for creating a new sign up team in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_sign_up_team || Implemented || It is responsible for deleting a sign up team from the table.&lt;br /&gt;
|-&lt;br /&gt;
| find_team_participants || Implemented || It is used to get participants in the team signed up for the given topic.&lt;br /&gt;
|-&lt;br /&gt;
| update_sign_up_team || TODO || It is responsible for adding/removing a team member from the sign up team and updating the changes in the table.&lt;br /&gt;
|-&lt;br /&gt;
| release_topics || TODO || It is used to update the waitlist and release topics.  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:signupteam-1.jpeg]]&lt;br /&gt;
[[File:signupteam-2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
* In sign_up_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_topic || Implemented || It is used to create a new topic in the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || Implemented || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_topic || Implemented || It is used to remove the sign up topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| format_for_display || Implemented || It is used to return the formatted topic name.&lt;br /&gt;
|-&lt;br /&gt;
| find_if_topic_available? || Implemented || It is used to fetch available topic for further selection. A topic is considered available if the total number of teams assigned to the topic are less than the maximum choosers allowed.&lt;br /&gt;
|-&lt;br /&gt;
| update_waitlisted_users || TODO || It is used to send update to all waitlisted users regarding waitlist changes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:signuptopic-1.jpeg]]&lt;br /&gt;
[[File:signuptopic-2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| add_team_to_waitlist || TODO || It is used to add a sign up team to the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| assign_topic_to_team || TODO || It is used to assign the topic to a team in the waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_waitlist || TODO || It is used to remove a sign up team from the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| destroy_waitlist || TODO || It is used to remove all the sign up teams from the topic’s waitlist.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
We have implemented test cases using RSpec for different validation checks for both sign_up_team.rb and sign_up_topic.rb. The other test cases include 'create' tests that validate whether the utility methods can create the records in the table as expected. Moreover, 'update' test cases are included to validate whether the modifications are updated in the table. Finally, we perform 'destroy' tests to validate whether the record is deleted from the table. We also added unit tests that validate other instance methods, such as format_for_display, in both SignUpTeam and SignUpTopic model classes. We created helper stubs for the new methods yet to be implemented to perform the testing process smoothly. We have attached the unit test assessment video as shown [https://vimeo.com/810685088 here]&lt;br /&gt;
&lt;br /&gt;
[[File:unit_test-1.jpeg]]&lt;br /&gt;
[[File:unit_test-2.jpeg]]&lt;br /&gt;
[[File:unit_test-3.jpeg]]&lt;br /&gt;
[[File:unit_test-4.jpeg]]&lt;br /&gt;
&lt;br /&gt;
== Future Plan ==&lt;br /&gt;
&lt;br /&gt;
The future scope of this project is to implement waitlist.rb model class that handles the functions related to adding/removing sign up teams to the waitlist for each topic. There are other instance methods in both sign_up_team.rb and sign_up_topic.rb that requires implementation. But, since they are dependent on other model classes, we have added them to our TODO list to implement them in the future.&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=147972</id>
		<title>CSC/ECE 517 Spring 2023 - E2315. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=147972"/>
		<updated>2023-03-22T21:34:01Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* Team */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source software written using Ruby on Rails which functions as a learning management software system. It has many different functions and abilities including the ability to create assignments, quizzes, assignment groups and topics, and also a complete mechanism for providing peer reviews and feedback for other groups and other teammates. It includes functionality to assign a project topic for each team. If it is not available, then it waitlists the team in case if the topic is available. The sign_up_team.rb, sign_up_topic.rb and sign_up_sheet.rb are the model classes in this project to provide this functionality.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla&lt;br /&gt;
* PR Link - https://github.com/expertiza/reimplementation-back-end/pull/19&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to refactor the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to refactor the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation. &lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into sign_up_topic.rb and waitlist.rb.&lt;br /&gt;
* In sign_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_sign_up_team || Implemented || It is responsible for creating a new sign up team in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_sign_up_team || Implemented || It is responsible for deleting a sign up team from the table.&lt;br /&gt;
|-&lt;br /&gt;
| find_team_participants || Implemented || It is used to get participants in the team signed up for the given topic.&lt;br /&gt;
|-&lt;br /&gt;
| update_sign_up_team || TODO || It is responsible for adding/removing a team member from the sign up team and updating the changes in the table.&lt;br /&gt;
|-&lt;br /&gt;
| release_topics || TODO || It is used to update the waitlist and release topics.  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:signupteam-1.jpeg]]&lt;br /&gt;
[[File:signupteam-2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
* In sign_up_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_topic || Implemented || It is used to create a new topic in the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || Implemented || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_topic || Implemented || It is used to remove the sign up topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| format_for_display || Implemented || It is used to return the formatted topic name.&lt;br /&gt;
|-&lt;br /&gt;
| find_if_topic_available? || Implemented || It is used to fetch available topic for further selection. A topic is considered available if the total number of teams assigned to the topic are less than the maximum choosers allowed.&lt;br /&gt;
|-&lt;br /&gt;
| update_waitlisted_users || TODO || It is used to send update to all waitlisted users regarding waitlist changes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:signuptopic-1.jpeg]]&lt;br /&gt;
[[File:signuptopic-2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| add_team_to_waitlist || TODO || It is used to add a sign up team to the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| assign_topic_to_team || TODO || It is used to assign the topic to a team in the waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_waitlist || TODO || It is used to remove a sign up team from the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| destroy_waitlist || TODO || It is used to remove all the sign up teams from the topic’s waitlist.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
We have implemented test cases using RSpec for different validation checks for both sign_up_team.rb and sign_up_topic.rb. The other test cases include 'create' tests that validate whether the utility methods can create the records in the table as expected. Moreover, 'update' test cases are included to validate whether the modifications are updated in the table. Finally, we perform 'destroy' tests to validate whether the record is deleted from the table. We also added unit tests that validate other instance methods, such as format_for_display, in both SignUpTeam and SignUpTopic model classes. We created helper stubs for the new methods yet to be implemented to perform the testing process smoothly. We have attached the unit test assessment video as shown [https://vimeo.com/810685088 here]&lt;br /&gt;
&lt;br /&gt;
[[File:unit_test-1.jpeg]]&lt;br /&gt;
[[File:unit_test-2.jpeg]]&lt;br /&gt;
[[File:unit_test-3.jpeg]]&lt;br /&gt;
[[File:unit_test-4.jpeg]]&lt;br /&gt;
&lt;br /&gt;
== Future Plan ==&lt;br /&gt;
&lt;br /&gt;
The future scope of this project is to implement waitlist.rb model class that handles the functions related to adding/removing sign up teams to the waitlist for each topic. There are other instance methods in both sign_up_team.rb and sign_up_topic.rb that requires implementation. But, since they are dependent on other model classes, we have added them to our TODO list to implement them in the future.&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=147958</id>
		<title>CSC/ECE 517 Spring 2023 - E2315. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=147958"/>
		<updated>2023-03-22T21:22:36Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* Design Strategy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source software written using Ruby on Rails which functions as a learning management software system. It has many different functions and abilities including the ability to create assignments, quizzes, assignment groups and topics, and also a complete mechanism for providing peer reviews and feedback for other groups and other teammates. It includes functionality to assign a project topic for each team. If it is not available, then it waitlists the team in case if the topic is available. The sign_up_team.rb, sign_up_topic.rb and sign_up_sheet.rb are the model classes in this project to provide this functionality.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla &lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to refactor the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to refactor the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation. &lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into sign_up_topic.rb and waitlist.rb.&lt;br /&gt;
* In sign_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_sign_up_team || Implemented || It is responsible for creating a new sign up team in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_sign_up_team || Implemented || It is responsible for deleting a sign up team from the table.&lt;br /&gt;
|-&lt;br /&gt;
| find_team_participants || Implemented || It is used to get participants in the team signed up for the given topic.&lt;br /&gt;
|-&lt;br /&gt;
| update_sign_up_team || TODO || It is responsible for adding/removing a team member from the sign up team and updating the changes in the table.&lt;br /&gt;
|-&lt;br /&gt;
| release_topics || TODO || It is used to update the waitlist and release topics.  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:signupteam-1.jpeg]]&lt;br /&gt;
[[File:signupteam-2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
* In sign_up_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_topic || Implemented || It is used to create a new topic in the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || Implemented || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_topic || Implemented || It is used to remove the sign up topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| format_for_display || Implemented || It is used to return the formatted topic name.&lt;br /&gt;
|-&lt;br /&gt;
| find_if_topic_available? || Implemented || It is used to fetch available topic for further selection. A topic is considered available if the total number of teams assigned to the topic are less than the maximum choosers allowed.&lt;br /&gt;
|-&lt;br /&gt;
| update_waitlisted_users || TODO || It is used to send update to all waitlisted users regarding waitlist changes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:signuptopic-1.jpeg]]&lt;br /&gt;
[[File:signuptopic-2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| add_team_to_waitlist || TODO || It is used to add a sign up team to the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| assign_topic_to_team || TODO || It is used to assign the topic to a team in the waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_waitlist || TODO || It is used to remove a sign up team from the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| destroy_waitlist || TODO || It is used to remove all the sign up teams from the topic’s waitlist.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
We have implemented test cases using RSpec for different validation checks for both sign_up_team.rb and sign_up_topic.rb. The other test cases include 'create' tests that validate whether the utility methods can create the records in the table as expected. Moreover, 'update' test cases are included to validate whether the modifications are updated in the table. Finally, we perform 'destroy' tests to validate whether the record is deleted from the table. We also added unit tests that validate other instance methods, such as format_for_display, in both SignUpTeam and SignUpTopic model classes. We created helper stubs for the new methods yet to be implemented to perform the testing process smoothly. We have attached the unit test assessment video as shown [https://vimeo.com/810685088 here]&lt;br /&gt;
&lt;br /&gt;
[[File:unit_test-1.jpeg]]&lt;br /&gt;
[[File:unit_test-2.jpeg]]&lt;br /&gt;
[[File:unit_test-3.jpeg]]&lt;br /&gt;
[[File:unit_test-4.jpeg]]&lt;br /&gt;
&lt;br /&gt;
== Future Plan ==&lt;br /&gt;
&lt;br /&gt;
The future scope of this project is to implement waitlist.rb model class that handles the functions related to adding/removing sign up teams to the waitlist for each topic. There are other instance methods in both sign_up_team.rb and sign_up_topic.rb that requires implementation. But, since they are dependent on other model classes, we have added them to our TODO list to implement them in the future.&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Signuptopic-2.jpeg&amp;diff=147956</id>
		<title>File:Signuptopic-2.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Signuptopic-2.jpeg&amp;diff=147956"/>
		<updated>2023-03-22T21:20:41Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Signuptopic-1.jpeg&amp;diff=147954</id>
		<title>File:Signuptopic-1.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Signuptopic-1.jpeg&amp;diff=147954"/>
		<updated>2023-03-22T21:20:27Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Signupteam-2.jpeg&amp;diff=147953</id>
		<title>File:Signupteam-2.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Signupteam-2.jpeg&amp;diff=147953"/>
		<updated>2023-03-22T21:20:10Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Signupteam-1.jpeg&amp;diff=147951</id>
		<title>File:Signupteam-1.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Signupteam-1.jpeg&amp;diff=147951"/>
		<updated>2023-03-22T21:19:55Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=147949</id>
		<title>CSC/ECE 517 Spring 2023 - E2315. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=147949"/>
		<updated>2023-03-22T21:17:11Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source software written using Ruby on Rails which functions as a learning management software system. It has many different functions and abilities including the ability to create assignments, quizzes, assignment groups and topics, and also a complete mechanism for providing peer reviews and feedback for other groups and other teammates. It includes functionality to assign a project topic for each team. If it is not available, then it waitlists the team in case if the topic is available. The sign_up_team.rb, sign_up_topic.rb and sign_up_sheet.rb are the model classes in this project to provide this functionality.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla &lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to refactor the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to refactor the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation. &lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into sign_up_topic.rb and waitlist.rb.&lt;br /&gt;
* In sign_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_sign_up_team || Implemented || It is responsible for creating a new sign up team in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_sign_up_team || Implemented || It is responsible for deleting a sign up team from the table.&lt;br /&gt;
|-&lt;br /&gt;
| find_team_participants || Implemented || It is used to get participants in the team signed up for the given topic.&lt;br /&gt;
|-&lt;br /&gt;
| update_sign_up_team || TODO || It is responsible for adding/removing a team member from the sign up team and updating the changes in the table.&lt;br /&gt;
|-&lt;br /&gt;
| release_topics || TODO || It is used to update the waitlist and release topics.  &lt;br /&gt;
|}&lt;br /&gt;
* In sign_up_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_topic || Implemented || It is used to create a new topic in the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || Implemented || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_topic || Implemented || It is used to remove the sign up topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| format_for_display || Implemented || It is used to return the formatted topic name.&lt;br /&gt;
|-&lt;br /&gt;
| find_if_topic_available? || Implemented || It is used to fetch available topic for further selection. A topic is considered available if the total number of teams assigned to the topic are less than the maximum choosers allowed.&lt;br /&gt;
|-&lt;br /&gt;
| update_waitlisted_users || TODO || It is used to send update to all waitlisted users regarding waitlist changes.&lt;br /&gt;
|}&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| add_team_to_waitlist || TODO || It is used to add a sign up team to the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| assign_topic_to_team || TODO || It is used to assign the topic to a team in the waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_waitlist || TODO || It is used to remove a sign up team from the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| destroy_waitlist || TODO || It is used to remove all the sign up teams from the topic’s waitlist.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
We have implemented test cases using RSpec for different validation checks for both sign_up_team.rb and sign_up_topic.rb. The other test cases include 'create' tests that validate whether the utility methods can create the records in the table as expected. Moreover, 'update' test cases are included to validate whether the modifications are updated in the table. Finally, we perform 'destroy' tests to validate whether the record is deleted from the table. We also added unit tests that validate other instance methods, such as format_for_display, in both SignUpTeam and SignUpTopic model classes. We created helper stubs for the new methods yet to be implemented to perform the testing process smoothly. We have attached the unit test assessment video as shown [https://vimeo.com/810685088 here]&lt;br /&gt;
&lt;br /&gt;
[[File:unit_test-1.jpeg]]&lt;br /&gt;
[[File:unit_test-2.jpeg]]&lt;br /&gt;
[[File:unit_test-3.jpeg]]&lt;br /&gt;
[[File:unit_test-4.jpeg]]&lt;br /&gt;
&lt;br /&gt;
== Future Plan ==&lt;br /&gt;
&lt;br /&gt;
The future scope of this project is to implement waitlist.rb model class that handles the functions related to adding/removing sign up teams to the waitlist for each topic. There are other instance methods in both sign_up_team.rb and sign_up_topic.rb that requires implementation. But, since they are dependent on other model classes, we have added them to our TODO list to implement them in the future.&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Unit_test-4.jpeg&amp;diff=147948</id>
		<title>File:Unit test-4.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Unit_test-4.jpeg&amp;diff=147948"/>
		<updated>2023-03-22T21:15:13Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Unit_test-3.jpeg&amp;diff=147947</id>
		<title>File:Unit test-3.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Unit_test-3.jpeg&amp;diff=147947"/>
		<updated>2023-03-22T21:14:58Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Unit_test-2.jpeg&amp;diff=147946</id>
		<title>File:Unit test-2.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Unit_test-2.jpeg&amp;diff=147946"/>
		<updated>2023-03-22T21:14:36Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Unit_test-1.jpeg&amp;diff=147945</id>
		<title>File:Unit test-1.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Unit_test-1.jpeg&amp;diff=147945"/>
		<updated>2023-03-22T21:14:19Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=147941</id>
		<title>CSC/ECE 517 Spring 2023 - E2315. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=147941"/>
		<updated>2023-03-22T21:04:18Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source software written using Ruby on Rails which functions as a learning management software system. It has many different functions and abilities including the ability to create assignments, quizzes, assignment groups and topics, and also a complete mechanism for providing peer reviews and feedback for other groups and other teammates. It includes functionality to assign a project topic for each team. If it is not available, then it waitlists the team in case if the topic is available. The sign_up_team.rb, sign_up_topic.rb and sign_up_sheet.rb are the model classes in this project to provide this functionality.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla &lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to refactor the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to refactor the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation. &lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into sign_up_topic.rb and waitlist.rb.&lt;br /&gt;
* In sign_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_sign_up_team || Implemented || It is responsible for creating a new sign up team in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_sign_up_team || Implemented || It is responsible for deleting a sign up team from the table.&lt;br /&gt;
|-&lt;br /&gt;
| find_team_participants || Implemented || It is used to get participants in the team signed up for the given topic.&lt;br /&gt;
|-&lt;br /&gt;
| update_sign_up_team || TODO || It is responsible for adding/removing a team member from the sign up team and updating the changes in the table.&lt;br /&gt;
|-&lt;br /&gt;
| release_topics || TODO || It is used to update the waitlist and release topics.  &lt;br /&gt;
|}&lt;br /&gt;
* In sign_up_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_topic || Implemented || It is used to create a new topic in the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || Implemented || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_topic || Implemented || It is used to remove the sign up topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| format_for_display || Implemented || It is used to return the formatted topic name.&lt;br /&gt;
|-&lt;br /&gt;
| find_if_topic_available? || Implemented || It is used to fetch available topic for further selection. A topic is considered available if the total number of teams assigned to the topic are less than the maximum choosers allowed.&lt;br /&gt;
|-&lt;br /&gt;
| update_waitlisted_users || TODO || It is used to send update to all waitlisted users regarding waitlist changes.&lt;br /&gt;
|}&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| add_team_to_waitlist || TODO || It is used to add a sign up team to the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| assign_topic_to_team || TODO || It is used to assign the topic to a team in the waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_waitlist || TODO || It is used to remove a sign up team from the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| destroy_waitlist || TODO || It is used to remove all the sign up teams from the topic’s waitlist.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
We have implemented test cases using RSpec for different validation checks for both sign_up_team.rb and sign_up_topic.rb. The other test cases include 'create' tests that validate whether the utility methods can create the records in the table as expected. Moreover, 'update' test cases are included to validate whether the modifications are updated in the table. Finally, we perform 'destroy' tests to validate whether the record is deleted from the table. We also added unit tests that validate other instance methods, such as format_for_display, in both SignUpTeam and SignUpTopic model classes. We created helper stubs for the new methods yet to be implemented to perform the testing process smoothly. We have attached the unit test assessment video as shown [https://vimeo.com/810685088 here]&lt;br /&gt;
&lt;br /&gt;
== Future Plan ==&lt;br /&gt;
&lt;br /&gt;
The future scope of this project is to implement waitlist.rb model class that handles the functions related to adding/removing sign up teams to the waitlist for each topic. There are other instance methods in both sign_up_team.rb and sign_up_topic.rb that requires implementation. But, since they are dependent on other model classes, we have added them to our TODO list to implement them in the future.&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=147928</id>
		<title>CSC/ECE 517 Spring 2023 - E2315. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=147928"/>
		<updated>2023-03-22T20:53:09Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: added team members&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source software written using Ruby on Rails which functions as a learning management software system. It has many different functions and abilities including the ability to create assignments, quizzes, assignment groups and topics, and also a complete mechanism for providing peer reviews and feedback for other groups and other teammates. It includes functionality to assign a project topic for each team. If it is not available, then it waitlists the team in case if the topic is available. The sign_up_team.rb, sign_up_topic.rb and sign_up_sheet.rb are the model classes in this project to provide this functionality.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
* Mentor - Krishna Saurabh Vankadaru&lt;br /&gt;
* Sai Venkata Varun Danda&lt;br /&gt;
* Saketh Vangala&lt;br /&gt;
* Surya Prakash Susarla &lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to refactor the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to refactor the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation. &lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into sign_up_topic.rb and waitlist.rb.&lt;br /&gt;
* In sign_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_sign_up_team || Implemented || It is responsible for creating a new sign up team in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_sign_up_team || Implemented || It is responsible for deleting a sign up team from the table.&lt;br /&gt;
|-&lt;br /&gt;
| find_team_participants || Implemented || It is used to get participants in the team signed up for the given topic.&lt;br /&gt;
|-&lt;br /&gt;
| update_sign_up_team || TODO || It is responsible for adding/removing a team member from the sign up team and updating the changes in the table.&lt;br /&gt;
|-&lt;br /&gt;
| release_topics || TODO || It is used to update the waitlist and release topics.  &lt;br /&gt;
|}&lt;br /&gt;
* In sign_up_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_topic || Implemented || It is used to create a new topic in the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || Implemented || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_topic || Implemented || It is used to remove the sign up topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| format_for_display || Implemented || It is used to return the formatted topic name.&lt;br /&gt;
|-&lt;br /&gt;
| find_if_topic_available? || Implemented || It is used to fetch available topic for further selection. A topic is considered available if the total number of teams assigned to the topic are less than the maximum choosers allowed.&lt;br /&gt;
|-&lt;br /&gt;
| update_waitlisted_users || TODO || It is used to send update to all waitlisted users regarding waitlist changes.&lt;br /&gt;
|}&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| add_team_to_waitlist || TODO || It is used to add a sign up team to the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| assign_topic_to_team || TODO || It is used to assign the topic to a team in the waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_waitlist || TODO || It is used to remove a sign up team from the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| destroy_waitlist || TODO || It is used to remove all the sign up teams from the topic’s waitlist.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
We have implemented test cases using RSpec for different validation checks for both sign_up_team.rb and sign_up_topic.rb. The other test cases include 'create' tests that validate whether the utility methods can create the records in the table as expected. Moreover, 'update' test cases are included to validate whether the modifications are updated in the table. Finally, we perform 'destroy' tests to validate whether the record is deleted from the table. We also added unit tests that validate other instance methods, such as format_for_display, in both SignUpTeam and SignUpTopic model classes. We created helper stubs for the new methods yet to be implemented to perform the testing process smoothly.&lt;br /&gt;
&lt;br /&gt;
== Future Plan ==&lt;br /&gt;
&lt;br /&gt;
The future scope of this project is to implement waitlist.rb model class that handles the functions related to adding/removing sign up teams to the waitlist for each topic. There are other instance methods in both sign_up_team.rb and sign_up_topic.rb that requires implementation. But, since they are dependent on other model classes, we have added them to our TODO list to implement them in the future.&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=147835</id>
		<title>CSC/ECE 517 Spring 2023 - E2315. Reimplement signed up team.rb, sign up topic.rb, sign up sheet.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2023_-_E2315._Reimplement_signed_up_team.rb,_sign_up_topic.rb,_sign_up_sheet.rb&amp;diff=147835"/>
		<updated>2023-03-22T14:51:48Z</updated>

		<summary type="html">&lt;p&gt;Sdanda: /* Future Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source software written using Ruby on Rails which functions as a learning management software system. It has many different functions and abilities including the ability to create assignments, quizzes, assignment groups and topics, and also a complete mechanism for providing peer reviews and feedback for other groups and other teammates. It includes functionality to assign a project topic for each team. If it is not available, then it waitlists the team in case if the topic is available. The sign_up_team.rb, sign_up_topic.rb and sign_up_sheet.rb are the model classes in this project to provide this functionality.&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The objective of the project is to refactor the following Ruby on Rails model classes in the existing project:- SignUpTeam, SignUpTopic and SignUpSheet. SignUpTeam model class represents a signed-up team for a particular sign-up topic in a specific assignment. SignUpTopic model class represents a topic that can be signed up for in a course assignment. SignUpSheet class stores the logic for creating a signed_up_team for a topic for a particular assignment. This class is being used as a module having all class methods.  &lt;br /&gt;
&lt;br /&gt;
The task is to refactor the existing code present in these model files and implement them in a new repository. Since the project is implemented from scratch, there are various aspects of the project that have to be implemented and therefore unit test cases are implemented to test the implementation. &lt;br /&gt;
&lt;br /&gt;
== Issue Description ==&lt;br /&gt;
&lt;br /&gt;
* The SignedUpTeam class has methods that handle multiple responsibilities, including finding participants and teams, releasing topics, and removing signed up teams. This violates the single responsibility principle and makes the class harder to understand and maintain.&lt;br /&gt;
* Some of the queries in the class use complex SQL statements and multiple joins, which can make them hard to read and understand. These complex SQL queries in the code could be simplified and made more readable by using ActiveRecord's query interface instead.&lt;br /&gt;
* The same code is repeated in multiple methods, such as the code to find signed up teams for a given topic. This violates the Don't Repeat Yourself (DRY) principle and can make the code harder to maintain.&lt;br /&gt;
&lt;br /&gt;
== Design Strategy ==&lt;br /&gt;
&lt;br /&gt;
* To tackle the mentioned problem, three model class files namely sign_up_team.rb, sign_up_topic.rb and waitlist.rb are implemented.&lt;br /&gt;
* sign_up_sheet.rb is removed because the class methods can be refactored into sign_up_topic.rb and waitlist.rb.&lt;br /&gt;
* In sign_up_team.rb, the following functionality are being implemented:-&lt;br /&gt;
*; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_sign_up_team || Implemented || It is responsible for creating a new sign up team in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_sign_up_team || Implemented || It is responsible for deleting a sign up team from the table.&lt;br /&gt;
|-&lt;br /&gt;
| find_team_participants || Implemented || It is used to get participants in the team signed up for the given topic.&lt;br /&gt;
|-&lt;br /&gt;
| update_sign_up_team || TODO || It is responsible for adding/removing a team member from the sign up team and updating the changes in the table.&lt;br /&gt;
|-&lt;br /&gt;
| release_topics || TODO || It is used to update the waitlist and release topics.  &lt;br /&gt;
|}&lt;br /&gt;
* In sign_up_topic.rb, the following functionality are being implemented:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| create_topic || Implemented || It is used to create a new topic in the table.&lt;br /&gt;
|-&lt;br /&gt;
| update_topic || Implemented || It is used to modify the attributes like description, max_choosers or category in the table.&lt;br /&gt;
|-&lt;br /&gt;
| delete_topic || Implemented || It is used to remove the sign up topic from the table.&lt;br /&gt;
|-&lt;br /&gt;
| format_for_display || Implemented || It is used to return the formatted topic name.&lt;br /&gt;
|-&lt;br /&gt;
| find_if_topic_available? || Implemented || It is used to fetch available topic for further selection. A topic is considered available if the total number of teams assigned to the topic are less than the maximum choosers allowed.&lt;br /&gt;
|-&lt;br /&gt;
| update_waitlisted_users || TODO || It is used to send update to all waitlisted users regarding waitlist changes.&lt;br /&gt;
|}&lt;br /&gt;
* In waitlist.rb, the following functionality are yet to be implemented in next phase:-&lt;br /&gt;
*;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method Name !! Status !! Description&lt;br /&gt;
|-&lt;br /&gt;
| add_team_to_waitlist || TODO || It is used to add a sign up team to the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| assign_topic_to_team || TODO || It is used to assign the topic to a team in the waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| remove_team_waitlist || TODO || It is used to remove a sign up team from the topic’s waitlist.&lt;br /&gt;
|-&lt;br /&gt;
| destroy_waitlist || TODO || It is used to remove all the sign up teams from the topic’s waitlist.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Flow Chart ==&lt;br /&gt;
[[File:Oss_proj3.drawio_(1).png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
We have implemented test cases using RSpec for different validation checks for both sign_up_team.rb and sign_up_topic.rb. The other test cases include 'create' tests that validate whether the utility methods can create the records in the table as expected. Moreover, 'update' test cases are included to validate whether the modifications are updated in the table. Finally, we perform 'destroy' tests to validate whether the record is deleted from the table. We also added unit tests that validate other instance methods, such as format_for_display, in both SignUpTeam and SignUpTopic model classes. We created helper stubs for the new methods yet to be implemented to perform the testing process smoothly.&lt;br /&gt;
&lt;br /&gt;
== Future Plan ==&lt;br /&gt;
&lt;br /&gt;
The future scope of this project is to implement waitlist.rb model class that handles the functions related to adding/removing sign up teams to the waitlist for each topic. There are other instance methods in both sign_up_team.rb and sign_up_topic.rb that requires implementation. But, since they are dependent on other model classes, we have added them to our TODO list to implement them in the future.&lt;/div&gt;</summary>
		<author><name>Sdanda</name></author>
	</entry>
</feed>