<?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=Rnarula2</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=Rnarula2"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Rnarula2"/>
	<updated>2026-05-09T14:48:51Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152736</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152736"/>
		<updated>2023-12-05T06:42:20Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
4. React.js in TypeScript for FrontEnd&lt;br /&gt;
&lt;br /&gt;
== UI ScreenShots ==&lt;br /&gt;
&lt;br /&gt;
'''Overall UI'''&lt;br /&gt;
&lt;br /&gt;
[[ File:TeamsFE.jpeg|800px]] &lt;br /&gt;
[[ File:TeamsFE 2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Teams''' &lt;br /&gt;
&lt;br /&gt;
[[ File:CreateTeams.jpeg|800px ]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Add1.jpeg|800px]]&lt;br /&gt;
[[File:Add2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Editing Teams'''&lt;br /&gt;
&lt;br /&gt;
[[ File:EditTeamName.jpeg|800px]]&lt;br /&gt;
[[File:Editing2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Team'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1 team.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2 team.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[ File:UML teambackend.png |500px]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
class Api::V1::TeamsController &amp;lt; ApplicationController&lt;br /&gt;
  before_action :set_team, only: %i[show update destroy add_ta view_tas remove_ta copy ]&lt;br /&gt;
  rescue_from ActionController::ParameterMissing, with: :parameter_missing&lt;br /&gt;
&lt;br /&gt;
  # GET /teams&lt;br /&gt;
  # List all the teams&lt;br /&gt;
  def index&lt;br /&gt;
    teams = Team.order(:id)&lt;br /&gt;
    render json: teams, status: :ok&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # GET /teams/1&lt;br /&gt;
  # Get a team&lt;br /&gt;
  def show&lt;br /&gt;
    render json: @team, status: :ok&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # POST /teams&lt;br /&gt;
  # Create a team&lt;br /&gt;
  def create&lt;br /&gt;
    team = Team.new(team_params)&lt;br /&gt;
    if team.save&lt;br /&gt;
      render json: team, status: :created&lt;br /&gt;
    else&lt;br /&gt;
      render json: team.errors, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # PATCH/PUT /teams/1&lt;br /&gt;
  # Update a team&lt;br /&gt;
  def update&lt;br /&gt;
    if @team.update(team_params)&lt;br /&gt;
      render json: @team, status: :ok&lt;br /&gt;
    else&lt;br /&gt;
      render json: @team.errors, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # DELETE /teams/1&lt;br /&gt;
  # Delete a team&lt;br /&gt;
  def destroy&lt;br /&gt;
    @team.destroy&lt;br /&gt;
    render json: { message: &amp;quot;Team with id #{params[:id]}, deleted&amp;quot; }, status: :no_content&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def set_team&lt;br /&gt;
    @team = Team.find(params[:id])&lt;br /&gt;
    puts(@team.name)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def team_params&lt;br /&gt;
    params.require(:team).permit(:name)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def parameter_missing&lt;br /&gt;
    render json: { error: 'Parameter missing' }, status: :unprocessable_entity&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{  &amp;quot;name&amp;quot;: String} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || {  &amp;quot;name&amp;quot;: String} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Swagger.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
  require 'rails_helper'&lt;br /&gt;
  RSpec.describe 'Teams API', type: :request do&lt;br /&gt;
    describe 'GET /teams' do&lt;br /&gt;
      context 'when teams exist' do&lt;br /&gt;
        let!(:teams) { create_list(:team, 3) }&lt;br /&gt;
        it 'returns a list of all teams' do&lt;br /&gt;
          get '/teams', as: :json&lt;br /&gt;
          expect(response).to have_http_status(:ok)&lt;br /&gt;
          expect(response.content_type).to eq('application/json')&lt;br /&gt;
          parsed_response = JSON.parse(response.body)&lt;br /&gt;
          expect(parsed_response.length).to eq(teams.length)&lt;br /&gt;
          team_names = teams.map(&amp;amp;:name)&lt;br /&gt;
          returned_team_names = parsed_response.map { |team| team['name'] }&lt;br /&gt;
          expect(returned_team_names).to match_array(team_names)&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
      context 'when no teams exist' do&lt;br /&gt;
        it 'returns an empty list' do&lt;br /&gt;
          get '/teams', as: :json&lt;br /&gt;
          expect(response).to have_http_status(:ok)&lt;br /&gt;
          expect(response.content_type).to eq('application/json')&lt;br /&gt;
          parsed_response = JSON.parse(response.body)&lt;br /&gt;
          expect(parsed_response).to be_empty&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    describe 'POST /api/v1/teams' do&lt;br /&gt;
      context 'with valid parameters' do&lt;br /&gt;
        it 'creates a new team' do&lt;br /&gt;
          team_params = {name: 'New Team'}&lt;br /&gt;
          post '/api/v1/teams', params: { team: team_params }, as: :json&lt;br /&gt;
          expect(response).to have_http_status(:created)&lt;br /&gt;
          expect(response.content_type).to eq('application/json')&lt;br /&gt;
          team = Team.last&lt;br /&gt;
          expect(JSON.parse(response.body)['id']).to eq(team.id)&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    describe 'PATCH/PUT /api/v1/teams/:id' do&lt;br /&gt;
      let(:team) { create(:team, name: 'Old Team Name') }&lt;br /&gt;
      context 'with valid parameters' do&lt;br /&gt;
        let(:new_team_name) { 'Updated Team Name' }&lt;br /&gt;
        it 'updates the team name' do&lt;br /&gt;
          put &amp;quot;/api/v1/teams/#{team.id}&amp;quot;, params: { team: { name: new_team_name } }, as: :json&lt;br /&gt;
          team.reload&lt;br /&gt;
          expect(response).to have_http_status(:ok)&lt;br /&gt;
          expect(response.content_type).to eq('application/json')&lt;br /&gt;
          expect(JSON.parse(response.body)['id']).to eq(team.id)&lt;br /&gt;
          expect(team.name).to eq(new_team_name)&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    describe 'DELETE /api/v1/teams/:id' do&lt;br /&gt;
      let!(:team) { create(:team) }&lt;br /&gt;
      it 'deletes a team' do&lt;br /&gt;
        expect {&lt;br /&gt;
          delete &amp;quot;/api/v1/teams/#{team.id}&amp;quot;&lt;br /&gt;
        }.to change(Team, :count).by(-1)&lt;br /&gt;
        expect(response).to have_http_status(:no_content)&lt;br /&gt;
        expect(response.body).to be_empty&lt;br /&gt;
      end&lt;br /&gt;
      it 'returns a message indicating team deletion' do&lt;br /&gt;
        delete &amp;quot;/api/v1/teams/#{team.id}&amp;quot;&lt;br /&gt;
        expect(response).to have_http_status(:no_content)&lt;br /&gt;
        expect(response.body).to be_empty&lt;br /&gt;
        # Optionally, you can check the response message&lt;br /&gt;
        expect(response.body).to eq({ message: &amp;quot;&amp;quot; }.to_json)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
Currently, Some of the methods were not implemented due to dependency on other models which are not implemented yet. So, the major future work would be to include the complete integration of teams and users with the UI.&lt;br /&gt;
&lt;br /&gt;
Other work would be to modify the UI for the teams page.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Video Link [https://youtu.be/hhGueZYezSw]&lt;br /&gt;
&lt;br /&gt;
Github BE Link [https://github.com/expertiza/reimplementation-back-end]&lt;br /&gt;
&lt;br /&gt;
Github FE Link [https://github.com/expertiza/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
Github PR BE Link [https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
Github PR FE Link [https://github.com/expertiza/reimplementation-front-end/pull/19]&lt;br /&gt;
&lt;br /&gt;
Rspec [https://rspec.info/documentation/]&lt;br /&gt;
&lt;br /&gt;
Swagger UI [http://localhost:3002/api-docs]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152734</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152734"/>
		<updated>2023-12-05T06:39:28Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* Functionality */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
4. React.js in TypeScript for FrontEnd&lt;br /&gt;
&lt;br /&gt;
== UI ScreenShots ==&lt;br /&gt;
&lt;br /&gt;
'''Overall UI'''&lt;br /&gt;
&lt;br /&gt;
[[ File:TeamsFE.jpeg|800px]] &lt;br /&gt;
[[ File:TeamsFE 2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Teams''' &lt;br /&gt;
&lt;br /&gt;
[[ File:CreateTeams.jpeg|800px ]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Add1.jpeg|800px]]&lt;br /&gt;
[[File:Add2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Editing Teams'''&lt;br /&gt;
&lt;br /&gt;
[[ File:EditTeamName.jpeg|800px]]&lt;br /&gt;
[[File:Editing2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Team'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1 team.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2 team.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[ File:UML teambackend.png |500px]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
class Api::V1::TeamsController &amp;lt; ApplicationController&lt;br /&gt;
  before_action :set_team, only: %i[show update destroy add_ta view_tas remove_ta copy ]&lt;br /&gt;
  rescue_from ActionController::ParameterMissing, with: :parameter_missing&lt;br /&gt;
&lt;br /&gt;
  # GET /teams&lt;br /&gt;
  # List all the teams&lt;br /&gt;
  def index&lt;br /&gt;
    teams = Team.order(:id)&lt;br /&gt;
    render json: teams, status: :ok&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # GET /teams/1&lt;br /&gt;
  # Get a team&lt;br /&gt;
  def show&lt;br /&gt;
    render json: @team, status: :ok&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # POST /teams&lt;br /&gt;
  # Create a team&lt;br /&gt;
  def create&lt;br /&gt;
    team = Team.new(team_params)&lt;br /&gt;
    if team.save&lt;br /&gt;
      render json: team, status: :created&lt;br /&gt;
    else&lt;br /&gt;
      render json: team.errors, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # PATCH/PUT /teams/1&lt;br /&gt;
  # Update a team&lt;br /&gt;
  def update&lt;br /&gt;
    if @team.update(team_params)&lt;br /&gt;
      render json: @team, status: :ok&lt;br /&gt;
    else&lt;br /&gt;
      render json: @team.errors, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # DELETE /teams/1&lt;br /&gt;
  # Delete a team&lt;br /&gt;
  def destroy&lt;br /&gt;
    @team.destroy&lt;br /&gt;
    render json: { message: &amp;quot;Team with id #{params[:id]}, deleted&amp;quot; }, status: :no_content&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def set_team&lt;br /&gt;
    @team = Team.find(params[:id])&lt;br /&gt;
    puts(@team.name)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def team_params&lt;br /&gt;
    params.require(:team).permit(:name)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def parameter_missing&lt;br /&gt;
    render json: { error: 'Parameter missing' }, status: :unprocessable_entity&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{  &amp;quot;name&amp;quot;: String} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || {  &amp;quot;name&amp;quot;: String} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Swagger.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
Currently, Some of the methods were not implemented due to dependency on other models which are not implemented yet. So, the major future work would be to include the complete integration of teams and users with the UI.&lt;br /&gt;
&lt;br /&gt;
Other work would be to modify the UI for the teams page.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Video Link [https://youtu.be/hhGueZYezSw]&lt;br /&gt;
&lt;br /&gt;
Github BE Link [https://github.com/expertiza/reimplementation-back-end]&lt;br /&gt;
&lt;br /&gt;
Github FE Link [https://github.com/expertiza/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
Github PR BE Link [https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
Github PR FE Link [https://github.com/expertiza/reimplementation-front-end/pull/19]&lt;br /&gt;
&lt;br /&gt;
Rspec [https://rspec.info/documentation/]&lt;br /&gt;
&lt;br /&gt;
Swagger UI [http://localhost:3002/api-docs]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152733</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152733"/>
		<updated>2023-12-05T06:38:21Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* Functionality */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
4. React.js in TypeScript for FrontEnd&lt;br /&gt;
&lt;br /&gt;
== UI ScreenShots ==&lt;br /&gt;
&lt;br /&gt;
'''Overall UI'''&lt;br /&gt;
&lt;br /&gt;
[[ File:TeamsFE.jpeg|800px]] &lt;br /&gt;
[[ File:TeamsFE 2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Teams''' &lt;br /&gt;
&lt;br /&gt;
[[ File:CreateTeams.jpeg|800px ]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Add1.jpeg|800px]]&lt;br /&gt;
[[File:Add2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Editing Teams'''&lt;br /&gt;
&lt;br /&gt;
[[ File:EditTeamName.jpeg|800px]]&lt;br /&gt;
[[File:Editing2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Team'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1 team.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2 team.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[ File:UML teambackend.png |500px]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
class Api::V1::TeamsController &amp;lt; ApplicationController&lt;br /&gt;
  before_action :set_team, only: %i[show update destroy add_ta view_tas remove_ta copy ]&lt;br /&gt;
  rescue_from ActionController::ParameterMissing, with: :parameter_missing&lt;br /&gt;
&lt;br /&gt;
  # GET /teams&lt;br /&gt;
  # List all the teams&lt;br /&gt;
  def index&lt;br /&gt;
    teams = Team.order(:id)&lt;br /&gt;
    render json: teams, status: :ok&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # GET /teams/1&lt;br /&gt;
  # Get a team&lt;br /&gt;
  def show&lt;br /&gt;
    render json: @team, status: :ok&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # POST /teams&lt;br /&gt;
  # Create a team&lt;br /&gt;
  def create&lt;br /&gt;
    team = Team.new(team_params)&lt;br /&gt;
    if team.save&lt;br /&gt;
      render json: team, status: :created&lt;br /&gt;
    else&lt;br /&gt;
      render json: team.errors, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # PATCH/PUT /teams/1&lt;br /&gt;
  # Update a team&lt;br /&gt;
  def update&lt;br /&gt;
    if @team.update(team_params)&lt;br /&gt;
      render json: @team, status: :ok&lt;br /&gt;
    else&lt;br /&gt;
      render json: @team.errors, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # DELETE /teams/1&lt;br /&gt;
  # Delete a team&lt;br /&gt;
  def destroy&lt;br /&gt;
    @team.destroy&lt;br /&gt;
    render json: { message: &amp;quot;Team with id #{params[:id]}, deleted&amp;quot; }, status: :no_content&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def set_team&lt;br /&gt;
    @team = Team.find(params[:id])&lt;br /&gt;
    puts(@team.name)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def team_params&lt;br /&gt;
    params.require(:team).permit(:name)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def parameter_missing&lt;br /&gt;
    render json: { error: 'Parameter missing' }, status: :unprocessable_entity&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{  &amp;quot;name&amp;quot;: String} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || {  &amp;quot;name&amp;quot;: String} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Swagger.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
Currently, Some of the methods were not implemented due to dependency on other models which are not implemented yet. So, the major future work would be to include the complete integration of teams and users with the UI.&lt;br /&gt;
&lt;br /&gt;
Other work would be to modify the UI for the teams page.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Video Link [https://youtu.be/hhGueZYezSw]&lt;br /&gt;
&lt;br /&gt;
Github BE Link [https://github.com/expertiza/reimplementation-back-end]&lt;br /&gt;
&lt;br /&gt;
Github FE Link [https://github.com/expertiza/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
Github PR BE Link [https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
Github PR FE Link [https://github.com/expertiza/reimplementation-front-end/pull/19]&lt;br /&gt;
&lt;br /&gt;
Rspec [https://rspec.info/documentation/]&lt;br /&gt;
&lt;br /&gt;
Swagger UI [http://localhost:3002/api-docs]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152732</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152732"/>
		<updated>2023-12-05T06:35:37Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
4. React.js in TypeScript for FrontEnd&lt;br /&gt;
&lt;br /&gt;
== UI ScreenShots ==&lt;br /&gt;
&lt;br /&gt;
'''Overall UI'''&lt;br /&gt;
&lt;br /&gt;
[[ File:TeamsFE.jpeg|800px]] &lt;br /&gt;
[[ File:TeamsFE 2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Teams''' &lt;br /&gt;
&lt;br /&gt;
[[ File:CreateTeams.jpeg|800px ]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Add1.jpeg|800px]]&lt;br /&gt;
[[File:Add2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Editing Teams'''&lt;br /&gt;
&lt;br /&gt;
[[ File:EditTeamName.jpeg|800px]]&lt;br /&gt;
[[File:Editing2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Team'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1 team.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2 team.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[ File:UML teambackend.png |500px]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{  &amp;quot;name&amp;quot;: String} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || {  &amp;quot;name&amp;quot;: String} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Swagger.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
Currently, Some of the methods were not implemented due to dependency on other models which are not implemented yet. So, the major future work would be to include the complete integration of teams and users with the UI.&lt;br /&gt;
&lt;br /&gt;
Other work would be to modify the UI for the teams page.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Video Link [https://youtu.be/hhGueZYezSw]&lt;br /&gt;
&lt;br /&gt;
Github BE Link [https://github.com/expertiza/reimplementation-back-end]&lt;br /&gt;
&lt;br /&gt;
Github FE Link [https://github.com/expertiza/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
Github PR BE Link [https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
Github PR FE Link [https://github.com/expertiza/reimplementation-front-end/pull/19]&lt;br /&gt;
&lt;br /&gt;
Rspec [https://rspec.info/documentation/]&lt;br /&gt;
&lt;br /&gt;
Swagger UI [http://localhost:3002/api-docs]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152731</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152731"/>
		<updated>2023-12-05T06:32:36Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* End point summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
4. React.js in TypeScript for FrontEnd&lt;br /&gt;
&lt;br /&gt;
== UI ScreenShots ==&lt;br /&gt;
&lt;br /&gt;
'''Overall UI'''&lt;br /&gt;
&lt;br /&gt;
[[ File:TeamsFE.jpeg|800px]] &lt;br /&gt;
[[ File:TeamsFE 2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Teams''' &lt;br /&gt;
&lt;br /&gt;
[[ File:CreateTeams.jpeg|800px ]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Add1.jpeg|800px]]&lt;br /&gt;
[[File:Add2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Editing Teams'''&lt;br /&gt;
&lt;br /&gt;
[[ File:EditTeamName.jpeg|800px]]&lt;br /&gt;
[[File:Editing2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Team'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1 team.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2 team.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[ File:UML teambackend.png |500px]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{  &amp;quot;name&amp;quot;: String} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || {  &amp;quot;name&amp;quot;: String} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Swagger.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
Currently, Some of the methods were not implemented due to dependency on other models which are not implemented yet. So, the major future work would be to include the complete integration of teams and users with the UI.&lt;br /&gt;
&lt;br /&gt;
Other work would be to modify the UI for the teams page.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Github BE Link [https://github.com/expertiza/reimplementation-back-end]&lt;br /&gt;
&lt;br /&gt;
Github FE Link [https://github.com/expertiza/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
Github PR BE Link [https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
Github PR FE Link [https://github.com/expertiza/reimplementation-front-end/pull/19]&lt;br /&gt;
&lt;br /&gt;
Rspec [https://rspec.info/documentation/]&lt;br /&gt;
&lt;br /&gt;
Swagger UI [http://localhost:3002/api-docs]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152652</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152652"/>
		<updated>2023-12-05T04:53:56Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
4. React.js in TypeScript for FrontEnd&lt;br /&gt;
&lt;br /&gt;
== UI ScreenShots ==&lt;br /&gt;
&lt;br /&gt;
'''Overall UI'''&lt;br /&gt;
&lt;br /&gt;
[[ File:TeamsFE.jpeg|800px]] &lt;br /&gt;
[[ File:TeamsFE 2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Teams''' &lt;br /&gt;
&lt;br /&gt;
[[ File:CreateTeams.jpeg|800px ]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Add1.jpeg|800px]]&lt;br /&gt;
[[File:Add2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Editing Teams'''&lt;br /&gt;
&lt;br /&gt;
[[ File:EditTeamName.jpeg|800px]]&lt;br /&gt;
[[File:Editing2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Team'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1 team.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2 team.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[ File:UML teambackend.png |500px]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{  &amp;quot;name&amp;quot;: String} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || {  &amp;quot;name&amp;quot;: String} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Swagger.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
Currently, Some of the methods were not implemented due to dependency on other models which are not implemented yet. So, the major future work would be to include the complete integration of teams and users with the UI.&lt;br /&gt;
&lt;br /&gt;
Other work would be to modify the UI for the teams page.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Github BE Link [https://github.com/expertiza/reimplementation-back-end]&lt;br /&gt;
&lt;br /&gt;
Github FE Link [https://github.com/expertiza/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
Github PR BE Link [https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
Github PR FE Link [https://github.com/expertiza/reimplementation-front-end/pull/19]&lt;br /&gt;
&lt;br /&gt;
Rspec [https://rspec.info/documentation/]&lt;br /&gt;
&lt;br /&gt;
Swagger UI [http://localhost:3002/api-docs]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152651</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152651"/>
		<updated>2023-12-05T04:53:43Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
4. React.js in TypeScript for FrontEnd&lt;br /&gt;
&lt;br /&gt;
== UI ScreenShots ==&lt;br /&gt;
&lt;br /&gt;
'''Overall UI'''&lt;br /&gt;
&lt;br /&gt;
[[ File:TeamsFE.jpeg|800px]] &lt;br /&gt;
[[ File:TeamsFE 2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Teams''' &lt;br /&gt;
&lt;br /&gt;
[[ File:CreateTeams.jpeg|800px ]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Add1.jpeg|800px]]&lt;br /&gt;
[[File:Add2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Editing Teams'''&lt;br /&gt;
&lt;br /&gt;
[[ File:EditTeamName.jpeg|800px]]&lt;br /&gt;
[[File:Editing2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Team'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1 team.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2 team.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[ File:UML teambackend.png |500px]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{  &amp;quot;name&amp;quot;: String} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || {  &amp;quot;name&amp;quot;: String} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Swagger.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
Currently, Some of the methods were not implemented due to dependency on other models which are not implemented yet. So, the major future work would be to include the complete integration of teams and users with the UI.&lt;br /&gt;
&lt;br /&gt;
Other work would be to modify the UI for the teams page.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Github BE Link [https://github.com/expertiza/reimplementation-back-end]&lt;br /&gt;
Github FE Link [https://github.com/expertiza/reimplementation-front-end]&lt;br /&gt;
&lt;br /&gt;
Github PR BE Link [https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
Github PR FE Link [https://github.com/expertiza/reimplementation-front-end/pull/19]&lt;br /&gt;
&lt;br /&gt;
Rspec [https://rspec.info/documentation/]&lt;br /&gt;
&lt;br /&gt;
Swagger UI [http://localhost:3002/api-docs]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152649</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152649"/>
		<updated>2023-12-05T04:49:11Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* Swagger UI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
4. React.js in TypeScript for FrontEnd&lt;br /&gt;
&lt;br /&gt;
== UI ScreenShots ==&lt;br /&gt;
&lt;br /&gt;
'''Overall UI'''&lt;br /&gt;
&lt;br /&gt;
[[ File:TeamsFE.jpeg|800px]] &lt;br /&gt;
[[ File:TeamsFE 2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Teams''' &lt;br /&gt;
&lt;br /&gt;
[[ File:CreateTeams.jpeg|800px ]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Add1.jpeg|800px]]&lt;br /&gt;
[[File:Add2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Editing Teams'''&lt;br /&gt;
&lt;br /&gt;
[[ File:EditTeamName.jpeg|800px]]&lt;br /&gt;
[[File:Editing2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Team'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1 team.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2 team.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[ File:UML teambackend.png |500px]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{  &amp;quot;name&amp;quot;: String} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || {  &amp;quot;name&amp;quot;: String} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Swagger.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
Currently, Some of the methods were not implemented due to dependency on other models which are not implemented yet. So, the major future work would be to include the complete integration of teams and users with the UI.&lt;br /&gt;
&lt;br /&gt;
Other work would be to modify the UI for the teams page.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Github Link []&lt;br /&gt;
&lt;br /&gt;
Github PR Link [https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
Rspec [https://rspec.info/documentation/]&lt;br /&gt;
&lt;br /&gt;
Swagger UI [http://localhost:3002/api-docs]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152648</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152648"/>
		<updated>2023-12-05T04:48:47Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
4. React.js in TypeScript for FrontEnd&lt;br /&gt;
&lt;br /&gt;
== UI ScreenShots ==&lt;br /&gt;
&lt;br /&gt;
'''Overall UI'''&lt;br /&gt;
&lt;br /&gt;
[[ File:TeamsFE.jpeg|800px]] &lt;br /&gt;
[[ File:TeamsFE 2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Teams''' &lt;br /&gt;
&lt;br /&gt;
[[ File:CreateTeams.jpeg|800px ]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Add1.jpeg|800px]]&lt;br /&gt;
[[File:Add2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Editing Teams'''&lt;br /&gt;
&lt;br /&gt;
[[ File:EditTeamName.jpeg|800px]]&lt;br /&gt;
[[File:Editing2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Team'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1 team.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2 team.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[ File:UML teambackend.png |500px]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{  &amp;quot;name&amp;quot;: String} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || {  &amp;quot;name&amp;quot;: String} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Image.png||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
Currently, Some of the methods were not implemented due to dependency on other models which are not implemented yet. So, the major future work would be to include the complete integration of teams and users with the UI.&lt;br /&gt;
&lt;br /&gt;
Other work would be to modify the UI for the teams page.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Github Link []&lt;br /&gt;
&lt;br /&gt;
Github PR Link [https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
Rspec [https://rspec.info/documentation/]&lt;br /&gt;
&lt;br /&gt;
Swagger UI [http://localhost:3002/api-docs]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Swagger.jpeg&amp;diff=152647</id>
		<title>File:Swagger.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Swagger.jpeg&amp;diff=152647"/>
		<updated>2023-12-05T04:48:31Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152642</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152642"/>
		<updated>2023-12-05T04:46:01Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* End point summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
4. React.js in TypeScript for FrontEnd&lt;br /&gt;
&lt;br /&gt;
== UI ScreenShots ==&lt;br /&gt;
&lt;br /&gt;
'''Overall UI'''&lt;br /&gt;
&lt;br /&gt;
[[ File:TeamsFE.jpeg|800px]] &lt;br /&gt;
[[ File:TeamsFE 2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Teams''' &lt;br /&gt;
&lt;br /&gt;
[[ File:CreateTeams.jpeg|800px ]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Add1.jpeg|800px]]&lt;br /&gt;
[[File:Add2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Editing Teams'''&lt;br /&gt;
&lt;br /&gt;
[[ File:EditTeamName.jpeg|800px]]&lt;br /&gt;
[[File:Editing2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Team'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1 team.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2 team.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[ File:UML teambackend.png |500px]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{  &amp;quot;name&amp;quot;: String} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || {  &amp;quot;name&amp;quot;: String} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Image.png||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
Currently, Some of the methods were not implemented due to dependency on other models which are not implemented yet. So, the major future work would be to include the complete integration of teams and users with the UI.&lt;br /&gt;
&lt;br /&gt;
Other work would be to modify the UI for the teams page.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Github PR Link [https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
Rspec [https://rspec.info/documentation/]&lt;br /&gt;
&lt;br /&gt;
Swagger UI [http://localhost:3002/api-docs]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152620</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152620"/>
		<updated>2023-12-05T04:27:42Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* UI ScreenShots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
4. React.js in TypeScript for FrontEnd&lt;br /&gt;
&lt;br /&gt;
== UI ScreenShots ==&lt;br /&gt;
&lt;br /&gt;
'''Overall UI'''&lt;br /&gt;
&lt;br /&gt;
[[ File:TeamsFE.jpeg|800px]] &lt;br /&gt;
[[ File:TeamsFE 2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Teams''' &lt;br /&gt;
&lt;br /&gt;
[[ File:CreateTeams.jpeg|800px ]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Add1.jpeg|800px]]&lt;br /&gt;
[[File:Add2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Editing Teams'''&lt;br /&gt;
&lt;br /&gt;
[[ File:EditTeamName.jpeg|800px]]&lt;br /&gt;
[[File:Editing2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Team'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1 team.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2 team.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[ File:UML teambackend.png |500px]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Image.png||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
Currently, Some of the methods were not implemented due to dependency on other models which are not implemented yet. So, the major future work would be to include the complete integration of teams and users with the UI.&lt;br /&gt;
&lt;br /&gt;
Other work would be to modify the UI for the teams page.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Github PR Link [https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
Rspec [https://rspec.info/documentation/]&lt;br /&gt;
&lt;br /&gt;
Swagger UI [http://localhost:3002/api-docs]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Deletion2_team.jpeg&amp;diff=152618</id>
		<title>File:Deletion2 team.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Deletion2_team.jpeg&amp;diff=152618"/>
		<updated>2023-12-05T04:26:15Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Deletion1_team.jpeg&amp;diff=152617</id>
		<title>File:Deletion1 team.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Deletion1_team.jpeg&amp;diff=152617"/>
		<updated>2023-12-05T04:25:54Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152615</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152615"/>
		<updated>2023-12-05T04:24:57Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* UI ScreenShots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
4. React.js in TypeScript for FrontEnd&lt;br /&gt;
&lt;br /&gt;
== UI ScreenShots ==&lt;br /&gt;
&lt;br /&gt;
'''Overall UI'''&lt;br /&gt;
&lt;br /&gt;
[[ File:TeamsFE.jpeg|800px]] &lt;br /&gt;
[[ File:TeamsFE 2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Teams''' &lt;br /&gt;
&lt;br /&gt;
[[ File:CreateTeams.jpeg|800px ]]&lt;br /&gt;
&lt;br /&gt;
'''Adding Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Add1.jpeg|800px]]&lt;br /&gt;
[[File:Add2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Editing Teams'''&lt;br /&gt;
&lt;br /&gt;
[[ File:EditTeamName.jpeg|800px]]&lt;br /&gt;
[[File:Editing2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
'''Deleting Users'''&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
Deleting Team&lt;br /&gt;
[[]]&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[ File:UML teambackend.png |500px]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Image.png||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
Currently, Some of the methods were not implemented due to dependency on other models which are not implemented yet. So, the major future work would be to include the complete integration of teams and users with the UI.&lt;br /&gt;
&lt;br /&gt;
Other work would be to modify the UI for the teams page.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Github PR Link [https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
Rspec [https://rspec.info/documentation/]&lt;br /&gt;
&lt;br /&gt;
Swagger UI [http://localhost:3002/api-docs]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Add2.jpeg&amp;diff=152614</id>
		<title>File:Add2.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Add2.jpeg&amp;diff=152614"/>
		<updated>2023-12-05T04:23:02Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Add1.jpeg&amp;diff=152613</id>
		<title>File:Add1.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Add1.jpeg&amp;diff=152613"/>
		<updated>2023-12-05T04:22:50Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152612</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152612"/>
		<updated>2023-12-05T04:19:39Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* Changes Made */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
4. React.js in TypeScript for FrontEnd&lt;br /&gt;
&lt;br /&gt;
== UI ScreenShots ==&lt;br /&gt;
&lt;br /&gt;
Overall UI&lt;br /&gt;
&lt;br /&gt;
[[ File:TeamsFE.jpeg|800px]] &lt;br /&gt;
[[ File:TeamsFE 2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
Adding Teams &lt;br /&gt;
&lt;br /&gt;
[[ File:CreateTeams.jpeg|800px ]]&lt;br /&gt;
&lt;br /&gt;
Adding Users&lt;br /&gt;
&lt;br /&gt;
[[ ]]&lt;br /&gt;
&lt;br /&gt;
Editing Teams&lt;br /&gt;
&lt;br /&gt;
[[ File:EditTeamName.jpeg|800px]]&lt;br /&gt;
[[File:Editing2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
Deleting Users&lt;br /&gt;
&lt;br /&gt;
[[File:Deletion1.jpeg|800px]]&lt;br /&gt;
[[File:Deletion2.jpeg|800px]]&lt;br /&gt;
&lt;br /&gt;
Deleting Team&lt;br /&gt;
[[]]&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[ File:UML teambackend.png |500px]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Image.png||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
Currently, Some of the methods were not implemented due to dependency on other models which are not implemented yet. So, the major future work would be to include the complete integration of teams and users with the UI.&lt;br /&gt;
&lt;br /&gt;
Other work would be to modify the UI for the teams page.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Github PR Link [https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
Rspec [https://rspec.info/documentation/]&lt;br /&gt;
&lt;br /&gt;
Swagger UI [http://localhost:3002/api-docs]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Editing2.jpeg&amp;diff=152611</id>
		<title>File:Editing2.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Editing2.jpeg&amp;diff=152611"/>
		<updated>2023-12-05T04:18:37Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Deletion2.jpeg&amp;diff=152610</id>
		<title>File:Deletion2.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Deletion2.jpeg&amp;diff=152610"/>
		<updated>2023-12-05T04:15:51Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Deletion1.jpeg&amp;diff=152609</id>
		<title>File:Deletion1.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Deletion1.jpeg&amp;diff=152609"/>
		<updated>2023-12-05T04:13:12Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:EditTeamName.jpeg&amp;diff=152607</id>
		<title>File:EditTeamName.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:EditTeamName.jpeg&amp;diff=152607"/>
		<updated>2023-12-05T04:11:31Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:TeamsFE_2.jpeg&amp;diff=152606</id>
		<title>File:TeamsFE 2.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:TeamsFE_2.jpeg&amp;diff=152606"/>
		<updated>2023-12-05T04:10:12Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:CreateTeams.jpeg&amp;diff=152604</id>
		<title>File:CreateTeams.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:CreateTeams.jpeg&amp;diff=152604"/>
		<updated>2023-12-05T04:07:19Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:TeamsFE.jpeg&amp;diff=152597</id>
		<title>File:TeamsFE.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:TeamsFE.jpeg&amp;diff=152597"/>
		<updated>2023-12-05T04:04:25Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152593</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152593"/>
		<updated>2023-12-05T04:03:37Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* Technologies Used for the Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
4. React.js in TypeScript for FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Changes Made ==&lt;br /&gt;
The Teams schema was not properly implemented and we have added more attributes. &lt;br /&gt;
&lt;br /&gt;
[[File:TeamsController_new(present).png]]&lt;br /&gt;
&lt;br /&gt;
Before Schema&lt;br /&gt;
&lt;br /&gt;
Following attributes would be added to the teams table - &lt;br /&gt;
1. Name of the Team (Unique)&lt;br /&gt;
2. Team ID (Unique)&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2023-12-04 16-05-49.png]]&lt;br /&gt;
&lt;br /&gt;
Final Schema.&lt;br /&gt;
We also added foreign keys in the Users table as one Team can have many Users &lt;br /&gt;
&lt;br /&gt;
[[File:UsersUpdated.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will delete the team.&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[ File:UML teambackend.png |500px]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Image.png||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
Currently, Some of the methods were not implemented due to dependency on other models which are not implemented yet. So, the major future work would be to include the complete integration of teams and users with the UI.&lt;br /&gt;
&lt;br /&gt;
Other work would be to modify the UI for the teams page.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Github PR Link [https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
Rspec [https://rspec.info/documentation/]&lt;br /&gt;
&lt;br /&gt;
Swagger UI [http://localhost:3002/api-docs]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152539</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152539"/>
		<updated>2023-12-05T03:30:42Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* Future Work */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
== Changes Made ==&lt;br /&gt;
The Teams schema was not properly implemented and we have added more attributes. &lt;br /&gt;
&lt;br /&gt;
[[File:TeamsController_new(present).png]]&lt;br /&gt;
&lt;br /&gt;
Before Schema&lt;br /&gt;
&lt;br /&gt;
Following attributes would be added to the teams table - &lt;br /&gt;
1. Name of the Team (Unique)&lt;br /&gt;
2. Team ID (Unique)&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2023-12-04 16-05-49.png]]&lt;br /&gt;
&lt;br /&gt;
Final Schema.&lt;br /&gt;
We also added foreign keys in the Users table as one Team can have many Users &lt;br /&gt;
&lt;br /&gt;
[[File:UsersUpdated.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will delete the team.&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[ File:UML teambackend.png |500px]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Image.png||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
Currently, Some of the methods were not implemented due to dependency on other models which are not implemented yet. So, the major future work would be to include the complete integration of teams and users with the UI.&lt;br /&gt;
&lt;br /&gt;
Other work would be to modify the UI for the teams page.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Github PR Link [https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
Rspec [https://rspec.info/documentation/]&lt;br /&gt;
&lt;br /&gt;
Swagger UI [http://localhost:3002/api-docs]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152538</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152538"/>
		<updated>2023-12-05T03:30:00Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
== Changes Made ==&lt;br /&gt;
The Teams schema was not properly implemented and we have added more attributes. &lt;br /&gt;
&lt;br /&gt;
[[File:TeamsController_new(present).png]]&lt;br /&gt;
&lt;br /&gt;
Before Schema&lt;br /&gt;
&lt;br /&gt;
Following attributes would be added to the teams table - &lt;br /&gt;
1. Name of the Team (Unique)&lt;br /&gt;
2. Team ID (Unique)&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2023-12-04 16-05-49.png]]&lt;br /&gt;
&lt;br /&gt;
Final Schema.&lt;br /&gt;
We also added foreign keys in the Users table as one Team can have many Users &lt;br /&gt;
&lt;br /&gt;
[[File:UsersUpdated.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will delete the team.&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[ File:UML teambackend.png |500px]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Image.png||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Future Work ==&lt;br /&gt;
Currently, Due to limitations on Backend side the complete integration of Backend and Frontend couldn't be done. So, the major future work would be to include the complete integration of teams and users with the UI.&lt;br /&gt;
&lt;br /&gt;
Other work would be to modify the UI for the teams page.&lt;br /&gt;
 &lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Github PR Link [https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
Rspec [https://rspec.info/documentation/]&lt;br /&gt;
&lt;br /&gt;
Swagger UI [http://localhost:3002/api-docs]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152536</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152536"/>
		<updated>2023-12-05T03:26:26Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
== Changes Made ==&lt;br /&gt;
The Teams schema was not properly implemented and we have added more attributes. &lt;br /&gt;
&lt;br /&gt;
[[File:TeamsController_new(present).png]]&lt;br /&gt;
&lt;br /&gt;
Before Schema&lt;br /&gt;
&lt;br /&gt;
Following attributes would be added to the teams table - &lt;br /&gt;
1. Name of the Team (Unique)&lt;br /&gt;
2. Team ID (Unique)&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2023-12-04 16-05-49.png]]&lt;br /&gt;
&lt;br /&gt;
Final Schema.&lt;br /&gt;
We also added foreign keys in the Users table as one Team can have many Users &lt;br /&gt;
&lt;br /&gt;
[[File:UsersUpdated.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will delete the team.&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[ File:UML teambackend.png |500px]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Image.png||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Github PR Link [https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
Rspec [https://rspec.info/documentation/]&lt;br /&gt;
&lt;br /&gt;
Swagger UI [http://localhost:3002/api-docs]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152535</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152535"/>
		<updated>2023-12-05T03:26:02Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
== Changes Made ==&lt;br /&gt;
The Teams schema was not properly implemented and we have added more attributes. &lt;br /&gt;
&lt;br /&gt;
[[File:TeamsController_new(present).png]]&lt;br /&gt;
&lt;br /&gt;
Before Schema&lt;br /&gt;
&lt;br /&gt;
Following attributes would be added to the teams table - &lt;br /&gt;
1. Name of the Team (Unique)&lt;br /&gt;
2. Team ID (Unique)&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2023-12-04 16-05-49.png]]&lt;br /&gt;
&lt;br /&gt;
Final Schema.&lt;br /&gt;
We also added foreign keys in the Users table as one Team can have many Users &lt;br /&gt;
&lt;br /&gt;
[[File:UsersUpdated.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will delete the team.&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[ File:UML teambackend.png |500px]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Image.png||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Github PR Link [https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
Rspec [https://rspec.info/documentation/]&lt;br /&gt;
&lt;br /&gt;
Swagger UI [http//:localhost:3002/api-docs]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152534</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152534"/>
		<updated>2023-12-05T03:25:39Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
== Changes Made ==&lt;br /&gt;
The Teams schema was not properly implemented and we have added more attributes. &lt;br /&gt;
&lt;br /&gt;
[[File:TeamsController_new(present).png]]&lt;br /&gt;
&lt;br /&gt;
Before Schema&lt;br /&gt;
&lt;br /&gt;
Following attributes would be added to the teams table - &lt;br /&gt;
1. Name of the Team (Unique)&lt;br /&gt;
2. Team ID (Unique)&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2023-12-04 16-05-49.png]]&lt;br /&gt;
&lt;br /&gt;
Final Schema.&lt;br /&gt;
We also added foreign keys in the Users table as one Team can have many Users &lt;br /&gt;
&lt;br /&gt;
[[File:UsersUpdated.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will delete the team.&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[ File:UML teambackend.png |500px]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Image.png||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Github PR Link [https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
Rspec [https://rspec.info/documentation/]&lt;br /&gt;
&lt;br /&gt;
Swagger UI [https:localhost:3002/api-docs]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152532</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152532"/>
		<updated>2023-12-05T03:23:29Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* Design and Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
== Changes Made ==&lt;br /&gt;
The Teams schema was not properly implemented and we have added more attributes. &lt;br /&gt;
&lt;br /&gt;
[[File:TeamsController_new(present).png]]&lt;br /&gt;
&lt;br /&gt;
Before Schema&lt;br /&gt;
&lt;br /&gt;
Following attributes would be added to the teams table - &lt;br /&gt;
1. Name of the Team (Unique)&lt;br /&gt;
2. Team ID (Unique)&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2023-12-04 16-05-49.png]]&lt;br /&gt;
&lt;br /&gt;
Final Schema.&lt;br /&gt;
We also added foreign keys in the Users table as one Team can have many Users &lt;br /&gt;
&lt;br /&gt;
[[File:UsersUpdated.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will delete the team.&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[ File:UML teambackend.png |500px]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Image.png||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
Github PR Link&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:UML_teambackend.png&amp;diff=152530</id>
		<title>File:UML teambackend.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:UML_teambackend.png&amp;diff=152530"/>
		<updated>2023-12-05T03:22:08Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152518</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152518"/>
		<updated>2023-12-05T02:59:59Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* End point summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
== Changes Made ==&lt;br /&gt;
The Teams schema was not properly implemented and we have added more attributes. &lt;br /&gt;
&lt;br /&gt;
[[File:TeamsController_new(present).png]]&lt;br /&gt;
&lt;br /&gt;
Before Schema&lt;br /&gt;
&lt;br /&gt;
Following attributes would be added to the teams table - &lt;br /&gt;
1. Name of the Team (Unique)&lt;br /&gt;
2. Team ID (Unique)&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2023-12-04 16-05-49.png]]&lt;br /&gt;
&lt;br /&gt;
Final Schema.&lt;br /&gt;
We also added foreign keys in the Users table as one Team can have many Users &lt;br /&gt;
&lt;br /&gt;
[[File:UsersUpdated.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will delete the team.&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Swagger UI == &lt;br /&gt;
&lt;br /&gt;
[[File:Image.png||1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
Github PR Link&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152517</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152517"/>
		<updated>2023-12-05T02:59:30Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* Functionality */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
== Changes Made ==&lt;br /&gt;
The Teams schema was not properly implemented and we have added more attributes. &lt;br /&gt;
&lt;br /&gt;
[[File:TeamsController_new(present).png]]&lt;br /&gt;
&lt;br /&gt;
Before Schema&lt;br /&gt;
&lt;br /&gt;
Following attributes would be added to the teams table - &lt;br /&gt;
1. Name of the Team (Unique)&lt;br /&gt;
2. Team ID (Unique)&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2023-12-04 16-05-49.png]]&lt;br /&gt;
&lt;br /&gt;
Final Schema.&lt;br /&gt;
We also added foreign keys in the Users table as one Team can have many Users &lt;br /&gt;
&lt;br /&gt;
[[File:UsersUpdated.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will delete the team.&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
This will delete the particular team.&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Image.png||1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
Github PR Link&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152516</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152516"/>
		<updated>2023-12-05T02:59:13Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* Functinality */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
== Changes Made ==&lt;br /&gt;
The Teams schema was not properly implemented and we have added more attributes. &lt;br /&gt;
&lt;br /&gt;
[[File:TeamsController_new(present).png]]&lt;br /&gt;
&lt;br /&gt;
Before Schema&lt;br /&gt;
&lt;br /&gt;
Following attributes would be added to the teams table - &lt;br /&gt;
1. Name of the Team (Unique)&lt;br /&gt;
2. Team ID (Unique)&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2023-12-04 16-05-49.png]]&lt;br /&gt;
&lt;br /&gt;
Final Schema.&lt;br /&gt;
We also added foreign keys in the Users table as one Team can have many Users &lt;br /&gt;
&lt;br /&gt;
[[File:UsersUpdated.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will delete the team.&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functionality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Image.png||1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
Github PR Link&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152514</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152514"/>
		<updated>2023-12-05T02:58:59Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* Design and Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
== Changes Made ==&lt;br /&gt;
The Teams schema was not properly implemented and we have added more attributes. &lt;br /&gt;
&lt;br /&gt;
[[File:TeamsController_new(present).png]]&lt;br /&gt;
&lt;br /&gt;
Before Schema&lt;br /&gt;
&lt;br /&gt;
Following attributes would be added to the teams table - &lt;br /&gt;
1. Name of the Team (Unique)&lt;br /&gt;
2. Team ID (Unique)&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2023-12-04 16-05-49.png]]&lt;br /&gt;
&lt;br /&gt;
Final Schema.&lt;br /&gt;
We also added foreign keys in the Users table as one Team can have many Users &lt;br /&gt;
&lt;br /&gt;
[[File:UsersUpdated.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will delete the team.&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
== Development Strategy == &lt;br /&gt;
We have tried to follow a Test Driven Development approach to implement both the Invitation model and the Invitation Controller.&lt;br /&gt;
Firstly a failing test case was written and then the code was added such that the test which was failing will pass now.&lt;br /&gt;
&lt;br /&gt;
Also, we have tried to follow the rails philosophy of &amp;quot;Fat models&amp;quot; We have tried to move as much business logic from the controller to the model as possible. This will also help keep the controller code clean and encourage code reusability.&lt;br /&gt;
&lt;br /&gt;
== Functinality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Image.png||1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
Github PR Link&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152510</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152510"/>
		<updated>2023-12-05T02:57:31Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* Design and Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an online platform designed to facilitate peer review and submission of various types of academic work, including articles, codes, and websites. The application allows instructors to add assignments, grade them, and assign students to teams based on their topic preferences. The platform also enables students to provide feedback on each other's work through peer reviews, which can be helpful in improving the quality of their projects. Expertiza is backed by the National Science Foundation.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The Team model and TeamsController are responsible for managing teams for users and create a team-based assignment system. In this, the system allows the admin to perform CRUD operations on teams model. An admin can create a new team, edit the name of the team, add a student to them team, remove a student from the team, and delete the team. This functinality has to be thoroughly tested and implemented to make sure the code is error-free. The TeamsController includes methods for creating, reading, updating the team name, and deleting the team naem. The create teams page should display all the exisiting teams, with members and their unity ID.&lt;br /&gt;
&lt;br /&gt;
==Objectives==&lt;br /&gt;
1. Write RESTful endpoints of create, show, update, and delete teams.&lt;br /&gt;
&lt;br /&gt;
2. Develop and implement methods in the TeamsController that enable the following functionality: Create teams, show teams, show team members, update team details, delete team, and list all the teams.&lt;br /&gt;
&lt;br /&gt;
3. Implement end-points API checks. &lt;br /&gt;
&lt;br /&gt;
4. Return proper status codes and proper validation for RESTful endpoints.&lt;br /&gt;
&lt;br /&gt;
5. Write models and controllers such that they use modern approaches to writing Ruby code, including utilizing language features and adhering to best practices for object-oriented design.&lt;br /&gt;
&lt;br /&gt;
6. Adding relevant data to populate the tables&lt;br /&gt;
&lt;br /&gt;
7. Write proper Rspec tests for all APIs, models, controllers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
== Changes Made ==&lt;br /&gt;
The Teams schema was not properly implemented and we have added more attributes. &lt;br /&gt;
&lt;br /&gt;
[[File:TeamsController_new(present).png]]&lt;br /&gt;
&lt;br /&gt;
Before Schema&lt;br /&gt;
&lt;br /&gt;
Following attributes would be added to the teams table - &lt;br /&gt;
1. Name of the Team (Unique)&lt;br /&gt;
2. Team ID (Unique)&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2023-12-04 16-05-49.png]]&lt;br /&gt;
&lt;br /&gt;
Final Schema.&lt;br /&gt;
We also added foreign keys in the Users table as one Team can have many Users &lt;br /&gt;
&lt;br /&gt;
[[File:UsersUpdated.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will delete the team.&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Functinality == &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Image.png||1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test on empty teams list || This test verifies if no teams exist and returns an empty list&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Test to return message indicating team deletion || This test returns a message when a team is deleted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg||1000px]]&lt;br /&gt;
&lt;br /&gt;
Github PR Link&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152404</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152404"/>
		<updated>2023-12-05T00:07:11Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview of Expertiza ==&lt;br /&gt;
Expertiza is a learning management system that is developed with Ruby on Rails and is accessible as open source software. It can create assignments, tests, assignment teams, and courses, among a wide range of other features and functions. It also has a thorough system for giving other teams and groups of teammates peer reviews and feedback. The files that are largely addressed in this project are the frontend React Components of User, Institution and Roles. A fully functional UI for these components will be developed using React for this project.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
== Changes Made ==&lt;br /&gt;
The Teams schema was not properly implemented and we have added more attributes. &lt;br /&gt;
&lt;br /&gt;
[[File:TeamsController_new(present).png]]&lt;br /&gt;
&lt;br /&gt;
Before Schema&lt;br /&gt;
&lt;br /&gt;
Following attributes would be added to the teams table - &lt;br /&gt;
1. Name of the Team (Unique)&lt;br /&gt;
2. Team ID (Unique)&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2023-12-04 16-05-49.png]]&lt;br /&gt;
&lt;br /&gt;
Final Schema.&lt;br /&gt;
We also added foreign keys in the Users table as one Team can have many Users &lt;br /&gt;
&lt;br /&gt;
[[File:UsersUpdated.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will delete the team.&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' FUNCTIONALITY ''' &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Image.png||1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:TestsAll.jpeg]]&lt;br /&gt;
&lt;br /&gt;
Github PR Link&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:TestsAll.jpeg&amp;diff=152403</id>
		<title>File:TestsAll.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:TestsAll.jpeg&amp;diff=152403"/>
		<updated>2023-12-05T00:06:55Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152395</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152395"/>
		<updated>2023-12-04T23:50:53Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview of Expertiza ==&lt;br /&gt;
Expertiza is a learning management system that is developed with Ruby on Rails and is accessible as open source software. It can create assignments, tests, assignment teams, and courses, among a wide range of other features and functions. It also has a thorough system for giving other teams and groups of teammates peer reviews and feedback. The files that are largely addressed in this project are the frontend React Components of User, Institution and Roles. A fully functional UI for these components will be developed using React for this project.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
== Changes Made ==&lt;br /&gt;
The Teams schema was not properly implemented and we have added more attributes. &lt;br /&gt;
&lt;br /&gt;
[[File:TeamsController_new(present).png]]&lt;br /&gt;
&lt;br /&gt;
Before Schema&lt;br /&gt;
&lt;br /&gt;
Following attributes would be added to the teams table - &lt;br /&gt;
1. Name of the Team (Unique)&lt;br /&gt;
2. Team ID (Unique)&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2023-12-04 16-05-49.png]]&lt;br /&gt;
&lt;br /&gt;
Final Schema.&lt;br /&gt;
We also added foreign keys in the Users table as one Team can have many Users &lt;br /&gt;
&lt;br /&gt;
[[File:UsersUpdated.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will delete the team.&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' FUNCTIONALITY ''' &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Image.png||1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Github PR Link&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152394</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152394"/>
		<updated>2023-12-04T23:50:26Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview of Expertiza ==&lt;br /&gt;
Expertiza is a learning management system that is developed with Ruby on Rails and is accessible as open source software. It can create assignments, tests, assignment teams, and courses, among a wide range of other features and functions. It also has a thorough system for giving other teams and groups of teammates peer reviews and feedback. The files that are largely addressed in this project are the frontend React Components of User, Institution and Roles. A fully functional UI for these components will be developed using React for this project.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
== Changes Made ==&lt;br /&gt;
The Teams schema was not properly implemented and we have added more attributes. &lt;br /&gt;
&lt;br /&gt;
[[File:TeamsController_new(present).png]]&lt;br /&gt;
&lt;br /&gt;
Before Schema&lt;br /&gt;
&lt;br /&gt;
Following attributes would be added to the teams table - &lt;br /&gt;
1. Name of the Team (Unique)&lt;br /&gt;
2. Team ID (Unique)&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2023-12-04 16-05-49.png]]&lt;br /&gt;
&lt;br /&gt;
Final Schema.&lt;br /&gt;
We also added foreign keys in the Users table as one Team can have many Users &lt;br /&gt;
&lt;br /&gt;
[[File:UsersUpdated.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will delete the team.&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' FUNCTIONALITY ''' &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
[[File:Image.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Github PR Link&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Image.png&amp;diff=152393</id>
		<title>File:Image.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Image.png&amp;diff=152393"/>
		<updated>2023-12-04T23:50:12Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: Rnarula2 uploaded a new version of File:Image.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152392</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152392"/>
		<updated>2023-12-04T23:48:22Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* End point summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview of Expertiza ==&lt;br /&gt;
Expertiza is a learning management system that is developed with Ruby on Rails and is accessible as open source software. It can create assignments, tests, assignment teams, and courses, among a wide range of other features and functions. It also has a thorough system for giving other teams and groups of teammates peer reviews and feedback. The files that are largely addressed in this project are the frontend React Components of User, Institution and Roles. A fully functional UI for these components will be developed using React for this project.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
== Changes Made ==&lt;br /&gt;
The Teams schema was not properly implemented and we have added more attributes. &lt;br /&gt;
&lt;br /&gt;
[[File:TeamsController_new(present).png]]&lt;br /&gt;
&lt;br /&gt;
Before Schema&lt;br /&gt;
&lt;br /&gt;
Following attributes would be added to the teams table - &lt;br /&gt;
1. Name of the Team (Unique)&lt;br /&gt;
2. Team ID (Unique)&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2023-12-04 16-05-49.png]]&lt;br /&gt;
&lt;br /&gt;
Final Schema.&lt;br /&gt;
We also added foreign keys in the Users table as one Team can have many Users &lt;br /&gt;
&lt;br /&gt;
[[File:UsersUpdated.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will delete the team.&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' FUNCTIONALITY ''' &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||1000px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||1000px ]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Github PR Link&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152390</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152390"/>
		<updated>2023-12-04T23:47:43Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview of Expertiza ==&lt;br /&gt;
Expertiza is a learning management system that is developed with Ruby on Rails and is accessible as open source software. It can create assignments, tests, assignment teams, and courses, among a wide range of other features and functions. It also has a thorough system for giving other teams and groups of teammates peer reviews and feedback. The files that are largely addressed in this project are the frontend React Components of User, Institution and Roles. A fully functional UI for these components will be developed using React for this project.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
== Changes Made ==&lt;br /&gt;
The Teams schema was not properly implemented and we have added more attributes. &lt;br /&gt;
&lt;br /&gt;
[[File:TeamsController_new(present).png]]&lt;br /&gt;
&lt;br /&gt;
Before Schema&lt;br /&gt;
&lt;br /&gt;
Following attributes would be added to the teams table - &lt;br /&gt;
1. Name of the Team (Unique)&lt;br /&gt;
2. Team ID (Unique)&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2023-12-04 16-05-49.png]]&lt;br /&gt;
&lt;br /&gt;
Final Schema.&lt;br /&gt;
We also added foreign keys in the Users table as one Team can have many Users &lt;br /&gt;
&lt;br /&gt;
[[File:UsersUpdated.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will delete the team.&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' FUNCTIONALITY ''' &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg||500px ]]&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg||500px]] &lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg||500px]] &lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg||500px ]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Github PR Link&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152385</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152385"/>
		<updated>2023-12-04T23:28:23Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview of Expertiza ==&lt;br /&gt;
Expertiza is a learning management system that is developed with Ruby on Rails and is accessible as open source software. It can create assignments, tests, assignment teams, and courses, among a wide range of other features and functions. It also has a thorough system for giving other teams and groups of teammates peer reviews and feedback. The files that are largely addressed in this project are the frontend React Components of User, Institution and Roles. A fully functional UI for these components will be developed using React for this project.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
== Changes Made ==&lt;br /&gt;
The Teams schema was not properly implemented and we have added more attributes. &lt;br /&gt;
&lt;br /&gt;
[[File:TeamsController_new(present).png]]&lt;br /&gt;
&lt;br /&gt;
Before Schema&lt;br /&gt;
&lt;br /&gt;
Following attributes would be added to the teams table - &lt;br /&gt;
1. Name of the Team (Unique)&lt;br /&gt;
2. Team ID (Unique)&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2023-12-04 16-05-49.png]]&lt;br /&gt;
&lt;br /&gt;
Final Schema.&lt;br /&gt;
We also added foreign keys in the Users table as one Team can have many Users &lt;br /&gt;
&lt;br /&gt;
[[File:UsersUpdated.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will delete the team.&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' FUNCTIONALITY ''' &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:DeleteTeam.jpeg ]]&lt;br /&gt;
&lt;br /&gt;
[[ File:UpdateTeam.jpeg ]] &lt;br /&gt;
&lt;br /&gt;
[[ File:AllTeams.jpeg ]] &lt;br /&gt;
&lt;br /&gt;
[[ File:AfterCreateTeam.jpeg ]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Github PR Link&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152384</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152384"/>
		<updated>2023-12-04T23:27:14Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview of Expertiza ==&lt;br /&gt;
Expertiza is a learning management system that is developed with Ruby on Rails and is accessible as open source software. It can create assignments, tests, assignment teams, and courses, among a wide range of other features and functions. It also has a thorough system for giving other teams and groups of teammates peer reviews and feedback. The files that are largely addressed in this project are the frontend React Components of User, Institution and Roles. A fully functional UI for these components will be developed using React for this project.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
== Changes Made ==&lt;br /&gt;
The Teams schema was not properly implemented and we have added more attributes. &lt;br /&gt;
&lt;br /&gt;
[[File:TeamsController_new(present).png]]&lt;br /&gt;
&lt;br /&gt;
Before Schema&lt;br /&gt;
&lt;br /&gt;
Following attributes would be added to the teams table - &lt;br /&gt;
1. Name of the Team (Unique)&lt;br /&gt;
2. Team ID (Unique)&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2023-12-04 16-05-49.png]]&lt;br /&gt;
&lt;br /&gt;
Final Schema.&lt;br /&gt;
We also added foreign keys in the Users table as one Team can have many Users &lt;br /&gt;
&lt;br /&gt;
[[File:UsersUpdated.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will delete the team.&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' FUNCTIONALITY ''' &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File DeleteTeam.jpeg ]]&lt;br /&gt;
&lt;br /&gt;
[[ File UpdateTeam.jpeg ]] &lt;br /&gt;
&lt;br /&gt;
[[ File AllTeams.jpeg ]] &lt;br /&gt;
&lt;br /&gt;
[[ File AfterCreateTeam.jpeg ]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Github PR Link&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152383</id>
		<title>CSC/ECE 517 Fall 2023 - E2387. Reimplement Teams backend (Phase 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2023_-_E2387._Reimplement_Teams_backend_(Phase_2)&amp;diff=152383"/>
		<updated>2023-12-04T23:26:40Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: /* End point summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview of Expertiza ==&lt;br /&gt;
Expertiza is a learning management system that is developed with Ruby on Rails and is accessible as open source software. It can create assignments, tests, assignment teams, and courses, among a wide range of other features and functions. It also has a thorough system for giving other teams and groups of teammates peer reviews and feedback. The files that are largely addressed in this project are the frontend React Components of User, Institution and Roles. A fully functional UI for these components will be developed using React for this project.&lt;br /&gt;
&lt;br /&gt;
== Technologies Used for the Design ==&lt;br /&gt;
&lt;br /&gt;
1. Ruby on Rails&lt;br /&gt;
&lt;br /&gt;
2. Rspec (for Testing)&lt;br /&gt;
&lt;br /&gt;
3. Swagger UI&lt;br /&gt;
&lt;br /&gt;
== Changes Made ==&lt;br /&gt;
The Teams schema was not properly implemented and we have added more attributes. &lt;br /&gt;
&lt;br /&gt;
[[File:TeamsController_new(present).png]]&lt;br /&gt;
&lt;br /&gt;
Before Schema&lt;br /&gt;
&lt;br /&gt;
Following attributes would be added to the teams table - &lt;br /&gt;
1. Name of the Team (Unique)&lt;br /&gt;
2. Team ID (Unique)&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2023-12-04 16-05-49.png]]&lt;br /&gt;
&lt;br /&gt;
Final Schema.&lt;br /&gt;
We also added foreign keys in the Users table as one Team can have many Users &lt;br /&gt;
&lt;br /&gt;
[[File:UsersUpdated.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will delete the team.&lt;br /&gt;
&lt;br /&gt;
== Validations ==&lt;br /&gt;
'''Only Admins should be able to access this page.'''&lt;br /&gt;
&lt;br /&gt;
1. Team ID's should be unique.&lt;br /&gt;
&lt;br /&gt;
2. If a team member is already added to another team, it should give appropriate error.&lt;br /&gt;
&lt;br /&gt;
== Design and Implementation == &lt;br /&gt;
&lt;br /&gt;
[[File: ERDiagram2363Project4.png|500px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' FUNCTIONALITY ''' &lt;br /&gt;
We also added new controller (teams_controller.rb) in which we added the following methods.&lt;br /&gt;
&lt;br /&gt;
''' 1. create '''&lt;br /&gt;
&lt;br /&gt;
This will create a new team.&lt;br /&gt;
&lt;br /&gt;
''' 2. index '''&lt;br /&gt;
&lt;br /&gt;
This will list all the teams.&lt;br /&gt;
&lt;br /&gt;
''' 3. update '''&lt;br /&gt;
&lt;br /&gt;
This will update the team's name.&lt;br /&gt;
&lt;br /&gt;
''' 4. destroy '''&lt;br /&gt;
&lt;br /&gt;
== End point summary ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:40px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Method !! Endpoint !! Request Body !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || create || POST &amp;lt;br/&amp;gt;/teams||{ &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} ||Create a new team with given team name.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || index || GET &amp;lt;br/&amp;gt;/teams || ||Get a list of all the teams.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || show || GET &amp;lt;br/&amp;gt;/teams/&amp;lt;team_id&amp;gt; || || Get a particular team with the team_id.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || update || PATCH /teams/&amp;lt;team_id&amp;gt; || { &amp;lt;br/&amp;gt; &amp;quot;name&amp;quot;: String&amp;gt;} || Modify the name of the team.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || destroy || DELETE &amp;lt;br/&amp;gt; /teams/&amp;lt;team_id&amp;gt; || || Delete the team.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ DeleteTeam.jpeg ]]&lt;br /&gt;
&lt;br /&gt;
[[ UpdateTeam.jpeg ]] &lt;br /&gt;
&lt;br /&gt;
[[ AllTeams.jpeg ]] &lt;br /&gt;
&lt;br /&gt;
[[ AfterCreateTeam.jpeg ]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
We utilized RSpec as the testing framework for our system and the development process followed Test Driven Development. The controller tests were written in a comprehensive way. &lt;br /&gt;
&lt;br /&gt;
To run the controller tests:&lt;br /&gt;
&lt;br /&gt;
1. git clone &lt;br /&gt;
&lt;br /&gt;
2. cd reimplementation-back-end/&lt;br /&gt;
&lt;br /&gt;
3. bundle install&lt;br /&gt;
&lt;br /&gt;
4. bundle exec rspec spec/requests/api/v1/teams_spec.rb&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:30px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sr No !! Test !! Description &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Test to list all Teams || This test verifies if the system can successfully retrieve a list of all teams available in the system.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Test to create a new Team || This test verifies if the system can successfully create a new team with valid parameters such as team name&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Test to update Team Name || This test verifies if the system can handle updating team name with valid parameters such as team name.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Test to delete a Team || This test verifies if the system can team deletion&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ File:Tests1 team controller.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Tests2 team controller.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Github PR Link&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/reimplementation-back-end/pull/61]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
* Kartiki Bhandakkar &amp;lt;kbhanda3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Raghav Narula &amp;lt;rnarula2@ncsu.edu&amp;gt;&lt;br /&gt;
* Mihir Nikam &amp;lt;mvnikam@ncsu.edu&amp;gt;&lt;br /&gt;
* Ebani Gogia &amp;lt;egogia@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:AfterCreateTeam.jpeg&amp;diff=152382</id>
		<title>File:AfterCreateTeam.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:AfterCreateTeam.jpeg&amp;diff=152382"/>
		<updated>2023-12-04T23:26:31Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:AllTeams.jpeg&amp;diff=152381</id>
		<title>File:AllTeams.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:AllTeams.jpeg&amp;diff=152381"/>
		<updated>2023-12-04T23:26:12Z</updated>

		<summary type="html">&lt;p&gt;Rnarula2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rnarula2</name></author>
	</entry>
</feed>