<?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=Jlbucha4</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=Jlbucha4"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Jlbucha4"/>
	<updated>2026-06-30T19:45:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164437</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164437"/>
		<updated>2025-04-22T00:33:54Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Files That Have Been Modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, implementation was added for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned. To expand the functionality of the mentor management system, we want to incorporate mentors into assignment topics.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The main objective of this project is to extend the mentor management system by having it collaborate with the assignment topics system. When an assignment with topics is created, topics are imported from a spreadsheet into the assignment table. This project will focus on including pre-selected mentors (entered in the spreadsheet) in the assignment table and having the mentor assigned to the team automatically upon topic selection. On top of this, mentors should be able to be unassigned from topics on command and automatically when there are no more member as part of a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
====Checkbox to alter the Assignment Creation or Import====&lt;br /&gt;
Implementation will include adding a checkbox option when importing topics to include mentors. This checkbox will toggle whether or not the mentors will be included in the assignment/import. This checkbox will also reload the table to include the additional column required for the mentor's name. Once saved, these mentor names will be stored as an additional attribute in the sign_up_topic.&lt;br /&gt;
&lt;br /&gt;
[[File:mentor_checkbox_mockup.png|600px|thumb|Right|Mockup illustrating the proposed location for the mentor checkbox within the user interface form.]]&lt;br /&gt;
&lt;br /&gt;
It's important to note that this will not affect how teams and mentors are managed for projects where the entire class has the same project. That will still be handled by the mentors being assigned to a team once that team has reached half capacity. This feature will allow mentors to be associated with project topics in projects where each team has a different topic (e.g., ECE 517 Expertiza-based projects).&lt;br /&gt;
&lt;br /&gt;
====Automatic Assignment of Mentors====&lt;br /&gt;
After a team has been created and is allowed to choose a topic from the assignment, the mentor who was assigned to the topic will automatically be assigned to the team. This will be done by adding the mentor to the team (likely via the `TeamsUser` association) and ensuring their `can_mentor` participant value is true. Given the logic of the previous mentor management implementations, this ensures the participant on the team is recognized as a mentor.&lt;br /&gt;
&lt;br /&gt;
The outcome should be that the assigned mentor appears associated with the team in relevant views.&lt;br /&gt;
[[File:Mentor_shows_up_within_teams.png|600px|thumb|Right|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
This automatic assignment upon topic selection complements the existing logic where mentors are assigned when a team reaches half strength, as seen in the `MentorManagement` model: [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/models/mentor_management.rb#L43 MentorManagement#assign_mentor].&lt;br /&gt;
&lt;br /&gt;
Mentors may also be manually assigned after a topic is created as per the addition button for topics that need a mentor &lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectAddMentorManual.png|175px|Screenshot demonstrating how to add a mentor to a topic manually.]]&lt;br /&gt;
&lt;br /&gt;
====Removal of Mentors====&lt;br /&gt;
Mentors that are assigned to teams are able to be removed manually or automatically when a team drops the topic and the mentor is the only one left on the team. &lt;br /&gt;
&lt;br /&gt;
The manual removal of mentors can be achieved by clicking the 'X' next to their name as they appear in the 'Mentor' column as part of the Topics tab within certain assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectRemoveMentor.png|175px|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
====Importing Topics====&lt;br /&gt;
In order for assignments/topics to have mentors assigned to them before teams are formed, there needs to be a minor change to the way that topics are imported into Expertiza (accessible from the Topics tab of an assignment, e.g., `http://152.7.178.121:8080/assignments/1028/edit`).&lt;br /&gt;
&lt;br /&gt;
There should be an optional field in the import file (spreadsheet) that, when included, associates a mentor with a topic. This requires modifying the import logic to handle this optional mentor column.&lt;br /&gt;
[[File:Import_menu_changes.png|600px|thumb|Right|Screenshot highlighting modifications to the import menu, likely including the checkbox or instructions for the mentor column.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Imported_column_change.png|600px|thumb|Right|View showing the changes in the topic table data column after an import, displaying the imported mentor information associated with topics.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Successfully_imported_topics_with_mentors.png|600px|thumb|Right|Confirmation view indicating the successful import of topics along with their assigned mentors.]]&lt;br /&gt;
&lt;br /&gt;
The system should still support importing topics without mentors. Furthermore, there should be a way to manually add or edit the assigned mentor for a topic after it has been created or imported, whether it initially had a mentor or not.&lt;br /&gt;
[[File:Adding_individual_topic_with_mentor.png|600px|thumb|Right|Interface view demonstrating the process of adding or editing an individual topic and assigning a mentor to it manually.]]&lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectTablesView.png|600px|thumb|Right|Interface view for the topic tables that show an you can manually add and remove mentors from this view]]&lt;br /&gt;
&lt;br /&gt;
==Database==&lt;br /&gt;
We will likely leverage the existing `teams_users` table structure, potentially using the `duty_id` field or similar mechanisms to signify the mentor role within the context of a team, consistent with how other roles might be managed. The `SignUpTopic` model will need an attribute to store the pre-assigned mentor's identifier before a team signs up.&lt;br /&gt;
&lt;br /&gt;
==Files That Have Been Modified==&lt;br /&gt;
The following files have been updated for this implementation:&lt;br /&gt;
&lt;br /&gt;
Models:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/signed_up_team.rb  SignedUpTeam] - Potentially modified to trigger mentor assignment upon topic selection.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_topic.rb  SignUpTopic] - To add an attribute for storing the assigned mentor identifier.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_sheet.rb  SignUpSheet]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/team.rb  Team] &lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/topic_mentors/app/controllers/assignments_controller.rb assignments_controller.rb] - Used to unassign mentor with the X button&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/import_file_controller.rb  import_file_controller.rb] - To handle the new import format including the optional mentor column and the checkbox logic.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/sign_up_sheet_controller.rb  sign_up_sheet_controller.rb]&lt;br /&gt;
&lt;br /&gt;
Views:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/assignments/edit/_topics.html.erb  views/assignments/edit/_topics.html.erb] - To display the mentor column when editing topics if the feature is enabled.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/views/import_file/start.html.erb  views/import_file/start.html.erb] - To add the &amp;quot;include mentors&amp;quot; checkbox and potentially update instructions.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topics.html.erb  views/sign_up_sheet/_add_topics.html.erb] - To include mentor information when adding/displaying topics.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_line.html.erb  views/sign_up_sheet/_table_line.html.erb] - To display the mentor associated with a topic in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_header.html.erb  views/sign_up_sheet/_table_header.html.erb] - To add a header for the mentor column in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic_names.html.erb  views/sign_up_sheet/_topic_names.html.erb] - Potentially adjust topic display.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topic.html.erb  views/sign_up_sheet/_add_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/topic_mentors/app/views/sign_up_sheet/add_mentor_to_topic.html.erb views/sign_up_sheet/add_mentor_to_topic.html.erb] - Used to assign a mentor to an existing topic&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic.html.erb  views/sign_up_sheet/_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/import_file/_sign_up_topic.html.erb  app/views/import_file/_sign_up_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/new.html.erb  app/views/sign_up_sheet/new.html.erb]&lt;br /&gt;
&lt;br /&gt;
Helpers:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/helpers/import_topics_helper.rb  import_topics_helper.rb]&lt;br /&gt;
&lt;br /&gt;
Migrations:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings  db/migrate/20250301220548_create_meetings]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings.rb  db/migrate/20250301220548_create_meetings.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb  db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/schema.rb  db/schema.rb]&lt;br /&gt;
&lt;br /&gt;
Config: &lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/topic_mentors/config/routes.rb routes.rb] - Added routes to controller for the add and remove mentor buttons&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
The overarching purpose of these tests is to verify that the system correctly handles mentor assignments in projects where mentors are associated with topics. Tests should cover both success and failure scenarios for each feature. Key areas include:&lt;br /&gt;
&lt;br /&gt;
* '''Storing Mentors with Topics:''' &lt;br /&gt;
** Ensuring that topics can hold information about their assigned mentors (e.g., via the new attribute in `SignUpTopic`).&lt;br /&gt;
* '''Assigning Mentors During Topic Sign-up:''' &lt;br /&gt;
** Confirming that when a team chooses a topic, the topic's pre-assigned mentor is automatically added to the team with the correct role/permissions.&lt;br /&gt;
* '''Compatibility with Existing Assignment Logic:''' &lt;br /&gt;
** Ensuring that the existing logic for assigning mentors (e.g., when teams reach half strength in non-topic-based assignments) remains unaffected or correctly integrated if applicable.&lt;br /&gt;
* '''Displaying Mentor Information:''' &lt;br /&gt;
** Validating that team views and topic views accurately show mentor information for mentored assignments and topics, and correctly hide or omit it otherwise.&lt;br /&gt;
* '''Importing Topics with Mentors:'''&lt;br /&gt;
** Checking that topics imported from files correctly capture and store mentor assignments when the mentor column is present.&lt;br /&gt;
** Verifying that topics are imported correctly when the mentor column is absent.&lt;br /&gt;
** Confirming the &amp;quot;Include mentors&amp;quot; checkbox correctly updates the UI (e.g., topic table columns) and influences the import behavior.&lt;br /&gt;
* '''Manual Mentor Assignment:''' Testing the ability to manually add or edit a mentor for a topic via the UI.&lt;br /&gt;
&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
Once tests are created and modifications are implemented, we will run the test suite and provide evidence (e.g., screenshots of coverage reports) demonstrating the extent to which the new and modified code paths are covered by automated tests. The goal is comprehensive coverage for the implemented features.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
* Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
* E2504 Wiki (Previous Project): https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1jjbqggRDiOHrxdsMlliY62JnP34bGTNHVWAZNz89kT8/edit?tab=t.0#heading=h.yeys674t35p3&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
- Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
- Jacob Winters&lt;br /&gt;
- Alex Wakefield&lt;br /&gt;
- John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164435</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164435"/>
		<updated>2025-04-22T00:26:25Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Files That Have Been Modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, implementation was added for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned. To expand the functionality of the mentor management system, we want to incorporate mentors into assignment topics.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The main objective of this project is to extend the mentor management system by having it collaborate with the assignment topics system. When an assignment with topics is created, topics are imported from a spreadsheet into the assignment table. This project will focus on including pre-selected mentors (entered in the spreadsheet) in the assignment table and having the mentor assigned to the team automatically upon topic selection. On top of this, mentors should be able to be unassigned from topics on command and automatically when there are no more member as part of a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
====Checkbox to alter the Assignment Creation or Import====&lt;br /&gt;
Implementation will include adding a checkbox option when importing topics to include mentors. This checkbox will toggle whether or not the mentors will be included in the assignment/import. This checkbox will also reload the table to include the additional column required for the mentor's name. Once saved, these mentor names will be stored as an additional attribute in the sign_up_topic.&lt;br /&gt;
&lt;br /&gt;
[[File:mentor_checkbox_mockup.png|600px|thumb|Right|Mockup illustrating the proposed location for the mentor checkbox within the user interface form.]]&lt;br /&gt;
&lt;br /&gt;
It's important to note that this will not affect how teams and mentors are managed for projects where the entire class has the same project. That will still be handled by the mentors being assigned to a team once that team has reached half capacity. This feature will allow mentors to be associated with project topics in projects where each team has a different topic (e.g., ECE 517 Expertiza-based projects).&lt;br /&gt;
&lt;br /&gt;
====Automatic Assignment of Mentors====&lt;br /&gt;
After a team has been created and is allowed to choose a topic from the assignment, the mentor who was assigned to the topic will automatically be assigned to the team. This will be done by adding the mentor to the team (likely via the `TeamsUser` association) and ensuring their `can_mentor` participant value is true. Given the logic of the previous mentor management implementations, this ensures the participant on the team is recognized as a mentor.&lt;br /&gt;
&lt;br /&gt;
The outcome should be that the assigned mentor appears associated with the team in relevant views.&lt;br /&gt;
[[File:Mentor_shows_up_within_teams.png|600px|thumb|Right|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
This automatic assignment upon topic selection complements the existing logic where mentors are assigned when a team reaches half strength, as seen in the `MentorManagement` model: [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/models/mentor_management.rb#L43 MentorManagement#assign_mentor].&lt;br /&gt;
&lt;br /&gt;
Mentors may also be manually assigned after a topic is created as per the addition button for topics that need a mentor &lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectAddMentorManual.png|175px|Screenshot demonstrating how to add a mentor to a topic manually.]]&lt;br /&gt;
&lt;br /&gt;
====Removal of Mentors====&lt;br /&gt;
Mentors that are assigned to teams are able to be removed manually or automatically when a team drops the topic and the mentor is the only one left on the team. &lt;br /&gt;
&lt;br /&gt;
The manual removal of mentors can be achieved by clicking the 'X' next to their name as they appear in the 'Mentor' column as part of the Topics tab within certain assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectRemoveMentor.png|175px|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
====Importing Topics====&lt;br /&gt;
In order for assignments/topics to have mentors assigned to them before teams are formed, there needs to be a minor change to the way that topics are imported into Expertiza (accessible from the Topics tab of an assignment, e.g., `http://152.7.178.121:8080/assignments/1028/edit`).&lt;br /&gt;
&lt;br /&gt;
There should be an optional field in the import file (spreadsheet) that, when included, associates a mentor with a topic. This requires modifying the import logic to handle this optional mentor column.&lt;br /&gt;
[[File:Import_menu_changes.png|600px|thumb|Right|Screenshot highlighting modifications to the import menu, likely including the checkbox or instructions for the mentor column.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Imported_column_change.png|600px|thumb|Right|View showing the changes in the topic table data column after an import, displaying the imported mentor information associated with topics.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Successfully_imported_topics_with_mentors.png|600px|thumb|Right|Confirmation view indicating the successful import of topics along with their assigned mentors.]]&lt;br /&gt;
&lt;br /&gt;
The system should still support importing topics without mentors. Furthermore, there should be a way to manually add or edit the assigned mentor for a topic after it has been created or imported, whether it initially had a mentor or not.&lt;br /&gt;
[[File:Adding_individual_topic_with_mentor.png|600px|thumb|Right|Interface view demonstrating the process of adding or editing an individual topic and assigning a mentor to it manually.]]&lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectTablesView.png|600px|thumb|Right|Interface view for the topic tables that show an you can manually add and remove mentors from this view]]&lt;br /&gt;
&lt;br /&gt;
==Database==&lt;br /&gt;
We will likely leverage the existing `teams_users` table structure, potentially using the `duty_id` field or similar mechanisms to signify the mentor role within the context of a team, consistent with how other roles might be managed. The `SignUpTopic` model will need an attribute to store the pre-assigned mentor's identifier before a team signs up.&lt;br /&gt;
&lt;br /&gt;
==Files That Have Been Modified==&lt;br /&gt;
The following files have been updated for this implementation:&lt;br /&gt;
&lt;br /&gt;
Models:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/signed_up_team.rb  SignedUpTeam] - Potentially modified to trigger mentor assignment upon topic selection.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_topic.rb  SignUpTopic] - To add an attribute for storing the assigned mentor identifier.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_sheet.rb  SignUpSheet]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/team.rb  Team]&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/import_file_controller.rb  import_file_controller.rb] - To handle the new import format including the optional mentor column and the checkbox logic.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/sign_up_sheet_controller.rb  sign_up_sheet_controller.rb]&lt;br /&gt;
&lt;br /&gt;
Views:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/assignments/edit/_topics.html.erb  views/assignments/edit/_topics.html.erb] - To display the mentor column when editing topics if the feature is enabled.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/views/import_file/start.html.erb  views/import_file/start.html.erb] - To add the &amp;quot;include mentors&amp;quot; checkbox and potentially update instructions.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topics.html.erb  views/sign_up_sheet/_add_topics.html.erb] - To include mentor information when adding/displaying topics.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_line.html.erb  views/sign_up_sheet/_table_line.html.erb] - To display the mentor associated with a topic in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_header.html.erb  views/sign_up_sheet/_table_header.html.erb] - To add a header for the mentor column in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic_names.html.erb  views/sign_up_sheet/_topic_names.html.erb] - Potentially adjust topic display.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topic.html.erb  views/sign_up_sheet/_add_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/topic_mentors/app/views/sign_up_sheet/add_mentor_to_topic.html.erb views/sign_up_sheet/add_mentor_to_topic.html.erb] - Used to assign a mentor to an existing topic&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic.html.erb  views/sign_up_sheet/_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/import_file/_sign_up_topic.html.erb  app/views/import_file/_sign_up_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/new.html.erb  app/views/sign_up_sheet/new.html.erb]&lt;br /&gt;
&lt;br /&gt;
Helpers:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/helpers/import_topics_helper.rb  import_topics_helper.rb]&lt;br /&gt;
&lt;br /&gt;
Migrations:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings  db/migrate/20250301220548_create_meetings]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings.rb  db/migrate/20250301220548_create_meetings.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb  db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/schema.rb  db/schema.rb]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
The overarching purpose of these tests is to verify that the system correctly handles mentor assignments in projects where mentors are associated with topics. Tests should cover both success and failure scenarios for each feature. Key areas include:&lt;br /&gt;
&lt;br /&gt;
* '''Storing Mentors with Topics:''' &lt;br /&gt;
** Ensuring that topics can hold information about their assigned mentors (e.g., via the new attribute in `SignUpTopic`).&lt;br /&gt;
* '''Assigning Mentors During Topic Sign-up:''' &lt;br /&gt;
** Confirming that when a team chooses a topic, the topic's pre-assigned mentor is automatically added to the team with the correct role/permissions.&lt;br /&gt;
* '''Compatibility with Existing Assignment Logic:''' &lt;br /&gt;
** Ensuring that the existing logic for assigning mentors (e.g., when teams reach half strength in non-topic-based assignments) remains unaffected or correctly integrated if applicable.&lt;br /&gt;
* '''Displaying Mentor Information:''' &lt;br /&gt;
** Validating that team views and topic views accurately show mentor information for mentored assignments and topics, and correctly hide or omit it otherwise.&lt;br /&gt;
* '''Importing Topics with Mentors:'''&lt;br /&gt;
** Checking that topics imported from files correctly capture and store mentor assignments when the mentor column is present.&lt;br /&gt;
** Verifying that topics are imported correctly when the mentor column is absent.&lt;br /&gt;
** Confirming the &amp;quot;Include mentors&amp;quot; checkbox correctly updates the UI (e.g., topic table columns) and influences the import behavior.&lt;br /&gt;
* '''Manual Mentor Assignment:''' Testing the ability to manually add or edit a mentor for a topic via the UI.&lt;br /&gt;
&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
Once tests are created and modifications are implemented, we will run the test suite and provide evidence (e.g., screenshots of coverage reports) demonstrating the extent to which the new and modified code paths are covered by automated tests. The goal is comprehensive coverage for the implemented features.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
* Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
* E2504 Wiki (Previous Project): https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1jjbqggRDiOHrxdsMlliY62JnP34bGTNHVWAZNz89kT8/edit?tab=t.0#heading=h.yeys674t35p3&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
- Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
- Jacob Winters&lt;br /&gt;
- Alex Wakefield&lt;br /&gt;
- John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164434</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164434"/>
		<updated>2025-04-22T00:26:10Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Files That May Be Modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, implementation was added for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned. To expand the functionality of the mentor management system, we want to incorporate mentors into assignment topics.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The main objective of this project is to extend the mentor management system by having it collaborate with the assignment topics system. When an assignment with topics is created, topics are imported from a spreadsheet into the assignment table. This project will focus on including pre-selected mentors (entered in the spreadsheet) in the assignment table and having the mentor assigned to the team automatically upon topic selection. On top of this, mentors should be able to be unassigned from topics on command and automatically when there are no more member as part of a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
====Checkbox to alter the Assignment Creation or Import====&lt;br /&gt;
Implementation will include adding a checkbox option when importing topics to include mentors. This checkbox will toggle whether or not the mentors will be included in the assignment/import. This checkbox will also reload the table to include the additional column required for the mentor's name. Once saved, these mentor names will be stored as an additional attribute in the sign_up_topic.&lt;br /&gt;
&lt;br /&gt;
[[File:mentor_checkbox_mockup.png|600px|thumb|Right|Mockup illustrating the proposed location for the mentor checkbox within the user interface form.]]&lt;br /&gt;
&lt;br /&gt;
It's important to note that this will not affect how teams and mentors are managed for projects where the entire class has the same project. That will still be handled by the mentors being assigned to a team once that team has reached half capacity. This feature will allow mentors to be associated with project topics in projects where each team has a different topic (e.g., ECE 517 Expertiza-based projects).&lt;br /&gt;
&lt;br /&gt;
====Automatic Assignment of Mentors====&lt;br /&gt;
After a team has been created and is allowed to choose a topic from the assignment, the mentor who was assigned to the topic will automatically be assigned to the team. This will be done by adding the mentor to the team (likely via the `TeamsUser` association) and ensuring their `can_mentor` participant value is true. Given the logic of the previous mentor management implementations, this ensures the participant on the team is recognized as a mentor.&lt;br /&gt;
&lt;br /&gt;
The outcome should be that the assigned mentor appears associated with the team in relevant views.&lt;br /&gt;
[[File:Mentor_shows_up_within_teams.png|600px|thumb|Right|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
This automatic assignment upon topic selection complements the existing logic where mentors are assigned when a team reaches half strength, as seen in the `MentorManagement` model: [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/models/mentor_management.rb#L43 MentorManagement#assign_mentor].&lt;br /&gt;
&lt;br /&gt;
Mentors may also be manually assigned after a topic is created as per the addition button for topics that need a mentor &lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectAddMentorManual.png|175px|Screenshot demonstrating how to add a mentor to a topic manually.]]&lt;br /&gt;
&lt;br /&gt;
====Removal of Mentors====&lt;br /&gt;
Mentors that are assigned to teams are able to be removed manually or automatically when a team drops the topic and the mentor is the only one left on the team. &lt;br /&gt;
&lt;br /&gt;
The manual removal of mentors can be achieved by clicking the 'X' next to their name as they appear in the 'Mentor' column as part of the Topics tab within certain assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectRemoveMentor.png|175px|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
====Importing Topics====&lt;br /&gt;
In order for assignments/topics to have mentors assigned to them before teams are formed, there needs to be a minor change to the way that topics are imported into Expertiza (accessible from the Topics tab of an assignment, e.g., `http://152.7.178.121:8080/assignments/1028/edit`).&lt;br /&gt;
&lt;br /&gt;
There should be an optional field in the import file (spreadsheet) that, when included, associates a mentor with a topic. This requires modifying the import logic to handle this optional mentor column.&lt;br /&gt;
[[File:Import_menu_changes.png|600px|thumb|Right|Screenshot highlighting modifications to the import menu, likely including the checkbox or instructions for the mentor column.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Imported_column_change.png|600px|thumb|Right|View showing the changes in the topic table data column after an import, displaying the imported mentor information associated with topics.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Successfully_imported_topics_with_mentors.png|600px|thumb|Right|Confirmation view indicating the successful import of topics along with their assigned mentors.]]&lt;br /&gt;
&lt;br /&gt;
The system should still support importing topics without mentors. Furthermore, there should be a way to manually add or edit the assigned mentor for a topic after it has been created or imported, whether it initially had a mentor or not.&lt;br /&gt;
[[File:Adding_individual_topic_with_mentor.png|600px|thumb|Right|Interface view demonstrating the process of adding or editing an individual topic and assigning a mentor to it manually.]]&lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectTablesView.png|600px|thumb|Right|Interface view for the topic tables that show an you can manually add and remove mentors from this view]]&lt;br /&gt;
&lt;br /&gt;
==Database==&lt;br /&gt;
We will likely leverage the existing `teams_users` table structure, potentially using the `duty_id` field or similar mechanisms to signify the mentor role within the context of a team, consistent with how other roles might be managed. The `SignUpTopic` model will need an attribute to store the pre-assigned mentor's identifier before a team signs up.&lt;br /&gt;
&lt;br /&gt;
==Files That Have Been Modified==&lt;br /&gt;
The following files are likely candidates for modification during this project:&lt;br /&gt;
&lt;br /&gt;
Models:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/signed_up_team.rb  SignedUpTeam] - Potentially modified to trigger mentor assignment upon topic selection.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_topic.rb  SignUpTopic] - To add an attribute for storing the assigned mentor identifier.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_sheet.rb  SignUpSheet]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/team.rb  Team]&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/import_file_controller.rb  import_file_controller.rb] - To handle the new import format including the optional mentor column and the checkbox logic.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/sign_up_sheet_controller.rb  sign_up_sheet_controller.rb]&lt;br /&gt;
&lt;br /&gt;
Views:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/assignments/edit/_topics.html.erb  views/assignments/edit/_topics.html.erb] - To display the mentor column when editing topics if the feature is enabled.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/views/import_file/start.html.erb  views/import_file/start.html.erb] - To add the &amp;quot;include mentors&amp;quot; checkbox and potentially update instructions.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topics.html.erb  views/sign_up_sheet/_add_topics.html.erb] - To include mentor information when adding/displaying topics.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_line.html.erb  views/sign_up_sheet/_table_line.html.erb] - To display the mentor associated with a topic in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_header.html.erb  views/sign_up_sheet/_table_header.html.erb] - To add a header for the mentor column in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic_names.html.erb  views/sign_up_sheet/_topic_names.html.erb] - Potentially adjust topic display.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topic.html.erb  views/sign_up_sheet/_add_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/topic_mentors/app/views/sign_up_sheet/add_mentor_to_topic.html.erb views/sign_up_sheet/add_mentor_to_topic.html.erb] - Used to assign a mentor to an existing topic&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic.html.erb  views/sign_up_sheet/_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/import_file/_sign_up_topic.html.erb  app/views/import_file/_sign_up_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/new.html.erb  app/views/sign_up_sheet/new.html.erb]&lt;br /&gt;
&lt;br /&gt;
Helpers:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/helpers/import_topics_helper.rb  import_topics_helper.rb]&lt;br /&gt;
&lt;br /&gt;
Migrations:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings  db/migrate/20250301220548_create_meetings]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings.rb  db/migrate/20250301220548_create_meetings.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb  db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/schema.rb  db/schema.rb]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
The overarching purpose of these tests is to verify that the system correctly handles mentor assignments in projects where mentors are associated with topics. Tests should cover both success and failure scenarios for each feature. Key areas include:&lt;br /&gt;
&lt;br /&gt;
* '''Storing Mentors with Topics:''' &lt;br /&gt;
** Ensuring that topics can hold information about their assigned mentors (e.g., via the new attribute in `SignUpTopic`).&lt;br /&gt;
* '''Assigning Mentors During Topic Sign-up:''' &lt;br /&gt;
** Confirming that when a team chooses a topic, the topic's pre-assigned mentor is automatically added to the team with the correct role/permissions.&lt;br /&gt;
* '''Compatibility with Existing Assignment Logic:''' &lt;br /&gt;
** Ensuring that the existing logic for assigning mentors (e.g., when teams reach half strength in non-topic-based assignments) remains unaffected or correctly integrated if applicable.&lt;br /&gt;
* '''Displaying Mentor Information:''' &lt;br /&gt;
** Validating that team views and topic views accurately show mentor information for mentored assignments and topics, and correctly hide or omit it otherwise.&lt;br /&gt;
* '''Importing Topics with Mentors:'''&lt;br /&gt;
** Checking that topics imported from files correctly capture and store mentor assignments when the mentor column is present.&lt;br /&gt;
** Verifying that topics are imported correctly when the mentor column is absent.&lt;br /&gt;
** Confirming the &amp;quot;Include mentors&amp;quot; checkbox correctly updates the UI (e.g., topic table columns) and influences the import behavior.&lt;br /&gt;
* '''Manual Mentor Assignment:''' Testing the ability to manually add or edit a mentor for a topic via the UI.&lt;br /&gt;
&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
Once tests are created and modifications are implemented, we will run the test suite and provide evidence (e.g., screenshots of coverage reports) demonstrating the extent to which the new and modified code paths are covered by automated tests. The goal is comprehensive coverage for the implemented features.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
* Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
* E2504 Wiki (Previous Project): https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1jjbqggRDiOHrxdsMlliY62JnP34bGTNHVWAZNz89kT8/edit?tab=t.0#heading=h.yeys674t35p3&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
- Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
- Jacob Winters&lt;br /&gt;
- Alex Wakefield&lt;br /&gt;
- John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProjectTablesView.png&amp;diff=164433</id>
		<title>File:FinalProjectTablesView.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProjectTablesView.png&amp;diff=164433"/>
		<updated>2025-04-22T00:25:20Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: Jlbucha4 uploaded a new version of File:FinalProjectTablesView.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Shows the final table view of the topics&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164429</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164429"/>
		<updated>2025-04-22T00:23:04Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, implementation was added for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned. To expand the functionality of the mentor management system, we want to incorporate mentors into assignment topics.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The main objective of this project is to extend the mentor management system by having it collaborate with the assignment topics system. When an assignment with topics is created, topics are imported from a spreadsheet into the assignment table. This project will focus on including pre-selected mentors (entered in the spreadsheet) in the assignment table and having the mentor assigned to the team automatically upon topic selection. On top of this, mentors should be able to be unassigned from topics on command and automatically when there are no more member as part of a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
====Checkbox to alter the Assignment Creation or Import====&lt;br /&gt;
Implementation will include adding a checkbox option when importing topics to include mentors. This checkbox will toggle whether or not the mentors will be included in the assignment/import. This checkbox will also reload the table to include the additional column required for the mentor's name. Once saved, these mentor names will be stored as an additional attribute in the sign_up_topic.&lt;br /&gt;
&lt;br /&gt;
[[File:mentor_checkbox_mockup.png|600px|thumb|Right|Mockup illustrating the proposed location for the mentor checkbox within the user interface form.]]&lt;br /&gt;
&lt;br /&gt;
It's important to note that this will not affect how teams and mentors are managed for projects where the entire class has the same project. That will still be handled by the mentors being assigned to a team once that team has reached half capacity. This feature will allow mentors to be associated with project topics in projects where each team has a different topic (e.g., ECE 517 Expertiza-based projects).&lt;br /&gt;
&lt;br /&gt;
====Automatic Assignment of Mentors====&lt;br /&gt;
After a team has been created and is allowed to choose a topic from the assignment, the mentor who was assigned to the topic will automatically be assigned to the team. This will be done by adding the mentor to the team (likely via the `TeamsUser` association) and ensuring their `can_mentor` participant value is true. Given the logic of the previous mentor management implementations, this ensures the participant on the team is recognized as a mentor.&lt;br /&gt;
&lt;br /&gt;
The outcome should be that the assigned mentor appears associated with the team in relevant views.&lt;br /&gt;
[[File:Mentor_shows_up_within_teams.png|600px|thumb|Right|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
This automatic assignment upon topic selection complements the existing logic where mentors are assigned when a team reaches half strength, as seen in the `MentorManagement` model: [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/models/mentor_management.rb#L43 MentorManagement#assign_mentor].&lt;br /&gt;
&lt;br /&gt;
Mentors may also be manually assigned after a topic is created as per the addition button for topics that need a mentor &lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectAddMentorManual.png|175px|Screenshot demonstrating how to add a mentor to a topic manually.]]&lt;br /&gt;
&lt;br /&gt;
====Removal of Mentors====&lt;br /&gt;
Mentors that are assigned to teams are able to be removed manually or automatically when a team drops the topic and the mentor is the only one left on the team. &lt;br /&gt;
&lt;br /&gt;
The manual removal of mentors can be achieved by clicking the 'X' next to their name as they appear in the 'Mentor' column as part of the Topics tab within certain assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectRemoveMentor.png|175px|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
====Importing Topics====&lt;br /&gt;
In order for assignments/topics to have mentors assigned to them before teams are formed, there needs to be a minor change to the way that topics are imported into Expertiza (accessible from the Topics tab of an assignment, e.g., `http://152.7.178.121:8080/assignments/1028/edit`).&lt;br /&gt;
&lt;br /&gt;
There should be an optional field in the import file (spreadsheet) that, when included, associates a mentor with a topic. This requires modifying the import logic to handle this optional mentor column.&lt;br /&gt;
[[File:Import_menu_changes.png|600px|thumb|Right|Screenshot highlighting modifications to the import menu, likely including the checkbox or instructions for the mentor column.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Imported_column_change.png|600px|thumb|Right|View showing the changes in the topic table data column after an import, displaying the imported mentor information associated with topics.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Successfully_imported_topics_with_mentors.png|600px|thumb|Right|Confirmation view indicating the successful import of topics along with their assigned mentors.]]&lt;br /&gt;
&lt;br /&gt;
The system should still support importing topics without mentors. Furthermore, there should be a way to manually add or edit the assigned mentor for a topic after it has been created or imported, whether it initially had a mentor or not.&lt;br /&gt;
[[File:Adding_individual_topic_with_mentor.png|600px|thumb|Right|Interface view demonstrating the process of adding or editing an individual topic and assigning a mentor to it manually.]]&lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectTablesView.png|600px|thumb|Right|Interface view for the topic tables that show an you can manually add and remove mentors from this view]]&lt;br /&gt;
&lt;br /&gt;
==Database==&lt;br /&gt;
We will likely leverage the existing `teams_users` table structure, potentially using the `duty_id` field or similar mechanisms to signify the mentor role within the context of a team, consistent with how other roles might be managed. The `SignUpTopic` model will need an attribute to store the pre-assigned mentor's identifier before a team signs up.&lt;br /&gt;
&lt;br /&gt;
==Files That May Be Modified==&lt;br /&gt;
The following files are likely candidates for modification during this project:&lt;br /&gt;
&lt;br /&gt;
Models:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/signed_up_team.rb  SignedUpTeam] - Potentially modified to trigger mentor assignment upon topic selection.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_topic.rb  SignUpTopic] - To add an attribute for storing the assigned mentor identifier.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_sheet.rb  SignUpSheet]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/team.rb  Team]&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/import_file_controller.rb  import_file_controller.rb] - To handle the new import format including the optional mentor column and the checkbox logic.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/sign_up_sheet_controller.rb  sign_up_sheet_controller.rb]&lt;br /&gt;
&lt;br /&gt;
Views:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/assignments/edit/_topics.html.erb  views/assignments/edit/_topics.html.erb] - To display the mentor column when editing topics if the feature is enabled.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/views/import_file/start.html.erb  views/import_file/start.html.erb] - To add the &amp;quot;include mentors&amp;quot; checkbox and potentially update instructions.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topics.html.erb  views/sign_up_sheet/_add_topics.html.erb] - To include mentor information when adding/displaying topics.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_line.html.erb  views/sign_up_sheet/_table_line.html.erb] - To display the mentor associated with a topic in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_header.html.erb  views/sign_up_sheet/_table_header.html.erb] - To add a header for the mentor column in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic_names.html.erb  views/sign_up_sheet/_topic_names.html.erb] - Potentially adjust topic display.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topic.html.erb  views/sign_up_sheet/_add_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/topic_mentors/app/views/sign_up_sheet/add_mentor_to_topic.html.erb views/sign_up_sheet/add_mentor_to_topic.html.erb] - Used to assign a mentor to an existing topic&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic.html.erb  views/sign_up_sheet/_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/import_file/_sign_up_topic.html.erb  app/views/import_file/_sign_up_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/new.html.erb  app/views/sign_up_sheet/new.html.erb]&lt;br /&gt;
&lt;br /&gt;
Helpers:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/helpers/import_topics_helper.rb  import_topics_helper.rb]&lt;br /&gt;
&lt;br /&gt;
Migrations:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings  db/migrate/20250301220548_create_meetings]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings.rb  db/migrate/20250301220548_create_meetings.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb  db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/schema.rb  db/schema.rb]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
The overarching purpose of these tests is to verify that the system correctly handles mentor assignments in projects where mentors are associated with topics. Tests should cover both success and failure scenarios for each feature. Key areas include:&lt;br /&gt;
&lt;br /&gt;
* '''Storing Mentors with Topics:''' &lt;br /&gt;
** Ensuring that topics can hold information about their assigned mentors (e.g., via the new attribute in `SignUpTopic`).&lt;br /&gt;
* '''Assigning Mentors During Topic Sign-up:''' &lt;br /&gt;
** Confirming that when a team chooses a topic, the topic's pre-assigned mentor is automatically added to the team with the correct role/permissions.&lt;br /&gt;
* '''Compatibility with Existing Assignment Logic:''' &lt;br /&gt;
** Ensuring that the existing logic for assigning mentors (e.g., when teams reach half strength in non-topic-based assignments) remains unaffected or correctly integrated if applicable.&lt;br /&gt;
* '''Displaying Mentor Information:''' &lt;br /&gt;
** Validating that team views and topic views accurately show mentor information for mentored assignments and topics, and correctly hide or omit it otherwise.&lt;br /&gt;
* '''Importing Topics with Mentors:'''&lt;br /&gt;
** Checking that topics imported from files correctly capture and store mentor assignments when the mentor column is present.&lt;br /&gt;
** Verifying that topics are imported correctly when the mentor column is absent.&lt;br /&gt;
** Confirming the &amp;quot;Include mentors&amp;quot; checkbox correctly updates the UI (e.g., topic table columns) and influences the import behavior.&lt;br /&gt;
* '''Manual Mentor Assignment:''' Testing the ability to manually add or edit a mentor for a topic via the UI.&lt;br /&gt;
&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
Once tests are created and modifications are implemented, we will run the test suite and provide evidence (e.g., screenshots of coverage reports) demonstrating the extent to which the new and modified code paths are covered by automated tests. The goal is comprehensive coverage for the implemented features.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
* Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
* E2504 Wiki (Previous Project): https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1jjbqggRDiOHrxdsMlliY62JnP34bGTNHVWAZNz89kT8/edit?tab=t.0#heading=h.yeys674t35p3&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
- Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
- Jacob Winters&lt;br /&gt;
- Alex Wakefield&lt;br /&gt;
- John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164428</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164428"/>
		<updated>2025-04-22T00:22:48Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, implementation was added for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned. To expand the functionality of the mentor management system, we want to incorporate mentors into assignment topics.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The main objective of this project is to extend the mentor management system by having it collaborate with the assignment topics system. When an assignment with topics is created, topics are imported from a spreadsheet into the assignment table. This project will focus on including pre-selected mentors (entered in the spreadsheet) in the assignment table and having the mentor assigned to the team automatically upon topic selection. On top of this, mentors should be able to be unassigned from topics on command and automatically when there are no more member as part of a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
====Checkbox to alter the Assignment Creation or Import====&lt;br /&gt;
Implementation will include adding a checkbox option when importing topics to include mentors. This checkbox will toggle whether or not the mentors will be included in the assignment/import. This checkbox will also reload the table to include the additional column required for the mentor's name. Once saved, these mentor names will be stored as an additional attribute in the sign_up_topic.&lt;br /&gt;
&lt;br /&gt;
[[File:mentor_checkbox_mockup.png|600px|thumb|Right|Mockup illustrating the proposed location for the mentor checkbox within the user interface form.]]&lt;br /&gt;
&lt;br /&gt;
It's important to note that this will not affect how teams and mentors are managed for projects where the entire class has the same project. That will still be handled by the mentors being assigned to a team once that team has reached half capacity. This feature will allow mentors to be associated with project topics in projects where each team has a different topic (e.g., ECE 517 Expertiza-based projects).&lt;br /&gt;
&lt;br /&gt;
====Automatic Assignment of Mentors====&lt;br /&gt;
After a team has been created and is allowed to choose a topic from the assignment, the mentor who was assigned to the topic will automatically be assigned to the team. This will be done by adding the mentor to the team (likely via the `TeamsUser` association) and ensuring their `can_mentor` participant value is true. Given the logic of the previous mentor management implementations, this ensures the participant on the team is recognized as a mentor.&lt;br /&gt;
&lt;br /&gt;
The outcome should be that the assigned mentor appears associated with the team in relevant views.&lt;br /&gt;
[[File:Mentor_shows_up_within_teams.png|600px|thumb|Right|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
This automatic assignment upon topic selection complements the existing logic where mentors are assigned when a team reaches half strength, as seen in the `MentorManagement` model: [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/models/mentor_management.rb#L43 MentorManagement#assign_mentor].&lt;br /&gt;
&lt;br /&gt;
Mentors may also be manually assigned after a topic is created as per the addition button for topics that need a mentor &lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectAddMentorManual.png|175px|Screenshot demonstrating how to add a mentor to a topic manually.]]&lt;br /&gt;
&lt;br /&gt;
====Removal of Mentors====&lt;br /&gt;
Mentors that are assigned to teams are able to be removed manually or automatically when a team drops the topic and the mentor is the only one left on the team. &lt;br /&gt;
&lt;br /&gt;
The manual removal of mentors can be achieved by clicking the 'X' next to their name as they appear in the 'Mentor' column as part of the Topics tab within certain assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectRemoveMentor.png|175px|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
====Importing Topics====&lt;br /&gt;
In order for assignments/topics to have mentors assigned to them before teams are formed, there needs to be a minor change to the way that topics are imported into Expertiza (accessible from the Topics tab of an assignment, e.g., `http://152.7.178.121:8080/assignments/1028/edit`).&lt;br /&gt;
&lt;br /&gt;
There should be an optional field in the import file (spreadsheet) that, when included, associates a mentor with a topic. This requires modifying the import logic to handle this optional mentor column.&lt;br /&gt;
[[File:Import_menu_changes.png|600px|thumb|Right|Screenshot highlighting modifications to the import menu, likely including the checkbox or instructions for the mentor column.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Imported_column_change.png|600px|thumb|Right|View showing the changes in the topic table data column after an import, displaying the imported mentor information associated with topics.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Successfully_imported_topics_with_mentors.png|600px|thumb|Right|Confirmation view indicating the successful import of topics along with their assigned mentors.]]&lt;br /&gt;
&lt;br /&gt;
The system should still support importing topics without mentors. Furthermore, there should be a way to manually add or edit the assigned mentor for a topic after it has been created or imported, whether it initially had a mentor or not.&lt;br /&gt;
[[File:Adding_individual_topic_with_mentor.png|600px|thumb|Right|Interface view demonstrating the process of adding or editing an individual topic and assigning a mentor to it manually.]]&lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectTableView.png|600px|thumb|Right|Interface view for the topic tables that show an you can manually add and remove mentors from this view]]&lt;br /&gt;
&lt;br /&gt;
==Database==&lt;br /&gt;
We will likely leverage the existing `teams_users` table structure, potentially using the `duty_id` field or similar mechanisms to signify the mentor role within the context of a team, consistent with how other roles might be managed. The `SignUpTopic` model will need an attribute to store the pre-assigned mentor's identifier before a team signs up.&lt;br /&gt;
&lt;br /&gt;
==Files That May Be Modified==&lt;br /&gt;
The following files are likely candidates for modification during this project:&lt;br /&gt;
&lt;br /&gt;
Models:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/signed_up_team.rb  SignedUpTeam] - Potentially modified to trigger mentor assignment upon topic selection.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_topic.rb  SignUpTopic] - To add an attribute for storing the assigned mentor identifier.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_sheet.rb  SignUpSheet]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/team.rb  Team]&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/import_file_controller.rb  import_file_controller.rb] - To handle the new import format including the optional mentor column and the checkbox logic.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/sign_up_sheet_controller.rb  sign_up_sheet_controller.rb]&lt;br /&gt;
&lt;br /&gt;
Views:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/assignments/edit/_topics.html.erb  views/assignments/edit/_topics.html.erb] - To display the mentor column when editing topics if the feature is enabled.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/views/import_file/start.html.erb  views/import_file/start.html.erb] - To add the &amp;quot;include mentors&amp;quot; checkbox and potentially update instructions.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topics.html.erb  views/sign_up_sheet/_add_topics.html.erb] - To include mentor information when adding/displaying topics.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_line.html.erb  views/sign_up_sheet/_table_line.html.erb] - To display the mentor associated with a topic in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_header.html.erb  views/sign_up_sheet/_table_header.html.erb] - To add a header for the mentor column in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic_names.html.erb  views/sign_up_sheet/_topic_names.html.erb] - Potentially adjust topic display.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topic.html.erb  views/sign_up_sheet/_add_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/topic_mentors/app/views/sign_up_sheet/add_mentor_to_topic.html.erb views/sign_up_sheet/add_mentor_to_topic.html.erb] - Used to assign a mentor to an existing topic&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic.html.erb  views/sign_up_sheet/_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/import_file/_sign_up_topic.html.erb  app/views/import_file/_sign_up_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/new.html.erb  app/views/sign_up_sheet/new.html.erb]&lt;br /&gt;
&lt;br /&gt;
Helpers:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/helpers/import_topics_helper.rb  import_topics_helper.rb]&lt;br /&gt;
&lt;br /&gt;
Migrations:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings  db/migrate/20250301220548_create_meetings]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings.rb  db/migrate/20250301220548_create_meetings.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb  db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/schema.rb  db/schema.rb]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
The overarching purpose of these tests is to verify that the system correctly handles mentor assignments in projects where mentors are associated with topics. Tests should cover both success and failure scenarios for each feature. Key areas include:&lt;br /&gt;
&lt;br /&gt;
* '''Storing Mentors with Topics:''' &lt;br /&gt;
** Ensuring that topics can hold information about their assigned mentors (e.g., via the new attribute in `SignUpTopic`).&lt;br /&gt;
* '''Assigning Mentors During Topic Sign-up:''' &lt;br /&gt;
** Confirming that when a team chooses a topic, the topic's pre-assigned mentor is automatically added to the team with the correct role/permissions.&lt;br /&gt;
* '''Compatibility with Existing Assignment Logic:''' &lt;br /&gt;
** Ensuring that the existing logic for assigning mentors (e.g., when teams reach half strength in non-topic-based assignments) remains unaffected or correctly integrated if applicable.&lt;br /&gt;
* '''Displaying Mentor Information:''' &lt;br /&gt;
** Validating that team views and topic views accurately show mentor information for mentored assignments and topics, and correctly hide or omit it otherwise.&lt;br /&gt;
* '''Importing Topics with Mentors:'''&lt;br /&gt;
** Checking that topics imported from files correctly capture and store mentor assignments when the mentor column is present.&lt;br /&gt;
** Verifying that topics are imported correctly when the mentor column is absent.&lt;br /&gt;
** Confirming the &amp;quot;Include mentors&amp;quot; checkbox correctly updates the UI (e.g., topic table columns) and influences the import behavior.&lt;br /&gt;
* '''Manual Mentor Assignment:''' Testing the ability to manually add or edit a mentor for a topic via the UI.&lt;br /&gt;
&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
Once tests are created and modifications are implemented, we will run the test suite and provide evidence (e.g., screenshots of coverage reports) demonstrating the extent to which the new and modified code paths are covered by automated tests. The goal is comprehensive coverage for the implemented features.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
* Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
* E2504 Wiki (Previous Project): https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1jjbqggRDiOHrxdsMlliY62JnP34bGTNHVWAZNz89kT8/edit?tab=t.0#heading=h.yeys674t35p3&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
- Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
- Jacob Winters&lt;br /&gt;
- Alex Wakefield&lt;br /&gt;
- John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProjectTablesView.png&amp;diff=164426</id>
		<title>File:FinalProjectTablesView.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProjectTablesView.png&amp;diff=164426"/>
		<updated>2025-04-22T00:21:47Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: Shows the final table view of the topics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Shows the final table view of the topics&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Mentor_checkbox_mockup.png&amp;diff=164425</id>
		<title>File:Mentor checkbox mockup.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Mentor_checkbox_mockup.png&amp;diff=164425"/>
		<updated>2025-04-22T00:20:54Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: Jlbucha4 reverted File:Mentor checkbox mockup.png to an old version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Mentor_checkbox_mockup.png&amp;diff=164424</id>
		<title>File:Mentor checkbox mockup.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Mentor_checkbox_mockup.png&amp;diff=164424"/>
		<updated>2025-04-22T00:19:35Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: Jlbucha4 uploaded a new version of File:Mentor checkbox mockup.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164423</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164423"/>
		<updated>2025-04-22T00:17:59Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Automatic Assignment of Mentors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, implementation was added for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned. To expand the functionality of the mentor management system, we want to incorporate mentors into assignment topics.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The main objective of this project is to extend the mentor management system by having it collaborate with the assignment topics system. When an assignment with topics is created, topics are imported from a spreadsheet into the assignment table. This project will focus on including pre-selected mentors (entered in the spreadsheet) in the assignment table and having the mentor assigned to the team automatically upon topic selection. On top of this, mentors should be able to be unassigned from topics on command and automatically when there are no more member as part of a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
====Checkbox to alter the Assignment Creation or Import====&lt;br /&gt;
Implementation will include adding a checkbox option when importing topics to include mentors. This checkbox will toggle whether or not the mentors will be included in the assignment/import. This checkbox will also reload the table to include the additional column required for the mentor's name. Once saved, these mentor names will be stored as an additional attribute in the sign_up_topic.&lt;br /&gt;
&lt;br /&gt;
[[File:mentor_checkbox_mockup.png|600px|thumb|Right|Mockup illustrating the proposed location for the mentor checkbox within the user interface form.]]&lt;br /&gt;
&lt;br /&gt;
It's important to note that this will not affect how teams and mentors are managed for projects where the entire class has the same project. That will still be handled by the mentors being assigned to a team once that team has reached half capacity. This feature will allow mentors to be associated with project topics in projects where each team has a different topic (e.g., ECE 517 Expertiza-based projects).&lt;br /&gt;
&lt;br /&gt;
====Automatic Assignment of Mentors====&lt;br /&gt;
After a team has been created and is allowed to choose a topic from the assignment, the mentor who was assigned to the topic will automatically be assigned to the team. This will be done by adding the mentor to the team (likely via the `TeamsUser` association) and ensuring their `can_mentor` participant value is true. Given the logic of the previous mentor management implementations, this ensures the participant on the team is recognized as a mentor.&lt;br /&gt;
&lt;br /&gt;
The outcome should be that the assigned mentor appears associated with the team in relevant views.&lt;br /&gt;
[[File:Mentor_shows_up_within_teams.png|600px|thumb|Right|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
This automatic assignment upon topic selection complements the existing logic where mentors are assigned when a team reaches half strength, as seen in the `MentorManagement` model: [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/models/mentor_management.rb#L43 MentorManagement#assign_mentor].&lt;br /&gt;
&lt;br /&gt;
Mentors may also be manually assigned after a topic is created as per the addition button for topics that need a mentor &lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectAddMentorManual.png|175px|Screenshot demonstrating how to add a mentor to a topic manually.]]&lt;br /&gt;
&lt;br /&gt;
====Removal of Mentors====&lt;br /&gt;
Mentors that are assigned to teams are able to be removed manually or automatically when a team drops the topic and the mentor is the only one left on the team. &lt;br /&gt;
&lt;br /&gt;
The manual removal of mentors can be achieved by clicking the 'X' next to their name as they appear in the 'Mentor' column as part of the Topics tab within certain assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectRemoveMentor.png|175px|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
====Importing Topics====&lt;br /&gt;
In order for assignments/topics to have mentors assigned to them before teams are formed, there needs to be a minor change to the way that topics are imported into Expertiza (accessible from the Topics tab of an assignment, e.g., `http://152.7.178.121:8080/assignments/1028/edit`).&lt;br /&gt;
&lt;br /&gt;
There should be an optional field in the import file (spreadsheet) that, when included, associates a mentor with a topic. This requires modifying the import logic to handle this optional mentor column.&lt;br /&gt;
[[File:Import_menu_changes.png|600px|thumb|Right|Screenshot highlighting modifications to the import menu, likely including the checkbox or instructions for the mentor column.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Imported_column_change.png|600px|thumb|Right|View showing the changes in the topic table data column after an import, displaying the imported mentor information associated with topics.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Successfully_imported_topics_with_mentors.png|600px|thumb|Right|Confirmation view indicating the successful import of topics along with their assigned mentors.]]&lt;br /&gt;
&lt;br /&gt;
The system should still support importing topics without mentors. Furthermore, there should be a way to manually add or edit the assigned mentor for a topic after it has been created or imported, whether it initially had a mentor or not.&lt;br /&gt;
[[File:Adding_individual_topic_with_mentor.png|600px|thumb|Right|Interface view demonstrating the process of adding or editing an individual topic and assigning a mentor to it manually.]]&lt;br /&gt;
&lt;br /&gt;
==Database==&lt;br /&gt;
We will likely leverage the existing `teams_users` table structure, potentially using the `duty_id` field or similar mechanisms to signify the mentor role within the context of a team, consistent with how other roles might be managed. The `SignUpTopic` model will need an attribute to store the pre-assigned mentor's identifier before a team signs up.&lt;br /&gt;
&lt;br /&gt;
==Files That May Be Modified==&lt;br /&gt;
The following files are likely candidates for modification during this project:&lt;br /&gt;
&lt;br /&gt;
Models:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/signed_up_team.rb  SignedUpTeam] - Potentially modified to trigger mentor assignment upon topic selection.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_topic.rb  SignUpTopic] - To add an attribute for storing the assigned mentor identifier.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_sheet.rb  SignUpSheet]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/team.rb  Team]&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/import_file_controller.rb  import_file_controller.rb] - To handle the new import format including the optional mentor column and the checkbox logic.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/sign_up_sheet_controller.rb  sign_up_sheet_controller.rb]&lt;br /&gt;
&lt;br /&gt;
Views:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/assignments/edit/_topics.html.erb  views/assignments/edit/_topics.html.erb] - To display the mentor column when editing topics if the feature is enabled.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/views/import_file/start.html.erb  views/import_file/start.html.erb] - To add the &amp;quot;include mentors&amp;quot; checkbox and potentially update instructions.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topics.html.erb  views/sign_up_sheet/_add_topics.html.erb] - To include mentor information when adding/displaying topics.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_line.html.erb  views/sign_up_sheet/_table_line.html.erb] - To display the mentor associated with a topic in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_header.html.erb  views/sign_up_sheet/_table_header.html.erb] - To add a header for the mentor column in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic_names.html.erb  views/sign_up_sheet/_topic_names.html.erb] - Potentially adjust topic display.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topic.html.erb  views/sign_up_sheet/_add_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/topic_mentors/app/views/sign_up_sheet/add_mentor_to_topic.html.erb views/sign_up_sheet/add_mentor_to_topic.html.erb] - Used to assign a mentor to an existing topic&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic.html.erb  views/sign_up_sheet/_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/import_file/_sign_up_topic.html.erb  app/views/import_file/_sign_up_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/new.html.erb  app/views/sign_up_sheet/new.html.erb]&lt;br /&gt;
&lt;br /&gt;
Helpers:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/helpers/import_topics_helper.rb  import_topics_helper.rb]&lt;br /&gt;
&lt;br /&gt;
Migrations:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings  db/migrate/20250301220548_create_meetings]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings.rb  db/migrate/20250301220548_create_meetings.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb  db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/schema.rb  db/schema.rb]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
The overarching purpose of these tests is to verify that the system correctly handles mentor assignments in projects where mentors are associated with topics. Tests should cover both success and failure scenarios for each feature. Key areas include:&lt;br /&gt;
&lt;br /&gt;
* '''Storing Mentors with Topics:''' &lt;br /&gt;
** Ensuring that topics can hold information about their assigned mentors (e.g., via the new attribute in `SignUpTopic`).&lt;br /&gt;
* '''Assigning Mentors During Topic Sign-up:''' &lt;br /&gt;
** Confirming that when a team chooses a topic, the topic's pre-assigned mentor is automatically added to the team with the correct role/permissions.&lt;br /&gt;
* '''Compatibility with Existing Assignment Logic:''' &lt;br /&gt;
** Ensuring that the existing logic for assigning mentors (e.g., when teams reach half strength in non-topic-based assignments) remains unaffected or correctly integrated if applicable.&lt;br /&gt;
* '''Displaying Mentor Information:''' &lt;br /&gt;
** Validating that team views and topic views accurately show mentor information for mentored assignments and topics, and correctly hide or omit it otherwise.&lt;br /&gt;
* '''Importing Topics with Mentors:'''&lt;br /&gt;
** Checking that topics imported from files correctly capture and store mentor assignments when the mentor column is present.&lt;br /&gt;
** Verifying that topics are imported correctly when the mentor column is absent.&lt;br /&gt;
** Confirming the &amp;quot;Include mentors&amp;quot; checkbox correctly updates the UI (e.g., topic table columns) and influences the import behavior.&lt;br /&gt;
* '''Manual Mentor Assignment:''' Testing the ability to manually add or edit a mentor for a topic via the UI.&lt;br /&gt;
&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
Once tests are created and modifications are implemented, we will run the test suite and provide evidence (e.g., screenshots of coverage reports) demonstrating the extent to which the new and modified code paths are covered by automated tests. The goal is comprehensive coverage for the implemented features.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
* Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
* E2504 Wiki (Previous Project): https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1jjbqggRDiOHrxdsMlliY62JnP34bGTNHVWAZNz89kT8/edit?tab=t.0#heading=h.yeys674t35p3&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
- Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
- Jacob Winters&lt;br /&gt;
- Alex Wakefield&lt;br /&gt;
- John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164422</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164422"/>
		<updated>2025-04-22T00:17:52Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Automatic Assignment of Mentors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, implementation was added for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned. To expand the functionality of the mentor management system, we want to incorporate mentors into assignment topics.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The main objective of this project is to extend the mentor management system by having it collaborate with the assignment topics system. When an assignment with topics is created, topics are imported from a spreadsheet into the assignment table. This project will focus on including pre-selected mentors (entered in the spreadsheet) in the assignment table and having the mentor assigned to the team automatically upon topic selection. On top of this, mentors should be able to be unassigned from topics on command and automatically when there are no more member as part of a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
====Checkbox to alter the Assignment Creation or Import====&lt;br /&gt;
Implementation will include adding a checkbox option when importing topics to include mentors. This checkbox will toggle whether or not the mentors will be included in the assignment/import. This checkbox will also reload the table to include the additional column required for the mentor's name. Once saved, these mentor names will be stored as an additional attribute in the sign_up_topic.&lt;br /&gt;
&lt;br /&gt;
[[File:mentor_checkbox_mockup.png|600px|thumb|Right|Mockup illustrating the proposed location for the mentor checkbox within the user interface form.]]&lt;br /&gt;
&lt;br /&gt;
It's important to note that this will not affect how teams and mentors are managed for projects where the entire class has the same project. That will still be handled by the mentors being assigned to a team once that team has reached half capacity. This feature will allow mentors to be associated with project topics in projects where each team has a different topic (e.g., ECE 517 Expertiza-based projects).&lt;br /&gt;
&lt;br /&gt;
====Automatic Assignment of Mentors====&lt;br /&gt;
After a team has been created and is allowed to choose a topic from the assignment, the mentor who was assigned to the topic will automatically be assigned to the team. This will be done by adding the mentor to the team (likely via the `TeamsUser` association) and ensuring their `can_mentor` participant value is true. Given the logic of the previous mentor management implementations, this ensures the participant on the team is recognized as a mentor.&lt;br /&gt;
&lt;br /&gt;
The outcome should be that the assigned mentor appears associated with the team in relevant views.&lt;br /&gt;
[[File:Mentor_shows_up_within_teams.png|600px|thumb|Right|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
This automatic assignment upon topic selection complements the existing logic where mentors are assigned when a team reaches half strength, as seen in the `MentorManagement` model: [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/models/mentor_management.rb#L43 MentorManagement#assign_mentor].&lt;br /&gt;
&lt;br /&gt;
Mentors may also be manually assigned after a topic is created as per the addition button for topics that need a mentor &lt;br /&gt;
[[File:FinalProjectAddMentorManual.png|175px|Screenshot demonstrating how to add a mentor to a topic manually.]]&lt;br /&gt;
&lt;br /&gt;
====Removal of Mentors====&lt;br /&gt;
Mentors that are assigned to teams are able to be removed manually or automatically when a team drops the topic and the mentor is the only one left on the team. &lt;br /&gt;
&lt;br /&gt;
The manual removal of mentors can be achieved by clicking the 'X' next to their name as they appear in the 'Mentor' column as part of the Topics tab within certain assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectRemoveMentor.png|175px|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
====Importing Topics====&lt;br /&gt;
In order for assignments/topics to have mentors assigned to them before teams are formed, there needs to be a minor change to the way that topics are imported into Expertiza (accessible from the Topics tab of an assignment, e.g., `http://152.7.178.121:8080/assignments/1028/edit`).&lt;br /&gt;
&lt;br /&gt;
There should be an optional field in the import file (spreadsheet) that, when included, associates a mentor with a topic. This requires modifying the import logic to handle this optional mentor column.&lt;br /&gt;
[[File:Import_menu_changes.png|600px|thumb|Right|Screenshot highlighting modifications to the import menu, likely including the checkbox or instructions for the mentor column.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Imported_column_change.png|600px|thumb|Right|View showing the changes in the topic table data column after an import, displaying the imported mentor information associated with topics.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Successfully_imported_topics_with_mentors.png|600px|thumb|Right|Confirmation view indicating the successful import of topics along with their assigned mentors.]]&lt;br /&gt;
&lt;br /&gt;
The system should still support importing topics without mentors. Furthermore, there should be a way to manually add or edit the assigned mentor for a topic after it has been created or imported, whether it initially had a mentor or not.&lt;br /&gt;
[[File:Adding_individual_topic_with_mentor.png|600px|thumb|Right|Interface view demonstrating the process of adding or editing an individual topic and assigning a mentor to it manually.]]&lt;br /&gt;
&lt;br /&gt;
==Database==&lt;br /&gt;
We will likely leverage the existing `teams_users` table structure, potentially using the `duty_id` field or similar mechanisms to signify the mentor role within the context of a team, consistent with how other roles might be managed. The `SignUpTopic` model will need an attribute to store the pre-assigned mentor's identifier before a team signs up.&lt;br /&gt;
&lt;br /&gt;
==Files That May Be Modified==&lt;br /&gt;
The following files are likely candidates for modification during this project:&lt;br /&gt;
&lt;br /&gt;
Models:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/signed_up_team.rb  SignedUpTeam] - Potentially modified to trigger mentor assignment upon topic selection.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_topic.rb  SignUpTopic] - To add an attribute for storing the assigned mentor identifier.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_sheet.rb  SignUpSheet]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/team.rb  Team]&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/import_file_controller.rb  import_file_controller.rb] - To handle the new import format including the optional mentor column and the checkbox logic.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/sign_up_sheet_controller.rb  sign_up_sheet_controller.rb]&lt;br /&gt;
&lt;br /&gt;
Views:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/assignments/edit/_topics.html.erb  views/assignments/edit/_topics.html.erb] - To display the mentor column when editing topics if the feature is enabled.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/views/import_file/start.html.erb  views/import_file/start.html.erb] - To add the &amp;quot;include mentors&amp;quot; checkbox and potentially update instructions.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topics.html.erb  views/sign_up_sheet/_add_topics.html.erb] - To include mentor information when adding/displaying topics.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_line.html.erb  views/sign_up_sheet/_table_line.html.erb] - To display the mentor associated with a topic in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_header.html.erb  views/sign_up_sheet/_table_header.html.erb] - To add a header for the mentor column in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic_names.html.erb  views/sign_up_sheet/_topic_names.html.erb] - Potentially adjust topic display.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topic.html.erb  views/sign_up_sheet/_add_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/topic_mentors/app/views/sign_up_sheet/add_mentor_to_topic.html.erb views/sign_up_sheet/add_mentor_to_topic.html.erb] - Used to assign a mentor to an existing topic&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic.html.erb  views/sign_up_sheet/_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/import_file/_sign_up_topic.html.erb  app/views/import_file/_sign_up_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/new.html.erb  app/views/sign_up_sheet/new.html.erb]&lt;br /&gt;
&lt;br /&gt;
Helpers:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/helpers/import_topics_helper.rb  import_topics_helper.rb]&lt;br /&gt;
&lt;br /&gt;
Migrations:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings  db/migrate/20250301220548_create_meetings]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings.rb  db/migrate/20250301220548_create_meetings.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb  db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/schema.rb  db/schema.rb]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
The overarching purpose of these tests is to verify that the system correctly handles mentor assignments in projects where mentors are associated with topics. Tests should cover both success and failure scenarios for each feature. Key areas include:&lt;br /&gt;
&lt;br /&gt;
* '''Storing Mentors with Topics:''' &lt;br /&gt;
** Ensuring that topics can hold information about their assigned mentors (e.g., via the new attribute in `SignUpTopic`).&lt;br /&gt;
* '''Assigning Mentors During Topic Sign-up:''' &lt;br /&gt;
** Confirming that when a team chooses a topic, the topic's pre-assigned mentor is automatically added to the team with the correct role/permissions.&lt;br /&gt;
* '''Compatibility with Existing Assignment Logic:''' &lt;br /&gt;
** Ensuring that the existing logic for assigning mentors (e.g., when teams reach half strength in non-topic-based assignments) remains unaffected or correctly integrated if applicable.&lt;br /&gt;
* '''Displaying Mentor Information:''' &lt;br /&gt;
** Validating that team views and topic views accurately show mentor information for mentored assignments and topics, and correctly hide or omit it otherwise.&lt;br /&gt;
* '''Importing Topics with Mentors:'''&lt;br /&gt;
** Checking that topics imported from files correctly capture and store mentor assignments when the mentor column is present.&lt;br /&gt;
** Verifying that topics are imported correctly when the mentor column is absent.&lt;br /&gt;
** Confirming the &amp;quot;Include mentors&amp;quot; checkbox correctly updates the UI (e.g., topic table columns) and influences the import behavior.&lt;br /&gt;
* '''Manual Mentor Assignment:''' Testing the ability to manually add or edit a mentor for a topic via the UI.&lt;br /&gt;
&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
Once tests are created and modifications are implemented, we will run the test suite and provide evidence (e.g., screenshots of coverage reports) demonstrating the extent to which the new and modified code paths are covered by automated tests. The goal is comprehensive coverage for the implemented features.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
* Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
* E2504 Wiki (Previous Project): https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1jjbqggRDiOHrxdsMlliY62JnP34bGTNHVWAZNz89kT8/edit?tab=t.0#heading=h.yeys674t35p3&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
- Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
- Jacob Winters&lt;br /&gt;
- Alex Wakefield&lt;br /&gt;
- John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProjectAddMentorManual.png&amp;diff=164421</id>
		<title>File:FinalProjectAddMentorManual.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProjectAddMentorManual.png&amp;diff=164421"/>
		<updated>2025-04-22T00:17:09Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: Showcase the icon used to add a mentor manually to a topic&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Showcase the icon used to add a mentor manually to a topic&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164418</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164418"/>
		<updated>2025-04-22T00:09:02Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Files That May Be Modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, implementation was added for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned. To expand the functionality of the mentor management system, we want to incorporate mentors into assignment topics.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The main objective of this project is to extend the mentor management system by having it collaborate with the assignment topics system. When an assignment with topics is created, topics are imported from a spreadsheet into the assignment table. This project will focus on including pre-selected mentors (entered in the spreadsheet) in the assignment table and having the mentor assigned to the team automatically upon topic selection. On top of this, mentors should be able to be unassigned from topics on command and automatically when there are no more member as part of a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
====Checkbox to alter the Assignment Creation or Import====&lt;br /&gt;
Implementation will include adding a checkbox option when importing topics to include mentors. This checkbox will toggle whether or not the mentors will be included in the assignment/import. This checkbox will also reload the table to include the additional column required for the mentor's name. Once saved, these mentor names will be stored as an additional attribute in the sign_up_topic.&lt;br /&gt;
&lt;br /&gt;
[[File:mentor_checkbox_mockup.png|600px|thumb|Right|Mockup illustrating the proposed location for the mentor checkbox within the user interface form.]]&lt;br /&gt;
&lt;br /&gt;
It's important to note that this will not affect how teams and mentors are managed for projects where the entire class has the same project. That will still be handled by the mentors being assigned to a team once that team has reached half capacity. This feature will allow mentors to be associated with project topics in projects where each team has a different topic (e.g., ECE 517 Expertiza-based projects).&lt;br /&gt;
&lt;br /&gt;
====Automatic Assignment of Mentors====&lt;br /&gt;
After a team has been created and is allowed to choose a topic from the assignment, the mentor who was assigned to the topic will automatically be assigned to the team. This will be done by adding the mentor to the team (likely via the `TeamsUser` association) and ensuring their `can_mentor` participant value is true. Given the logic of the previous mentor management implementations, this ensures the participant on the team is recognized as a mentor.&lt;br /&gt;
&lt;br /&gt;
The outcome should be that the assigned mentor appears associated with the team in relevant views.&lt;br /&gt;
[[File:Mentor_shows_up_within_teams.png|600px|thumb|Right|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
This automatic assignment upon topic selection complements the existing logic where mentors are assigned when a team reaches half strength, as seen in the `MentorManagement` model: [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/models/mentor_management.rb#L43 MentorManagement#assign_mentor].&lt;br /&gt;
&lt;br /&gt;
====Removal of Mentors====&lt;br /&gt;
Mentors that are assigned to teams are able to be removed manually or automatically when a team drops the topic and the mentor is the only one left on the team. &lt;br /&gt;
&lt;br /&gt;
The manual removal of mentors can be achieved by clicking the 'X' next to their name as they appear in the 'Mentor' column as part of the Topics tab within certain assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectRemoveMentor.png|175px|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
====Importing Topics====&lt;br /&gt;
In order for assignments/topics to have mentors assigned to them before teams are formed, there needs to be a minor change to the way that topics are imported into Expertiza (accessible from the Topics tab of an assignment, e.g., `http://152.7.178.121:8080/assignments/1028/edit`).&lt;br /&gt;
&lt;br /&gt;
There should be an optional field in the import file (spreadsheet) that, when included, associates a mentor with a topic. This requires modifying the import logic to handle this optional mentor column.&lt;br /&gt;
[[File:Import_menu_changes.png|600px|thumb|Right|Screenshot highlighting modifications to the import menu, likely including the checkbox or instructions for the mentor column.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Imported_column_change.png|600px|thumb|Right|View showing the changes in the topic table data column after an import, displaying the imported mentor information associated with topics.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Successfully_imported_topics_with_mentors.png|600px|thumb|Right|Confirmation view indicating the successful import of topics along with their assigned mentors.]]&lt;br /&gt;
&lt;br /&gt;
The system should still support importing topics without mentors. Furthermore, there should be a way to manually add or edit the assigned mentor for a topic after it has been created or imported, whether it initially had a mentor or not.&lt;br /&gt;
[[File:Adding_individual_topic_with_mentor.png|600px|thumb|Right|Interface view demonstrating the process of adding or editing an individual topic and assigning a mentor to it manually.]]&lt;br /&gt;
&lt;br /&gt;
==Database==&lt;br /&gt;
We will likely leverage the existing `teams_users` table structure, potentially using the `duty_id` field or similar mechanisms to signify the mentor role within the context of a team, consistent with how other roles might be managed. The `SignUpTopic` model will need an attribute to store the pre-assigned mentor's identifier before a team signs up.&lt;br /&gt;
&lt;br /&gt;
==Files That May Be Modified==&lt;br /&gt;
The following files are likely candidates for modification during this project:&lt;br /&gt;
&lt;br /&gt;
Models:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/signed_up_team.rb  SignedUpTeam] - Potentially modified to trigger mentor assignment upon topic selection.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_topic.rb  SignUpTopic] - To add an attribute for storing the assigned mentor identifier.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_sheet.rb  SignUpSheet]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/team.rb  Team]&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/import_file_controller.rb  import_file_controller.rb] - To handle the new import format including the optional mentor column and the checkbox logic.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/sign_up_sheet_controller.rb  sign_up_sheet_controller.rb]&lt;br /&gt;
&lt;br /&gt;
Views:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/assignments/edit/_topics.html.erb  views/assignments/edit/_topics.html.erb] - To display the mentor column when editing topics if the feature is enabled.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/views/import_file/start.html.erb  views/import_file/start.html.erb] - To add the &amp;quot;include mentors&amp;quot; checkbox and potentially update instructions.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topics.html.erb  views/sign_up_sheet/_add_topics.html.erb] - To include mentor information when adding/displaying topics.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_line.html.erb  views/sign_up_sheet/_table_line.html.erb] - To display the mentor associated with a topic in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_header.html.erb  views/sign_up_sheet/_table_header.html.erb] - To add a header for the mentor column in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic_names.html.erb  views/sign_up_sheet/_topic_names.html.erb] - Potentially adjust topic display.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topic.html.erb  views/sign_up_sheet/_add_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/topic_mentors/app/views/sign_up_sheet/add_mentor_to_topic.html.erb views/sign_up_sheet/add_mentor_to_topic.html.erb] - Used to assign a mentor to an existing topic&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic.html.erb  views/sign_up_sheet/_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/import_file/_sign_up_topic.html.erb  app/views/import_file/_sign_up_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/new.html.erb  app/views/sign_up_sheet/new.html.erb]&lt;br /&gt;
&lt;br /&gt;
Helpers:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/helpers/import_topics_helper.rb  import_topics_helper.rb]&lt;br /&gt;
&lt;br /&gt;
Migrations:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings  db/migrate/20250301220548_create_meetings]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings.rb  db/migrate/20250301220548_create_meetings.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb  db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/schema.rb  db/schema.rb]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
The overarching purpose of these tests is to verify that the system correctly handles mentor assignments in projects where mentors are associated with topics. Tests should cover both success and failure scenarios for each feature. Key areas include:&lt;br /&gt;
&lt;br /&gt;
* '''Storing Mentors with Topics:''' &lt;br /&gt;
** Ensuring that topics can hold information about their assigned mentors (e.g., via the new attribute in `SignUpTopic`).&lt;br /&gt;
* '''Assigning Mentors During Topic Sign-up:''' &lt;br /&gt;
** Confirming that when a team chooses a topic, the topic's pre-assigned mentor is automatically added to the team with the correct role/permissions.&lt;br /&gt;
* '''Compatibility with Existing Assignment Logic:''' &lt;br /&gt;
** Ensuring that the existing logic for assigning mentors (e.g., when teams reach half strength in non-topic-based assignments) remains unaffected or correctly integrated if applicable.&lt;br /&gt;
* '''Displaying Mentor Information:''' &lt;br /&gt;
** Validating that team views and topic views accurately show mentor information for mentored assignments and topics, and correctly hide or omit it otherwise.&lt;br /&gt;
* '''Importing Topics with Mentors:'''&lt;br /&gt;
** Checking that topics imported from files correctly capture and store mentor assignments when the mentor column is present.&lt;br /&gt;
** Verifying that topics are imported correctly when the mentor column is absent.&lt;br /&gt;
** Confirming the &amp;quot;Include mentors&amp;quot; checkbox correctly updates the UI (e.g., topic table columns) and influences the import behavior.&lt;br /&gt;
* '''Manual Mentor Assignment:''' Testing the ability to manually add or edit a mentor for a topic via the UI.&lt;br /&gt;
&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
Once tests are created and modifications are implemented, we will run the test suite and provide evidence (e.g., screenshots of coverage reports) demonstrating the extent to which the new and modified code paths are covered by automated tests. The goal is comprehensive coverage for the implemented features.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
* Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
* E2504 Wiki (Previous Project): https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1jjbqggRDiOHrxdsMlliY62JnP34bGTNHVWAZNz89kT8/edit?tab=t.0#heading=h.yeys674t35p3&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
- Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
- Jacob Winters&lt;br /&gt;
- Alex Wakefield&lt;br /&gt;
- John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164417</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164417"/>
		<updated>2025-04-22T00:08:44Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Files That May Be Modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, implementation was added for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned. To expand the functionality of the mentor management system, we want to incorporate mentors into assignment topics.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The main objective of this project is to extend the mentor management system by having it collaborate with the assignment topics system. When an assignment with topics is created, topics are imported from a spreadsheet into the assignment table. This project will focus on including pre-selected mentors (entered in the spreadsheet) in the assignment table and having the mentor assigned to the team automatically upon topic selection. On top of this, mentors should be able to be unassigned from topics on command and automatically when there are no more member as part of a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
====Checkbox to alter the Assignment Creation or Import====&lt;br /&gt;
Implementation will include adding a checkbox option when importing topics to include mentors. This checkbox will toggle whether or not the mentors will be included in the assignment/import. This checkbox will also reload the table to include the additional column required for the mentor's name. Once saved, these mentor names will be stored as an additional attribute in the sign_up_topic.&lt;br /&gt;
&lt;br /&gt;
[[File:mentor_checkbox_mockup.png|600px|thumb|Right|Mockup illustrating the proposed location for the mentor checkbox within the user interface form.]]&lt;br /&gt;
&lt;br /&gt;
It's important to note that this will not affect how teams and mentors are managed for projects where the entire class has the same project. That will still be handled by the mentors being assigned to a team once that team has reached half capacity. This feature will allow mentors to be associated with project topics in projects where each team has a different topic (e.g., ECE 517 Expertiza-based projects).&lt;br /&gt;
&lt;br /&gt;
====Automatic Assignment of Mentors====&lt;br /&gt;
After a team has been created and is allowed to choose a topic from the assignment, the mentor who was assigned to the topic will automatically be assigned to the team. This will be done by adding the mentor to the team (likely via the `TeamsUser` association) and ensuring their `can_mentor` participant value is true. Given the logic of the previous mentor management implementations, this ensures the participant on the team is recognized as a mentor.&lt;br /&gt;
&lt;br /&gt;
The outcome should be that the assigned mentor appears associated with the team in relevant views.&lt;br /&gt;
[[File:Mentor_shows_up_within_teams.png|600px|thumb|Right|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
This automatic assignment upon topic selection complements the existing logic where mentors are assigned when a team reaches half strength, as seen in the `MentorManagement` model: [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/models/mentor_management.rb#L43 MentorManagement#assign_mentor].&lt;br /&gt;
&lt;br /&gt;
====Removal of Mentors====&lt;br /&gt;
Mentors that are assigned to teams are able to be removed manually or automatically when a team drops the topic and the mentor is the only one left on the team. &lt;br /&gt;
&lt;br /&gt;
The manual removal of mentors can be achieved by clicking the 'X' next to their name as they appear in the 'Mentor' column as part of the Topics tab within certain assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectRemoveMentor.png|175px|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
====Importing Topics====&lt;br /&gt;
In order for assignments/topics to have mentors assigned to them before teams are formed, there needs to be a minor change to the way that topics are imported into Expertiza (accessible from the Topics tab of an assignment, e.g., `http://152.7.178.121:8080/assignments/1028/edit`).&lt;br /&gt;
&lt;br /&gt;
There should be an optional field in the import file (spreadsheet) that, when included, associates a mentor with a topic. This requires modifying the import logic to handle this optional mentor column.&lt;br /&gt;
[[File:Import_menu_changes.png|600px|thumb|Right|Screenshot highlighting modifications to the import menu, likely including the checkbox or instructions for the mentor column.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Imported_column_change.png|600px|thumb|Right|View showing the changes in the topic table data column after an import, displaying the imported mentor information associated with topics.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Successfully_imported_topics_with_mentors.png|600px|thumb|Right|Confirmation view indicating the successful import of topics along with their assigned mentors.]]&lt;br /&gt;
&lt;br /&gt;
The system should still support importing topics without mentors. Furthermore, there should be a way to manually add or edit the assigned mentor for a topic after it has been created or imported, whether it initially had a mentor or not.&lt;br /&gt;
[[File:Adding_individual_topic_with_mentor.png|600px|thumb|Right|Interface view demonstrating the process of adding or editing an individual topic and assigning a mentor to it manually.]]&lt;br /&gt;
&lt;br /&gt;
==Database==&lt;br /&gt;
We will likely leverage the existing `teams_users` table structure, potentially using the `duty_id` field or similar mechanisms to signify the mentor role within the context of a team, consistent with how other roles might be managed. The `SignUpTopic` model will need an attribute to store the pre-assigned mentor's identifier before a team signs up.&lt;br /&gt;
&lt;br /&gt;
==Files That May Be Modified==&lt;br /&gt;
The following files are likely candidates for modification during this project:&lt;br /&gt;
&lt;br /&gt;
Models:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/signed_up_team.rb  SignedUpTeam] - Potentially modified to trigger mentor assignment upon topic selection.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_topic.rb  SignUpTopic] - To add an attribute for storing the assigned mentor identifier.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_sheet.rb  SignUpSheet]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/team.rb  Team]&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/import_file_controller.rb  import_file_controller.rb] - To handle the new import format including the optional mentor column and the checkbox logic.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/sign_up_sheet_controller.rb  sign_up_sheet_controller.rb]&lt;br /&gt;
&lt;br /&gt;
Views:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/assignments/edit/_topics.html.erb  views/assignments/edit/_topics.html.erb] - To display the mentor column when editing topics if the feature is enabled.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/views/import_file/start.html.erb  views/import_file/start.html.erb] - To add the &amp;quot;include mentors&amp;quot; checkbox and potentially update instructions.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topics.html.erb  views/sign_up_sheet/_add_topics.html.erb] - To include mentor information when adding/displaying topics.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_line.html.erb  views/sign_up_sheet/_table_line.html.erb] - To display the mentor associated with a topic in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_header.html.erb  views/sign_up_sheet/_table_header.html.erb] - To add a header for the mentor column in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic_names.html.erb  views/sign_up_sheet/_topic_names.html.erb] - Potentially adjust topic display.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topic.html.erb  views/sign_up_sheet/_add_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/topic_mentors/app/views/sign_up_sheet/add_mentor_to_topic.html.erb] views/sign_up_sheet/add_mentor_to_topic.html.erb - Used to assign a mentor to an existing topic&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic.html.erb  views/sign_up_sheet/_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/import_file/_sign_up_topic.html.erb  app/views/import_file/_sign_up_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/new.html.erb  app/views/sign_up_sheet/new.html.erb]&lt;br /&gt;
&lt;br /&gt;
Helpers:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/helpers/import_topics_helper.rb  import_topics_helper.rb]&lt;br /&gt;
&lt;br /&gt;
Migrations:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings  db/migrate/20250301220548_create_meetings]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings.rb  db/migrate/20250301220548_create_meetings.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb  db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/schema.rb  db/schema.rb]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
The overarching purpose of these tests is to verify that the system correctly handles mentor assignments in projects where mentors are associated with topics. Tests should cover both success and failure scenarios for each feature. Key areas include:&lt;br /&gt;
&lt;br /&gt;
* '''Storing Mentors with Topics:''' &lt;br /&gt;
** Ensuring that topics can hold information about their assigned mentors (e.g., via the new attribute in `SignUpTopic`).&lt;br /&gt;
* '''Assigning Mentors During Topic Sign-up:''' &lt;br /&gt;
** Confirming that when a team chooses a topic, the topic's pre-assigned mentor is automatically added to the team with the correct role/permissions.&lt;br /&gt;
* '''Compatibility with Existing Assignment Logic:''' &lt;br /&gt;
** Ensuring that the existing logic for assigning mentors (e.g., when teams reach half strength in non-topic-based assignments) remains unaffected or correctly integrated if applicable.&lt;br /&gt;
* '''Displaying Mentor Information:''' &lt;br /&gt;
** Validating that team views and topic views accurately show mentor information for mentored assignments and topics, and correctly hide or omit it otherwise.&lt;br /&gt;
* '''Importing Topics with Mentors:'''&lt;br /&gt;
** Checking that topics imported from files correctly capture and store mentor assignments when the mentor column is present.&lt;br /&gt;
** Verifying that topics are imported correctly when the mentor column is absent.&lt;br /&gt;
** Confirming the &amp;quot;Include mentors&amp;quot; checkbox correctly updates the UI (e.g., topic table columns) and influences the import behavior.&lt;br /&gt;
* '''Manual Mentor Assignment:''' Testing the ability to manually add or edit a mentor for a topic via the UI.&lt;br /&gt;
&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
Once tests are created and modifications are implemented, we will run the test suite and provide evidence (e.g., screenshots of coverage reports) demonstrating the extent to which the new and modified code paths are covered by automated tests. The goal is comprehensive coverage for the implemented features.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
* Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
* E2504 Wiki (Previous Project): https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1jjbqggRDiOHrxdsMlliY62JnP34bGTNHVWAZNz89kT8/edit?tab=t.0#heading=h.yeys674t35p3&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
- Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
- Jacob Winters&lt;br /&gt;
- Alex Wakefield&lt;br /&gt;
- John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164414</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164414"/>
		<updated>2025-04-22T00:05:18Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Removal of Mentors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, implementation was added for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned. To expand the functionality of the mentor management system, we want to incorporate mentors into assignment topics.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The main objective of this project is to extend the mentor management system by having it collaborate with the assignment topics system. When an assignment with topics is created, topics are imported from a spreadsheet into the assignment table. This project will focus on including pre-selected mentors (entered in the spreadsheet) in the assignment table and having the mentor assigned to the team automatically upon topic selection. On top of this, mentors should be able to be unassigned from topics on command and automatically when there are no more member as part of a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
====Checkbox to alter the Assignment Creation or Import====&lt;br /&gt;
Implementation will include adding a checkbox option when importing topics to include mentors. This checkbox will toggle whether or not the mentors will be included in the assignment/import. This checkbox will also reload the table to include the additional column required for the mentor's name. Once saved, these mentor names will be stored as an additional attribute in the sign_up_topic.&lt;br /&gt;
&lt;br /&gt;
[[File:mentor_checkbox_mockup.png|600px|thumb|Right|Mockup illustrating the proposed location for the mentor checkbox within the user interface form.]]&lt;br /&gt;
&lt;br /&gt;
It's important to note that this will not affect how teams and mentors are managed for projects where the entire class has the same project. That will still be handled by the mentors being assigned to a team once that team has reached half capacity. This feature will allow mentors to be associated with project topics in projects where each team has a different topic (e.g., ECE 517 Expertiza-based projects).&lt;br /&gt;
&lt;br /&gt;
====Automatic Assignment of Mentors====&lt;br /&gt;
After a team has been created and is allowed to choose a topic from the assignment, the mentor who was assigned to the topic will automatically be assigned to the team. This will be done by adding the mentor to the team (likely via the `TeamsUser` association) and ensuring their `can_mentor` participant value is true. Given the logic of the previous mentor management implementations, this ensures the participant on the team is recognized as a mentor.&lt;br /&gt;
&lt;br /&gt;
The outcome should be that the assigned mentor appears associated with the team in relevant views.&lt;br /&gt;
[[File:Mentor_shows_up_within_teams.png|600px|thumb|Right|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
This automatic assignment upon topic selection complements the existing logic where mentors are assigned when a team reaches half strength, as seen in the `MentorManagement` model: [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/models/mentor_management.rb#L43 MentorManagement#assign_mentor].&lt;br /&gt;
&lt;br /&gt;
====Removal of Mentors====&lt;br /&gt;
Mentors that are assigned to teams are able to be removed manually or automatically when a team drops the topic and the mentor is the only one left on the team. &lt;br /&gt;
&lt;br /&gt;
The manual removal of mentors can be achieved by clicking the 'X' next to their name as they appear in the 'Mentor' column as part of the Topics tab within certain assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectRemoveMentor.png|175px|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
====Importing Topics====&lt;br /&gt;
In order for assignments/topics to have mentors assigned to them before teams are formed, there needs to be a minor change to the way that topics are imported into Expertiza (accessible from the Topics tab of an assignment, e.g., `http://152.7.178.121:8080/assignments/1028/edit`).&lt;br /&gt;
&lt;br /&gt;
There should be an optional field in the import file (spreadsheet) that, when included, associates a mentor with a topic. This requires modifying the import logic to handle this optional mentor column.&lt;br /&gt;
[[File:Import_menu_changes.png|600px|thumb|Right|Screenshot highlighting modifications to the import menu, likely including the checkbox or instructions for the mentor column.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Imported_column_change.png|600px|thumb|Right|View showing the changes in the topic table data column after an import, displaying the imported mentor information associated with topics.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Successfully_imported_topics_with_mentors.png|600px|thumb|Right|Confirmation view indicating the successful import of topics along with their assigned mentors.]]&lt;br /&gt;
&lt;br /&gt;
The system should still support importing topics without mentors. Furthermore, there should be a way to manually add or edit the assigned mentor for a topic after it has been created or imported, whether it initially had a mentor or not.&lt;br /&gt;
[[File:Adding_individual_topic_with_mentor.png|600px|thumb|Right|Interface view demonstrating the process of adding or editing an individual topic and assigning a mentor to it manually.]]&lt;br /&gt;
&lt;br /&gt;
==Database==&lt;br /&gt;
We will likely leverage the existing `teams_users` table structure, potentially using the `duty_id` field or similar mechanisms to signify the mentor role within the context of a team, consistent with how other roles might be managed. The `SignUpTopic` model will need an attribute to store the pre-assigned mentor's identifier before a team signs up.&lt;br /&gt;
&lt;br /&gt;
==Files That May Be Modified==&lt;br /&gt;
The following files are likely candidates for modification during this project:&lt;br /&gt;
&lt;br /&gt;
Models:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/signed_up_team.rb  SignedUpTeam] - Potentially modified to trigger mentor assignment upon topic selection.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_topic.rb  SignUpTopic] - To add an attribute for storing the assigned mentor identifier.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_sheet.rb  SignUpSheet]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/team.rb  Team]&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/import_file_controller.rb  import_file_controller.rb] - To handle the new import format including the optional mentor column and the checkbox logic.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/sign_up_sheet_controller.rb  sign_up_sheet_controller.rb]&lt;br /&gt;
&lt;br /&gt;
Views:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/assignments/edit/_topics.html.erb  views/assignments/edit/_topics.html.erb] - To display the mentor column when editing topics if the feature is enabled.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/views/import_file/start.html.erb  views/import_file/start.html.erb] - To add the &amp;quot;include mentors&amp;quot; checkbox and potentially update instructions.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topics.html.erb  views/sign_up_sheet/_add_topics.html.erb] - To include mentor information when adding/displaying topics.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_line.html.erb  views/sign_up_sheet/_table_line.html.erb] - To display the mentor associated with a topic in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_header.html.erb  views/sign_up_sheet/_table_header.html.erb] - To add a header for the mentor column in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic_names.html.erb  views/sign_up_sheet/_topic_names.html.erb] - Potentially adjust topic display.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topic.html.erb  views/sign_up_sheet/_add_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic.html.erb  views/sign_up_sheet/_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/import_file/_sign_up_topic.html.erb  app/views/import_file/_sign_up_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/new.html.erb  app/views/sign_up_sheet/new.html.erb]&lt;br /&gt;
&lt;br /&gt;
Helpers:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/helpers/import_topics_helper.rb  import_topics_helper.rb]&lt;br /&gt;
&lt;br /&gt;
Migrations:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings  db/migrate/20250301220548_create_meetings]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings.rb  db/migrate/20250301220548_create_meetings.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb  db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/schema.rb  db/schema.rb]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
The overarching purpose of these tests is to verify that the system correctly handles mentor assignments in projects where mentors are associated with topics. Tests should cover both success and failure scenarios for each feature. Key areas include:&lt;br /&gt;
&lt;br /&gt;
* '''Storing Mentors with Topics:''' &lt;br /&gt;
** Ensuring that topics can hold information about their assigned mentors (e.g., via the new attribute in `SignUpTopic`).&lt;br /&gt;
* '''Assigning Mentors During Topic Sign-up:''' &lt;br /&gt;
** Confirming that when a team chooses a topic, the topic's pre-assigned mentor is automatically added to the team with the correct role/permissions.&lt;br /&gt;
* '''Compatibility with Existing Assignment Logic:''' &lt;br /&gt;
** Ensuring that the existing logic for assigning mentors (e.g., when teams reach half strength in non-topic-based assignments) remains unaffected or correctly integrated if applicable.&lt;br /&gt;
* '''Displaying Mentor Information:''' &lt;br /&gt;
** Validating that team views and topic views accurately show mentor information for mentored assignments and topics, and correctly hide or omit it otherwise.&lt;br /&gt;
* '''Importing Topics with Mentors:'''&lt;br /&gt;
** Checking that topics imported from files correctly capture and store mentor assignments when the mentor column is present.&lt;br /&gt;
** Verifying that topics are imported correctly when the mentor column is absent.&lt;br /&gt;
** Confirming the &amp;quot;Include mentors&amp;quot; checkbox correctly updates the UI (e.g., topic table columns) and influences the import behavior.&lt;br /&gt;
* '''Manual Mentor Assignment:''' Testing the ability to manually add or edit a mentor for a topic via the UI.&lt;br /&gt;
&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
Once tests are created and modifications are implemented, we will run the test suite and provide evidence (e.g., screenshots of coverage reports) demonstrating the extent to which the new and modified code paths are covered by automated tests. The goal is comprehensive coverage for the implemented features.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
* Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
* E2504 Wiki (Previous Project): https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1jjbqggRDiOHrxdsMlliY62JnP34bGTNHVWAZNz89kT8/edit?tab=t.0#heading=h.yeys674t35p3&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
- Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
- Jacob Winters&lt;br /&gt;
- Alex Wakefield&lt;br /&gt;
- John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164413</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164413"/>
		<updated>2025-04-22T00:05:13Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Removal of Mentors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, implementation was added for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned. To expand the functionality of the mentor management system, we want to incorporate mentors into assignment topics.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The main objective of this project is to extend the mentor management system by having it collaborate with the assignment topics system. When an assignment with topics is created, topics are imported from a spreadsheet into the assignment table. This project will focus on including pre-selected mentors (entered in the spreadsheet) in the assignment table and having the mentor assigned to the team automatically upon topic selection. On top of this, mentors should be able to be unassigned from topics on command and automatically when there are no more member as part of a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
====Checkbox to alter the Assignment Creation or Import====&lt;br /&gt;
Implementation will include adding a checkbox option when importing topics to include mentors. This checkbox will toggle whether or not the mentors will be included in the assignment/import. This checkbox will also reload the table to include the additional column required for the mentor's name. Once saved, these mentor names will be stored as an additional attribute in the sign_up_topic.&lt;br /&gt;
&lt;br /&gt;
[[File:mentor_checkbox_mockup.png|600px|thumb|Right|Mockup illustrating the proposed location for the mentor checkbox within the user interface form.]]&lt;br /&gt;
&lt;br /&gt;
It's important to note that this will not affect how teams and mentors are managed for projects where the entire class has the same project. That will still be handled by the mentors being assigned to a team once that team has reached half capacity. This feature will allow mentors to be associated with project topics in projects where each team has a different topic (e.g., ECE 517 Expertiza-based projects).&lt;br /&gt;
&lt;br /&gt;
====Automatic Assignment of Mentors====&lt;br /&gt;
After a team has been created and is allowed to choose a topic from the assignment, the mentor who was assigned to the topic will automatically be assigned to the team. This will be done by adding the mentor to the team (likely via the `TeamsUser` association) and ensuring their `can_mentor` participant value is true. Given the logic of the previous mentor management implementations, this ensures the participant on the team is recognized as a mentor.&lt;br /&gt;
&lt;br /&gt;
The outcome should be that the assigned mentor appears associated with the team in relevant views.&lt;br /&gt;
[[File:Mentor_shows_up_within_teams.png|600px|thumb|Right|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
This automatic assignment upon topic selection complements the existing logic where mentors are assigned when a team reaches half strength, as seen in the `MentorManagement` model: [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/models/mentor_management.rb#L43 MentorManagement#assign_mentor].&lt;br /&gt;
&lt;br /&gt;
====Removal of Mentors====&lt;br /&gt;
Mentors that are assigned to teams are able to be removed manually or automatically when a team drops the topic and the mentor is the only one left on the team. &lt;br /&gt;
&lt;br /&gt;
The manual removal of mentors can be achieved by clicking the 'X' next to their name as they appear in the 'Mentor' column as part of the Topics tab within certain assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectRemoveMentor.png|100px|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
====Importing Topics====&lt;br /&gt;
In order for assignments/topics to have mentors assigned to them before teams are formed, there needs to be a minor change to the way that topics are imported into Expertiza (accessible from the Topics tab of an assignment, e.g., `http://152.7.178.121:8080/assignments/1028/edit`).&lt;br /&gt;
&lt;br /&gt;
There should be an optional field in the import file (spreadsheet) that, when included, associates a mentor with a topic. This requires modifying the import logic to handle this optional mentor column.&lt;br /&gt;
[[File:Import_menu_changes.png|600px|thumb|Right|Screenshot highlighting modifications to the import menu, likely including the checkbox or instructions for the mentor column.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Imported_column_change.png|600px|thumb|Right|View showing the changes in the topic table data column after an import, displaying the imported mentor information associated with topics.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Successfully_imported_topics_with_mentors.png|600px|thumb|Right|Confirmation view indicating the successful import of topics along with their assigned mentors.]]&lt;br /&gt;
&lt;br /&gt;
The system should still support importing topics without mentors. Furthermore, there should be a way to manually add or edit the assigned mentor for a topic after it has been created or imported, whether it initially had a mentor or not.&lt;br /&gt;
[[File:Adding_individual_topic_with_mentor.png|600px|thumb|Right|Interface view demonstrating the process of adding or editing an individual topic and assigning a mentor to it manually.]]&lt;br /&gt;
&lt;br /&gt;
==Database==&lt;br /&gt;
We will likely leverage the existing `teams_users` table structure, potentially using the `duty_id` field or similar mechanisms to signify the mentor role within the context of a team, consistent with how other roles might be managed. The `SignUpTopic` model will need an attribute to store the pre-assigned mentor's identifier before a team signs up.&lt;br /&gt;
&lt;br /&gt;
==Files That May Be Modified==&lt;br /&gt;
The following files are likely candidates for modification during this project:&lt;br /&gt;
&lt;br /&gt;
Models:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/signed_up_team.rb  SignedUpTeam] - Potentially modified to trigger mentor assignment upon topic selection.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_topic.rb  SignUpTopic] - To add an attribute for storing the assigned mentor identifier.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_sheet.rb  SignUpSheet]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/team.rb  Team]&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/import_file_controller.rb  import_file_controller.rb] - To handle the new import format including the optional mentor column and the checkbox logic.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/sign_up_sheet_controller.rb  sign_up_sheet_controller.rb]&lt;br /&gt;
&lt;br /&gt;
Views:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/assignments/edit/_topics.html.erb  views/assignments/edit/_topics.html.erb] - To display the mentor column when editing topics if the feature is enabled.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/views/import_file/start.html.erb  views/import_file/start.html.erb] - To add the &amp;quot;include mentors&amp;quot; checkbox and potentially update instructions.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topics.html.erb  views/sign_up_sheet/_add_topics.html.erb] - To include mentor information when adding/displaying topics.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_line.html.erb  views/sign_up_sheet/_table_line.html.erb] - To display the mentor associated with a topic in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_header.html.erb  views/sign_up_sheet/_table_header.html.erb] - To add a header for the mentor column in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic_names.html.erb  views/sign_up_sheet/_topic_names.html.erb] - Potentially adjust topic display.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topic.html.erb  views/sign_up_sheet/_add_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic.html.erb  views/sign_up_sheet/_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/import_file/_sign_up_topic.html.erb  app/views/import_file/_sign_up_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/new.html.erb  app/views/sign_up_sheet/new.html.erb]&lt;br /&gt;
&lt;br /&gt;
Helpers:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/helpers/import_topics_helper.rb  import_topics_helper.rb]&lt;br /&gt;
&lt;br /&gt;
Migrations:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings  db/migrate/20250301220548_create_meetings]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings.rb  db/migrate/20250301220548_create_meetings.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb  db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/schema.rb  db/schema.rb]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
The overarching purpose of these tests is to verify that the system correctly handles mentor assignments in projects where mentors are associated with topics. Tests should cover both success and failure scenarios for each feature. Key areas include:&lt;br /&gt;
&lt;br /&gt;
* '''Storing Mentors with Topics:''' &lt;br /&gt;
** Ensuring that topics can hold information about their assigned mentors (e.g., via the new attribute in `SignUpTopic`).&lt;br /&gt;
* '''Assigning Mentors During Topic Sign-up:''' &lt;br /&gt;
** Confirming that when a team chooses a topic, the topic's pre-assigned mentor is automatically added to the team with the correct role/permissions.&lt;br /&gt;
* '''Compatibility with Existing Assignment Logic:''' &lt;br /&gt;
** Ensuring that the existing logic for assigning mentors (e.g., when teams reach half strength in non-topic-based assignments) remains unaffected or correctly integrated if applicable.&lt;br /&gt;
* '''Displaying Mentor Information:''' &lt;br /&gt;
** Validating that team views and topic views accurately show mentor information for mentored assignments and topics, and correctly hide or omit it otherwise.&lt;br /&gt;
* '''Importing Topics with Mentors:'''&lt;br /&gt;
** Checking that topics imported from files correctly capture and store mentor assignments when the mentor column is present.&lt;br /&gt;
** Verifying that topics are imported correctly when the mentor column is absent.&lt;br /&gt;
** Confirming the &amp;quot;Include mentors&amp;quot; checkbox correctly updates the UI (e.g., topic table columns) and influences the import behavior.&lt;br /&gt;
* '''Manual Mentor Assignment:''' Testing the ability to manually add or edit a mentor for a topic via the UI.&lt;br /&gt;
&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
Once tests are created and modifications are implemented, we will run the test suite and provide evidence (e.g., screenshots of coverage reports) demonstrating the extent to which the new and modified code paths are covered by automated tests. The goal is comprehensive coverage for the implemented features.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
* Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
* E2504 Wiki (Previous Project): https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1jjbqggRDiOHrxdsMlliY62JnP34bGTNHVWAZNz89kT8/edit?tab=t.0#heading=h.yeys674t35p3&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
- Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
- Jacob Winters&lt;br /&gt;
- Alex Wakefield&lt;br /&gt;
- John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164412</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164412"/>
		<updated>2025-04-22T00:05:04Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Removal of Mentors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, implementation was added for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned. To expand the functionality of the mentor management system, we want to incorporate mentors into assignment topics.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The main objective of this project is to extend the mentor management system by having it collaborate with the assignment topics system. When an assignment with topics is created, topics are imported from a spreadsheet into the assignment table. This project will focus on including pre-selected mentors (entered in the spreadsheet) in the assignment table and having the mentor assigned to the team automatically upon topic selection. On top of this, mentors should be able to be unassigned from topics on command and automatically when there are no more member as part of a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
====Checkbox to alter the Assignment Creation or Import====&lt;br /&gt;
Implementation will include adding a checkbox option when importing topics to include mentors. This checkbox will toggle whether or not the mentors will be included in the assignment/import. This checkbox will also reload the table to include the additional column required for the mentor's name. Once saved, these mentor names will be stored as an additional attribute in the sign_up_topic.&lt;br /&gt;
&lt;br /&gt;
[[File:mentor_checkbox_mockup.png|600px|thumb|Right|Mockup illustrating the proposed location for the mentor checkbox within the user interface form.]]&lt;br /&gt;
&lt;br /&gt;
It's important to note that this will not affect how teams and mentors are managed for projects where the entire class has the same project. That will still be handled by the mentors being assigned to a team once that team has reached half capacity. This feature will allow mentors to be associated with project topics in projects where each team has a different topic (e.g., ECE 517 Expertiza-based projects).&lt;br /&gt;
&lt;br /&gt;
====Automatic Assignment of Mentors====&lt;br /&gt;
After a team has been created and is allowed to choose a topic from the assignment, the mentor who was assigned to the topic will automatically be assigned to the team. This will be done by adding the mentor to the team (likely via the `TeamsUser` association) and ensuring their `can_mentor` participant value is true. Given the logic of the previous mentor management implementations, this ensures the participant on the team is recognized as a mentor.&lt;br /&gt;
&lt;br /&gt;
The outcome should be that the assigned mentor appears associated with the team in relevant views.&lt;br /&gt;
[[File:Mentor_shows_up_within_teams.png|600px|thumb|Right|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
This automatic assignment upon topic selection complements the existing logic where mentors are assigned when a team reaches half strength, as seen in the `MentorManagement` model: [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/models/mentor_management.rb#L43 MentorManagement#assign_mentor].&lt;br /&gt;
&lt;br /&gt;
====Removal of Mentors====&lt;br /&gt;
Mentors that are assigned to teams are able to be removed manually or automatically when a team drops the topic and the mentor is the only one left on the team. &lt;br /&gt;
&lt;br /&gt;
The manual removal of mentors can be achieved by clicking the 'X' next to their name as they appear in the 'Mentor' column as part of the Topics tab within certain assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectRemoveMentor.png|200px|Right|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
====Importing Topics====&lt;br /&gt;
In order for assignments/topics to have mentors assigned to them before teams are formed, there needs to be a minor change to the way that topics are imported into Expertiza (accessible from the Topics tab of an assignment, e.g., `http://152.7.178.121:8080/assignments/1028/edit`).&lt;br /&gt;
&lt;br /&gt;
There should be an optional field in the import file (spreadsheet) that, when included, associates a mentor with a topic. This requires modifying the import logic to handle this optional mentor column.&lt;br /&gt;
[[File:Import_menu_changes.png|600px|thumb|Right|Screenshot highlighting modifications to the import menu, likely including the checkbox or instructions for the mentor column.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Imported_column_change.png|600px|thumb|Right|View showing the changes in the topic table data column after an import, displaying the imported mentor information associated with topics.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Successfully_imported_topics_with_mentors.png|600px|thumb|Right|Confirmation view indicating the successful import of topics along with their assigned mentors.]]&lt;br /&gt;
&lt;br /&gt;
The system should still support importing topics without mentors. Furthermore, there should be a way to manually add or edit the assigned mentor for a topic after it has been created or imported, whether it initially had a mentor or not.&lt;br /&gt;
[[File:Adding_individual_topic_with_mentor.png|600px|thumb|Right|Interface view demonstrating the process of adding or editing an individual topic and assigning a mentor to it manually.]]&lt;br /&gt;
&lt;br /&gt;
==Database==&lt;br /&gt;
We will likely leverage the existing `teams_users` table structure, potentially using the `duty_id` field or similar mechanisms to signify the mentor role within the context of a team, consistent with how other roles might be managed. The `SignUpTopic` model will need an attribute to store the pre-assigned mentor's identifier before a team signs up.&lt;br /&gt;
&lt;br /&gt;
==Files That May Be Modified==&lt;br /&gt;
The following files are likely candidates for modification during this project:&lt;br /&gt;
&lt;br /&gt;
Models:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/signed_up_team.rb  SignedUpTeam] - Potentially modified to trigger mentor assignment upon topic selection.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_topic.rb  SignUpTopic] - To add an attribute for storing the assigned mentor identifier.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_sheet.rb  SignUpSheet]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/team.rb  Team]&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/import_file_controller.rb  import_file_controller.rb] - To handle the new import format including the optional mentor column and the checkbox logic.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/sign_up_sheet_controller.rb  sign_up_sheet_controller.rb]&lt;br /&gt;
&lt;br /&gt;
Views:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/assignments/edit/_topics.html.erb  views/assignments/edit/_topics.html.erb] - To display the mentor column when editing topics if the feature is enabled.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/views/import_file/start.html.erb  views/import_file/start.html.erb] - To add the &amp;quot;include mentors&amp;quot; checkbox and potentially update instructions.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topics.html.erb  views/sign_up_sheet/_add_topics.html.erb] - To include mentor information when adding/displaying topics.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_line.html.erb  views/sign_up_sheet/_table_line.html.erb] - To display the mentor associated with a topic in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_header.html.erb  views/sign_up_sheet/_table_header.html.erb] - To add a header for the mentor column in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic_names.html.erb  views/sign_up_sheet/_topic_names.html.erb] - Potentially adjust topic display.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topic.html.erb  views/sign_up_sheet/_add_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic.html.erb  views/sign_up_sheet/_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/import_file/_sign_up_topic.html.erb  app/views/import_file/_sign_up_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/new.html.erb  app/views/sign_up_sheet/new.html.erb]&lt;br /&gt;
&lt;br /&gt;
Helpers:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/helpers/import_topics_helper.rb  import_topics_helper.rb]&lt;br /&gt;
&lt;br /&gt;
Migrations:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings  db/migrate/20250301220548_create_meetings]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings.rb  db/migrate/20250301220548_create_meetings.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb  db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/schema.rb  db/schema.rb]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
The overarching purpose of these tests is to verify that the system correctly handles mentor assignments in projects where mentors are associated with topics. Tests should cover both success and failure scenarios for each feature. Key areas include:&lt;br /&gt;
&lt;br /&gt;
* '''Storing Mentors with Topics:''' &lt;br /&gt;
** Ensuring that topics can hold information about their assigned mentors (e.g., via the new attribute in `SignUpTopic`).&lt;br /&gt;
* '''Assigning Mentors During Topic Sign-up:''' &lt;br /&gt;
** Confirming that when a team chooses a topic, the topic's pre-assigned mentor is automatically added to the team with the correct role/permissions.&lt;br /&gt;
* '''Compatibility with Existing Assignment Logic:''' &lt;br /&gt;
** Ensuring that the existing logic for assigning mentors (e.g., when teams reach half strength in non-topic-based assignments) remains unaffected or correctly integrated if applicable.&lt;br /&gt;
* '''Displaying Mentor Information:''' &lt;br /&gt;
** Validating that team views and topic views accurately show mentor information for mentored assignments and topics, and correctly hide or omit it otherwise.&lt;br /&gt;
* '''Importing Topics with Mentors:'''&lt;br /&gt;
** Checking that topics imported from files correctly capture and store mentor assignments when the mentor column is present.&lt;br /&gt;
** Verifying that topics are imported correctly when the mentor column is absent.&lt;br /&gt;
** Confirming the &amp;quot;Include mentors&amp;quot; checkbox correctly updates the UI (e.g., topic table columns) and influences the import behavior.&lt;br /&gt;
* '''Manual Mentor Assignment:''' Testing the ability to manually add or edit a mentor for a topic via the UI.&lt;br /&gt;
&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
Once tests are created and modifications are implemented, we will run the test suite and provide evidence (e.g., screenshots of coverage reports) demonstrating the extent to which the new and modified code paths are covered by automated tests. The goal is comprehensive coverage for the implemented features.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
* Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
* E2504 Wiki (Previous Project): https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1jjbqggRDiOHrxdsMlliY62JnP34bGTNHVWAZNz89kT8/edit?tab=t.0#heading=h.yeys674t35p3&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
- Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
- Jacob Winters&lt;br /&gt;
- Alex Wakefield&lt;br /&gt;
- John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164411</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164411"/>
		<updated>2025-04-22T00:04:53Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Removal of Mentors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, implementation was added for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned. To expand the functionality of the mentor management system, we want to incorporate mentors into assignment topics.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The main objective of this project is to extend the mentor management system by having it collaborate with the assignment topics system. When an assignment with topics is created, topics are imported from a spreadsheet into the assignment table. This project will focus on including pre-selected mentors (entered in the spreadsheet) in the assignment table and having the mentor assigned to the team automatically upon topic selection. On top of this, mentors should be able to be unassigned from topics on command and automatically when there are no more member as part of a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
====Checkbox to alter the Assignment Creation or Import====&lt;br /&gt;
Implementation will include adding a checkbox option when importing topics to include mentors. This checkbox will toggle whether or not the mentors will be included in the assignment/import. This checkbox will also reload the table to include the additional column required for the mentor's name. Once saved, these mentor names will be stored as an additional attribute in the sign_up_topic.&lt;br /&gt;
&lt;br /&gt;
[[File:mentor_checkbox_mockup.png|600px|thumb|Right|Mockup illustrating the proposed location for the mentor checkbox within the user interface form.]]&lt;br /&gt;
&lt;br /&gt;
It's important to note that this will not affect how teams and mentors are managed for projects where the entire class has the same project. That will still be handled by the mentors being assigned to a team once that team has reached half capacity. This feature will allow mentors to be associated with project topics in projects where each team has a different topic (e.g., ECE 517 Expertiza-based projects).&lt;br /&gt;
&lt;br /&gt;
====Automatic Assignment of Mentors====&lt;br /&gt;
After a team has been created and is allowed to choose a topic from the assignment, the mentor who was assigned to the topic will automatically be assigned to the team. This will be done by adding the mentor to the team (likely via the `TeamsUser` association) and ensuring their `can_mentor` participant value is true. Given the logic of the previous mentor management implementations, this ensures the participant on the team is recognized as a mentor.&lt;br /&gt;
&lt;br /&gt;
The outcome should be that the assigned mentor appears associated with the team in relevant views.&lt;br /&gt;
[[File:Mentor_shows_up_within_teams.png|600px|thumb|Right|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
This automatic assignment upon topic selection complements the existing logic where mentors are assigned when a team reaches half strength, as seen in the `MentorManagement` model: [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/models/mentor_management.rb#L43 MentorManagement#assign_mentor].&lt;br /&gt;
&lt;br /&gt;
====Removal of Mentors====&lt;br /&gt;
Mentors that are assigned to teams are able to be removed manually or automatically when a team drops the topic and the mentor is the only one left on the team. &lt;br /&gt;
&lt;br /&gt;
The manual removal of mentors can be achieved by clicking the 'X' next to their name as they appear in the 'Mentor' column as part of the Topics tab within certain assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:FinalProjectRemoveMentor.png|200px|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
====Importing Topics====&lt;br /&gt;
In order for assignments/topics to have mentors assigned to them before teams are formed, there needs to be a minor change to the way that topics are imported into Expertiza (accessible from the Topics tab of an assignment, e.g., `http://152.7.178.121:8080/assignments/1028/edit`).&lt;br /&gt;
&lt;br /&gt;
There should be an optional field in the import file (spreadsheet) that, when included, associates a mentor with a topic. This requires modifying the import logic to handle this optional mentor column.&lt;br /&gt;
[[File:Import_menu_changes.png|600px|thumb|Right|Screenshot highlighting modifications to the import menu, likely including the checkbox or instructions for the mentor column.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Imported_column_change.png|600px|thumb|Right|View showing the changes in the topic table data column after an import, displaying the imported mentor information associated with topics.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Successfully_imported_topics_with_mentors.png|600px|thumb|Right|Confirmation view indicating the successful import of topics along with their assigned mentors.]]&lt;br /&gt;
&lt;br /&gt;
The system should still support importing topics without mentors. Furthermore, there should be a way to manually add or edit the assigned mentor for a topic after it has been created or imported, whether it initially had a mentor or not.&lt;br /&gt;
[[File:Adding_individual_topic_with_mentor.png|600px|thumb|Right|Interface view demonstrating the process of adding or editing an individual topic and assigning a mentor to it manually.]]&lt;br /&gt;
&lt;br /&gt;
==Database==&lt;br /&gt;
We will likely leverage the existing `teams_users` table structure, potentially using the `duty_id` field or similar mechanisms to signify the mentor role within the context of a team, consistent with how other roles might be managed. The `SignUpTopic` model will need an attribute to store the pre-assigned mentor's identifier before a team signs up.&lt;br /&gt;
&lt;br /&gt;
==Files That May Be Modified==&lt;br /&gt;
The following files are likely candidates for modification during this project:&lt;br /&gt;
&lt;br /&gt;
Models:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/signed_up_team.rb  SignedUpTeam] - Potentially modified to trigger mentor assignment upon topic selection.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_topic.rb  SignUpTopic] - To add an attribute for storing the assigned mentor identifier.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_sheet.rb  SignUpSheet]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/team.rb  Team]&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/import_file_controller.rb  import_file_controller.rb] - To handle the new import format including the optional mentor column and the checkbox logic.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/sign_up_sheet_controller.rb  sign_up_sheet_controller.rb]&lt;br /&gt;
&lt;br /&gt;
Views:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/assignments/edit/_topics.html.erb  views/assignments/edit/_topics.html.erb] - To display the mentor column when editing topics if the feature is enabled.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/views/import_file/start.html.erb  views/import_file/start.html.erb] - To add the &amp;quot;include mentors&amp;quot; checkbox and potentially update instructions.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topics.html.erb  views/sign_up_sheet/_add_topics.html.erb] - To include mentor information when adding/displaying topics.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_line.html.erb  views/sign_up_sheet/_table_line.html.erb] - To display the mentor associated with a topic in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_header.html.erb  views/sign_up_sheet/_table_header.html.erb] - To add a header for the mentor column in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic_names.html.erb  views/sign_up_sheet/_topic_names.html.erb] - Potentially adjust topic display.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topic.html.erb  views/sign_up_sheet/_add_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic.html.erb  views/sign_up_sheet/_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/import_file/_sign_up_topic.html.erb  app/views/import_file/_sign_up_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/new.html.erb  app/views/sign_up_sheet/new.html.erb]&lt;br /&gt;
&lt;br /&gt;
Helpers:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/helpers/import_topics_helper.rb  import_topics_helper.rb]&lt;br /&gt;
&lt;br /&gt;
Migrations:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings  db/migrate/20250301220548_create_meetings]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings.rb  db/migrate/20250301220548_create_meetings.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb  db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/schema.rb  db/schema.rb]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
The overarching purpose of these tests is to verify that the system correctly handles mentor assignments in projects where mentors are associated with topics. Tests should cover both success and failure scenarios for each feature. Key areas include:&lt;br /&gt;
&lt;br /&gt;
* '''Storing Mentors with Topics:''' &lt;br /&gt;
** Ensuring that topics can hold information about their assigned mentors (e.g., via the new attribute in `SignUpTopic`).&lt;br /&gt;
* '''Assigning Mentors During Topic Sign-up:''' &lt;br /&gt;
** Confirming that when a team chooses a topic, the topic's pre-assigned mentor is automatically added to the team with the correct role/permissions.&lt;br /&gt;
* '''Compatibility with Existing Assignment Logic:''' &lt;br /&gt;
** Ensuring that the existing logic for assigning mentors (e.g., when teams reach half strength in non-topic-based assignments) remains unaffected or correctly integrated if applicable.&lt;br /&gt;
* '''Displaying Mentor Information:''' &lt;br /&gt;
** Validating that team views and topic views accurately show mentor information for mentored assignments and topics, and correctly hide or omit it otherwise.&lt;br /&gt;
* '''Importing Topics with Mentors:'''&lt;br /&gt;
** Checking that topics imported from files correctly capture and store mentor assignments when the mentor column is present.&lt;br /&gt;
** Verifying that topics are imported correctly when the mentor column is absent.&lt;br /&gt;
** Confirming the &amp;quot;Include mentors&amp;quot; checkbox correctly updates the UI (e.g., topic table columns) and influences the import behavior.&lt;br /&gt;
* '''Manual Mentor Assignment:''' Testing the ability to manually add or edit a mentor for a topic via the UI.&lt;br /&gt;
&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
Once tests are created and modifications are implemented, we will run the test suite and provide evidence (e.g., screenshots of coverage reports) demonstrating the extent to which the new and modified code paths are covered by automated tests. The goal is comprehensive coverage for the implemented features.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
* Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
* E2504 Wiki (Previous Project): https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1jjbqggRDiOHrxdsMlliY62JnP34bGTNHVWAZNz89kT8/edit?tab=t.0#heading=h.yeys674t35p3&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
- Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
- Jacob Winters&lt;br /&gt;
- Alex Wakefield&lt;br /&gt;
- John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164410</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164410"/>
		<updated>2025-04-22T00:04:47Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Removal of Mentors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, implementation was added for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned. To expand the functionality of the mentor management system, we want to incorporate mentors into assignment topics.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The main objective of this project is to extend the mentor management system by having it collaborate with the assignment topics system. When an assignment with topics is created, topics are imported from a spreadsheet into the assignment table. This project will focus on including pre-selected mentors (entered in the spreadsheet) in the assignment table and having the mentor assigned to the team automatically upon topic selection. On top of this, mentors should be able to be unassigned from topics on command and automatically when there are no more member as part of a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
====Checkbox to alter the Assignment Creation or Import====&lt;br /&gt;
Implementation will include adding a checkbox option when importing topics to include mentors. This checkbox will toggle whether or not the mentors will be included in the assignment/import. This checkbox will also reload the table to include the additional column required for the mentor's name. Once saved, these mentor names will be stored as an additional attribute in the sign_up_topic.&lt;br /&gt;
&lt;br /&gt;
[[File:mentor_checkbox_mockup.png|600px|thumb|Right|Mockup illustrating the proposed location for the mentor checkbox within the user interface form.]]&lt;br /&gt;
&lt;br /&gt;
It's important to note that this will not affect how teams and mentors are managed for projects where the entire class has the same project. That will still be handled by the mentors being assigned to a team once that team has reached half capacity. This feature will allow mentors to be associated with project topics in projects where each team has a different topic (e.g., ECE 517 Expertiza-based projects).&lt;br /&gt;
&lt;br /&gt;
====Automatic Assignment of Mentors====&lt;br /&gt;
After a team has been created and is allowed to choose a topic from the assignment, the mentor who was assigned to the topic will automatically be assigned to the team. This will be done by adding the mentor to the team (likely via the `TeamsUser` association) and ensuring their `can_mentor` participant value is true. Given the logic of the previous mentor management implementations, this ensures the participant on the team is recognized as a mentor.&lt;br /&gt;
&lt;br /&gt;
The outcome should be that the assigned mentor appears associated with the team in relevant views.&lt;br /&gt;
[[File:Mentor_shows_up_within_teams.png|600px|thumb|Right|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
This automatic assignment upon topic selection complements the existing logic where mentors are assigned when a team reaches half strength, as seen in the `MentorManagement` model: [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/models/mentor_management.rb#L43 MentorManagement#assign_mentor].&lt;br /&gt;
&lt;br /&gt;
====Removal of Mentors====&lt;br /&gt;
Mentors that are assigned to teams are able to be removed manually or automatically when a team drops the topic and the mentor is the only one left on the team. &lt;br /&gt;
&lt;br /&gt;
The manual removal of mentors can be achieved by clicking the 'X' next to their name as they appear in the 'Mentor' column as part of the Topics tab within certain assignments.&lt;br /&gt;
[[File:FinalProjectRemoveMentor.png|200px|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
====Importing Topics====&lt;br /&gt;
In order for assignments/topics to have mentors assigned to them before teams are formed, there needs to be a minor change to the way that topics are imported into Expertiza (accessible from the Topics tab of an assignment, e.g., `http://152.7.178.121:8080/assignments/1028/edit`).&lt;br /&gt;
&lt;br /&gt;
There should be an optional field in the import file (spreadsheet) that, when included, associates a mentor with a topic. This requires modifying the import logic to handle this optional mentor column.&lt;br /&gt;
[[File:Import_menu_changes.png|600px|thumb|Right|Screenshot highlighting modifications to the import menu, likely including the checkbox or instructions for the mentor column.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Imported_column_change.png|600px|thumb|Right|View showing the changes in the topic table data column after an import, displaying the imported mentor information associated with topics.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Successfully_imported_topics_with_mentors.png|600px|thumb|Right|Confirmation view indicating the successful import of topics along with their assigned mentors.]]&lt;br /&gt;
&lt;br /&gt;
The system should still support importing topics without mentors. Furthermore, there should be a way to manually add or edit the assigned mentor for a topic after it has been created or imported, whether it initially had a mentor or not.&lt;br /&gt;
[[File:Adding_individual_topic_with_mentor.png|600px|thumb|Right|Interface view demonstrating the process of adding or editing an individual topic and assigning a mentor to it manually.]]&lt;br /&gt;
&lt;br /&gt;
==Database==&lt;br /&gt;
We will likely leverage the existing `teams_users` table structure, potentially using the `duty_id` field or similar mechanisms to signify the mentor role within the context of a team, consistent with how other roles might be managed. The `SignUpTopic` model will need an attribute to store the pre-assigned mentor's identifier before a team signs up.&lt;br /&gt;
&lt;br /&gt;
==Files That May Be Modified==&lt;br /&gt;
The following files are likely candidates for modification during this project:&lt;br /&gt;
&lt;br /&gt;
Models:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/signed_up_team.rb  SignedUpTeam] - Potentially modified to trigger mentor assignment upon topic selection.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_topic.rb  SignUpTopic] - To add an attribute for storing the assigned mentor identifier.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_sheet.rb  SignUpSheet]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/team.rb  Team]&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/import_file_controller.rb  import_file_controller.rb] - To handle the new import format including the optional mentor column and the checkbox logic.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/sign_up_sheet_controller.rb  sign_up_sheet_controller.rb]&lt;br /&gt;
&lt;br /&gt;
Views:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/assignments/edit/_topics.html.erb  views/assignments/edit/_topics.html.erb] - To display the mentor column when editing topics if the feature is enabled.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/views/import_file/start.html.erb  views/import_file/start.html.erb] - To add the &amp;quot;include mentors&amp;quot; checkbox and potentially update instructions.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topics.html.erb  views/sign_up_sheet/_add_topics.html.erb] - To include mentor information when adding/displaying topics.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_line.html.erb  views/sign_up_sheet/_table_line.html.erb] - To display the mentor associated with a topic in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_header.html.erb  views/sign_up_sheet/_table_header.html.erb] - To add a header for the mentor column in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic_names.html.erb  views/sign_up_sheet/_topic_names.html.erb] - Potentially adjust topic display.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topic.html.erb  views/sign_up_sheet/_add_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic.html.erb  views/sign_up_sheet/_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/import_file/_sign_up_topic.html.erb  app/views/import_file/_sign_up_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/new.html.erb  app/views/sign_up_sheet/new.html.erb]&lt;br /&gt;
&lt;br /&gt;
Helpers:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/helpers/import_topics_helper.rb  import_topics_helper.rb]&lt;br /&gt;
&lt;br /&gt;
Migrations:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings  db/migrate/20250301220548_create_meetings]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings.rb  db/migrate/20250301220548_create_meetings.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb  db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/schema.rb  db/schema.rb]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
The overarching purpose of these tests is to verify that the system correctly handles mentor assignments in projects where mentors are associated with topics. Tests should cover both success and failure scenarios for each feature. Key areas include:&lt;br /&gt;
&lt;br /&gt;
* '''Storing Mentors with Topics:''' &lt;br /&gt;
** Ensuring that topics can hold information about their assigned mentors (e.g., via the new attribute in `SignUpTopic`).&lt;br /&gt;
* '''Assigning Mentors During Topic Sign-up:''' &lt;br /&gt;
** Confirming that when a team chooses a topic, the topic's pre-assigned mentor is automatically added to the team with the correct role/permissions.&lt;br /&gt;
* '''Compatibility with Existing Assignment Logic:''' &lt;br /&gt;
** Ensuring that the existing logic for assigning mentors (e.g., when teams reach half strength in non-topic-based assignments) remains unaffected or correctly integrated if applicable.&lt;br /&gt;
* '''Displaying Mentor Information:''' &lt;br /&gt;
** Validating that team views and topic views accurately show mentor information for mentored assignments and topics, and correctly hide or omit it otherwise.&lt;br /&gt;
* '''Importing Topics with Mentors:'''&lt;br /&gt;
** Checking that topics imported from files correctly capture and store mentor assignments when the mentor column is present.&lt;br /&gt;
** Verifying that topics are imported correctly when the mentor column is absent.&lt;br /&gt;
** Confirming the &amp;quot;Include mentors&amp;quot; checkbox correctly updates the UI (e.g., topic table columns) and influences the import behavior.&lt;br /&gt;
* '''Manual Mentor Assignment:''' Testing the ability to manually add or edit a mentor for a topic via the UI.&lt;br /&gt;
&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
Once tests are created and modifications are implemented, we will run the test suite and provide evidence (e.g., screenshots of coverage reports) demonstrating the extent to which the new and modified code paths are covered by automated tests. The goal is comprehensive coverage for the implemented features.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
* Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
* E2504 Wiki (Previous Project): https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1jjbqggRDiOHrxdsMlliY62JnP34bGTNHVWAZNz89kT8/edit?tab=t.0#heading=h.yeys674t35p3&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
- Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
- Jacob Winters&lt;br /&gt;
- Alex Wakefield&lt;br /&gt;
- John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164409</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164409"/>
		<updated>2025-04-22T00:04:39Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Removal of Mentors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, implementation was added for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned. To expand the functionality of the mentor management system, we want to incorporate mentors into assignment topics.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The main objective of this project is to extend the mentor management system by having it collaborate with the assignment topics system. When an assignment with topics is created, topics are imported from a spreadsheet into the assignment table. This project will focus on including pre-selected mentors (entered in the spreadsheet) in the assignment table and having the mentor assigned to the team automatically upon topic selection. On top of this, mentors should be able to be unassigned from topics on command and automatically when there are no more member as part of a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
====Checkbox to alter the Assignment Creation or Import====&lt;br /&gt;
Implementation will include adding a checkbox option when importing topics to include mentors. This checkbox will toggle whether or not the mentors will be included in the assignment/import. This checkbox will also reload the table to include the additional column required for the mentor's name. Once saved, these mentor names will be stored as an additional attribute in the sign_up_topic.&lt;br /&gt;
&lt;br /&gt;
[[File:mentor_checkbox_mockup.png|600px|thumb|Right|Mockup illustrating the proposed location for the mentor checkbox within the user interface form.]]&lt;br /&gt;
&lt;br /&gt;
It's important to note that this will not affect how teams and mentors are managed for projects where the entire class has the same project. That will still be handled by the mentors being assigned to a team once that team has reached half capacity. This feature will allow mentors to be associated with project topics in projects where each team has a different topic (e.g., ECE 517 Expertiza-based projects).&lt;br /&gt;
&lt;br /&gt;
====Automatic Assignment of Mentors====&lt;br /&gt;
After a team has been created and is allowed to choose a topic from the assignment, the mentor who was assigned to the topic will automatically be assigned to the team. This will be done by adding the mentor to the team (likely via the `TeamsUser` association) and ensuring their `can_mentor` participant value is true. Given the logic of the previous mentor management implementations, this ensures the participant on the team is recognized as a mentor.&lt;br /&gt;
&lt;br /&gt;
The outcome should be that the assigned mentor appears associated with the team in relevant views.&lt;br /&gt;
[[File:Mentor_shows_up_within_teams.png|600px|thumb|Right|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
This automatic assignment upon topic selection complements the existing logic where mentors are assigned when a team reaches half strength, as seen in the `MentorManagement` model: [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/models/mentor_management.rb#L43 MentorManagement#assign_mentor].&lt;br /&gt;
&lt;br /&gt;
====Removal of Mentors====&lt;br /&gt;
Mentors that are assigned to teams are able to be removed manually or automatically when a team drops the topic and the mentor is the only one left on the team. &lt;br /&gt;
&lt;br /&gt;
The manual removal of mentors can be achieved by clicking the 'X' next to their name as they appear in the 'Mentor' column as part of the Topics tab within certain assignments.&lt;br /&gt;
[[File:FinalProjectRemoveMentor.png|200px|thumb|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
====Importing Topics====&lt;br /&gt;
In order for assignments/topics to have mentors assigned to them before teams are formed, there needs to be a minor change to the way that topics are imported into Expertiza (accessible from the Topics tab of an assignment, e.g., `http://152.7.178.121:8080/assignments/1028/edit`).&lt;br /&gt;
&lt;br /&gt;
There should be an optional field in the import file (spreadsheet) that, when included, associates a mentor with a topic. This requires modifying the import logic to handle this optional mentor column.&lt;br /&gt;
[[File:Import_menu_changes.png|600px|thumb|Right|Screenshot highlighting modifications to the import menu, likely including the checkbox or instructions for the mentor column.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Imported_column_change.png|600px|thumb|Right|View showing the changes in the topic table data column after an import, displaying the imported mentor information associated with topics.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Successfully_imported_topics_with_mentors.png|600px|thumb|Right|Confirmation view indicating the successful import of topics along with their assigned mentors.]]&lt;br /&gt;
&lt;br /&gt;
The system should still support importing topics without mentors. Furthermore, there should be a way to manually add or edit the assigned mentor for a topic after it has been created or imported, whether it initially had a mentor or not.&lt;br /&gt;
[[File:Adding_individual_topic_with_mentor.png|600px|thumb|Right|Interface view demonstrating the process of adding or editing an individual topic and assigning a mentor to it manually.]]&lt;br /&gt;
&lt;br /&gt;
==Database==&lt;br /&gt;
We will likely leverage the existing `teams_users` table structure, potentially using the `duty_id` field or similar mechanisms to signify the mentor role within the context of a team, consistent with how other roles might be managed. The `SignUpTopic` model will need an attribute to store the pre-assigned mentor's identifier before a team signs up.&lt;br /&gt;
&lt;br /&gt;
==Files That May Be Modified==&lt;br /&gt;
The following files are likely candidates for modification during this project:&lt;br /&gt;
&lt;br /&gt;
Models:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/signed_up_team.rb  SignedUpTeam] - Potentially modified to trigger mentor assignment upon topic selection.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_topic.rb  SignUpTopic] - To add an attribute for storing the assigned mentor identifier.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_sheet.rb  SignUpSheet]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/team.rb  Team]&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/import_file_controller.rb  import_file_controller.rb] - To handle the new import format including the optional mentor column and the checkbox logic.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/sign_up_sheet_controller.rb  sign_up_sheet_controller.rb]&lt;br /&gt;
&lt;br /&gt;
Views:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/assignments/edit/_topics.html.erb  views/assignments/edit/_topics.html.erb] - To display the mentor column when editing topics if the feature is enabled.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/views/import_file/start.html.erb  views/import_file/start.html.erb] - To add the &amp;quot;include mentors&amp;quot; checkbox and potentially update instructions.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topics.html.erb  views/sign_up_sheet/_add_topics.html.erb] - To include mentor information when adding/displaying topics.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_line.html.erb  views/sign_up_sheet/_table_line.html.erb] - To display the mentor associated with a topic in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_header.html.erb  views/sign_up_sheet/_table_header.html.erb] - To add a header for the mentor column in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic_names.html.erb  views/sign_up_sheet/_topic_names.html.erb] - Potentially adjust topic display.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topic.html.erb  views/sign_up_sheet/_add_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic.html.erb  views/sign_up_sheet/_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/import_file/_sign_up_topic.html.erb  app/views/import_file/_sign_up_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/new.html.erb  app/views/sign_up_sheet/new.html.erb]&lt;br /&gt;
&lt;br /&gt;
Helpers:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/helpers/import_topics_helper.rb  import_topics_helper.rb]&lt;br /&gt;
&lt;br /&gt;
Migrations:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings  db/migrate/20250301220548_create_meetings]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings.rb  db/migrate/20250301220548_create_meetings.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb  db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/schema.rb  db/schema.rb]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
The overarching purpose of these tests is to verify that the system correctly handles mentor assignments in projects where mentors are associated with topics. Tests should cover both success and failure scenarios for each feature. Key areas include:&lt;br /&gt;
&lt;br /&gt;
* '''Storing Mentors with Topics:''' &lt;br /&gt;
** Ensuring that topics can hold information about their assigned mentors (e.g., via the new attribute in `SignUpTopic`).&lt;br /&gt;
* '''Assigning Mentors During Topic Sign-up:''' &lt;br /&gt;
** Confirming that when a team chooses a topic, the topic's pre-assigned mentor is automatically added to the team with the correct role/permissions.&lt;br /&gt;
* '''Compatibility with Existing Assignment Logic:''' &lt;br /&gt;
** Ensuring that the existing logic for assigning mentors (e.g., when teams reach half strength in non-topic-based assignments) remains unaffected or correctly integrated if applicable.&lt;br /&gt;
* '''Displaying Mentor Information:''' &lt;br /&gt;
** Validating that team views and topic views accurately show mentor information for mentored assignments and topics, and correctly hide or omit it otherwise.&lt;br /&gt;
* '''Importing Topics with Mentors:'''&lt;br /&gt;
** Checking that topics imported from files correctly capture and store mentor assignments when the mentor column is present.&lt;br /&gt;
** Verifying that topics are imported correctly when the mentor column is absent.&lt;br /&gt;
** Confirming the &amp;quot;Include mentors&amp;quot; checkbox correctly updates the UI (e.g., topic table columns) and influences the import behavior.&lt;br /&gt;
* '''Manual Mentor Assignment:''' Testing the ability to manually add or edit a mentor for a topic via the UI.&lt;br /&gt;
&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
Once tests are created and modifications are implemented, we will run the test suite and provide evidence (e.g., screenshots of coverage reports) demonstrating the extent to which the new and modified code paths are covered by automated tests. The goal is comprehensive coverage for the implemented features.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
* Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
* E2504 Wiki (Previous Project): https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1jjbqggRDiOHrxdsMlliY62JnP34bGTNHVWAZNz89kT8/edit?tab=t.0#heading=h.yeys674t35p3&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
- Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
- Jacob Winters&lt;br /&gt;
- Alex Wakefield&lt;br /&gt;
- John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164408</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164408"/>
		<updated>2025-04-22T00:04:11Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, implementation was added for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned. To expand the functionality of the mentor management system, we want to incorporate mentors into assignment topics.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The main objective of this project is to extend the mentor management system by having it collaborate with the assignment topics system. When an assignment with topics is created, topics are imported from a spreadsheet into the assignment table. This project will focus on including pre-selected mentors (entered in the spreadsheet) in the assignment table and having the mentor assigned to the team automatically upon topic selection. On top of this, mentors should be able to be unassigned from topics on command and automatically when there are no more member as part of a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
====Checkbox to alter the Assignment Creation or Import====&lt;br /&gt;
Implementation will include adding a checkbox option when importing topics to include mentors. This checkbox will toggle whether or not the mentors will be included in the assignment/import. This checkbox will also reload the table to include the additional column required for the mentor's name. Once saved, these mentor names will be stored as an additional attribute in the sign_up_topic.&lt;br /&gt;
&lt;br /&gt;
[[File:mentor_checkbox_mockup.png|600px|thumb|Right|Mockup illustrating the proposed location for the mentor checkbox within the user interface form.]]&lt;br /&gt;
&lt;br /&gt;
It's important to note that this will not affect how teams and mentors are managed for projects where the entire class has the same project. That will still be handled by the mentors being assigned to a team once that team has reached half capacity. This feature will allow mentors to be associated with project topics in projects where each team has a different topic (e.g., ECE 517 Expertiza-based projects).&lt;br /&gt;
&lt;br /&gt;
====Automatic Assignment of Mentors====&lt;br /&gt;
After a team has been created and is allowed to choose a topic from the assignment, the mentor who was assigned to the topic will automatically be assigned to the team. This will be done by adding the mentor to the team (likely via the `TeamsUser` association) and ensuring their `can_mentor` participant value is true. Given the logic of the previous mentor management implementations, this ensures the participant on the team is recognized as a mentor.&lt;br /&gt;
&lt;br /&gt;
The outcome should be that the assigned mentor appears associated with the team in relevant views.&lt;br /&gt;
[[File:Mentor_shows_up_within_teams.png|600px|thumb|Right|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
This automatic assignment upon topic selection complements the existing logic where mentors are assigned when a team reaches half strength, as seen in the `MentorManagement` model: [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/models/mentor_management.rb#L43 MentorManagement#assign_mentor].&lt;br /&gt;
&lt;br /&gt;
====Removal of Mentors====&lt;br /&gt;
Mentors that are assigned to teams are able to be removed manually or automatically when a team drops the topic and the mentor is the only one left on the team. &lt;br /&gt;
&lt;br /&gt;
The manual removal of mentors can be achieved by clicking the 'X' next to their name as they appear in the 'Mentor' column as part of the Topics tab within certain assignments.&lt;br /&gt;
[[File:FinalProjectRemoveMentor.png|200px|thumb|Right|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
====Importing Topics====&lt;br /&gt;
In order for assignments/topics to have mentors assigned to them before teams are formed, there needs to be a minor change to the way that topics are imported into Expertiza (accessible from the Topics tab of an assignment, e.g., `http://152.7.178.121:8080/assignments/1028/edit`).&lt;br /&gt;
&lt;br /&gt;
There should be an optional field in the import file (spreadsheet) that, when included, associates a mentor with a topic. This requires modifying the import logic to handle this optional mentor column.&lt;br /&gt;
[[File:Import_menu_changes.png|600px|thumb|Right|Screenshot highlighting modifications to the import menu, likely including the checkbox or instructions for the mentor column.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Imported_column_change.png|600px|thumb|Right|View showing the changes in the topic table data column after an import, displaying the imported mentor information associated with topics.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Successfully_imported_topics_with_mentors.png|600px|thumb|Right|Confirmation view indicating the successful import of topics along with their assigned mentors.]]&lt;br /&gt;
&lt;br /&gt;
The system should still support importing topics without mentors. Furthermore, there should be a way to manually add or edit the assigned mentor for a topic after it has been created or imported, whether it initially had a mentor or not.&lt;br /&gt;
[[File:Adding_individual_topic_with_mentor.png|600px|thumb|Right|Interface view demonstrating the process of adding or editing an individual topic and assigning a mentor to it manually.]]&lt;br /&gt;
&lt;br /&gt;
==Database==&lt;br /&gt;
We will likely leverage the existing `teams_users` table structure, potentially using the `duty_id` field or similar mechanisms to signify the mentor role within the context of a team, consistent with how other roles might be managed. The `SignUpTopic` model will need an attribute to store the pre-assigned mentor's identifier before a team signs up.&lt;br /&gt;
&lt;br /&gt;
==Files That May Be Modified==&lt;br /&gt;
The following files are likely candidates for modification during this project:&lt;br /&gt;
&lt;br /&gt;
Models:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/signed_up_team.rb  SignedUpTeam] - Potentially modified to trigger mentor assignment upon topic selection.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_topic.rb  SignUpTopic] - To add an attribute for storing the assigned mentor identifier.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_sheet.rb  SignUpSheet]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/team.rb  Team]&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/import_file_controller.rb  import_file_controller.rb] - To handle the new import format including the optional mentor column and the checkbox logic.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/sign_up_sheet_controller.rb  sign_up_sheet_controller.rb]&lt;br /&gt;
&lt;br /&gt;
Views:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/assignments/edit/_topics.html.erb  views/assignments/edit/_topics.html.erb] - To display the mentor column when editing topics if the feature is enabled.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/views/import_file/start.html.erb  views/import_file/start.html.erb] - To add the &amp;quot;include mentors&amp;quot; checkbox and potentially update instructions.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topics.html.erb  views/sign_up_sheet/_add_topics.html.erb] - To include mentor information when adding/displaying topics.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_line.html.erb  views/sign_up_sheet/_table_line.html.erb] - To display the mentor associated with a topic in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_header.html.erb  views/sign_up_sheet/_table_header.html.erb] - To add a header for the mentor column in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic_names.html.erb  views/sign_up_sheet/_topic_names.html.erb] - Potentially adjust topic display.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topic.html.erb  views/sign_up_sheet/_add_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic.html.erb  views/sign_up_sheet/_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/import_file/_sign_up_topic.html.erb  app/views/import_file/_sign_up_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/new.html.erb  app/views/sign_up_sheet/new.html.erb]&lt;br /&gt;
&lt;br /&gt;
Helpers:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/helpers/import_topics_helper.rb  import_topics_helper.rb]&lt;br /&gt;
&lt;br /&gt;
Migrations:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings  db/migrate/20250301220548_create_meetings]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings.rb  db/migrate/20250301220548_create_meetings.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb  db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/schema.rb  db/schema.rb]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
The overarching purpose of these tests is to verify that the system correctly handles mentor assignments in projects where mentors are associated with topics. Tests should cover both success and failure scenarios for each feature. Key areas include:&lt;br /&gt;
&lt;br /&gt;
* '''Storing Mentors with Topics:''' &lt;br /&gt;
** Ensuring that topics can hold information about their assigned mentors (e.g., via the new attribute in `SignUpTopic`).&lt;br /&gt;
* '''Assigning Mentors During Topic Sign-up:''' &lt;br /&gt;
** Confirming that when a team chooses a topic, the topic's pre-assigned mentor is automatically added to the team with the correct role/permissions.&lt;br /&gt;
* '''Compatibility with Existing Assignment Logic:''' &lt;br /&gt;
** Ensuring that the existing logic for assigning mentors (e.g., when teams reach half strength in non-topic-based assignments) remains unaffected or correctly integrated if applicable.&lt;br /&gt;
* '''Displaying Mentor Information:''' &lt;br /&gt;
** Validating that team views and topic views accurately show mentor information for mentored assignments and topics, and correctly hide or omit it otherwise.&lt;br /&gt;
* '''Importing Topics with Mentors:'''&lt;br /&gt;
** Checking that topics imported from files correctly capture and store mentor assignments when the mentor column is present.&lt;br /&gt;
** Verifying that topics are imported correctly when the mentor column is absent.&lt;br /&gt;
** Confirming the &amp;quot;Include mentors&amp;quot; checkbox correctly updates the UI (e.g., topic table columns) and influences the import behavior.&lt;br /&gt;
* '''Manual Mentor Assignment:''' Testing the ability to manually add or edit a mentor for a topic via the UI.&lt;br /&gt;
&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
Once tests are created and modifications are implemented, we will run the test suite and provide evidence (e.g., screenshots of coverage reports) demonstrating the extent to which the new and modified code paths are covered by automated tests. The goal is comprehensive coverage for the implemented features.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
* Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
* E2504 Wiki (Previous Project): https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1jjbqggRDiOHrxdsMlliY62JnP34bGTNHVWAZNz89kT8/edit?tab=t.0#heading=h.yeys674t35p3&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
- Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
- Jacob Winters&lt;br /&gt;
- Alex Wakefield&lt;br /&gt;
- John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProjectRemoveMentor.png&amp;diff=164406</id>
		<title>File:FinalProjectRemoveMentor.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalProjectRemoveMentor.png&amp;diff=164406"/>
		<updated>2025-04-22T00:03:45Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: This file showcases the 'X' next to a mentors name that can be removed from a topic&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
This file showcases the 'X' next to a mentors name that can be removed from a topic&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164402</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=164402"/>
		<updated>2025-04-21T23:57:15Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Project Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, implementation was added for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned. To expand the functionality of the mentor management system, we want to incorporate mentors into assignment topics.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The main objective of this project is to extend the mentor management system by having it collaborate with the assignment topics system. When an assignment with topics is created, topics are imported from a spreadsheet into the assignment table. This project will focus on including pre-selected mentors (entered in the spreadsheet) in the assignment table and having the mentor assigned to the team automatically upon topic selection. On top of this, mentors should be able to be unassigned from topics on command and automatically when there are no more member as part of a team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
====Checkbox to alter the Assignment Creation or Import====&lt;br /&gt;
Implementation will include adding a checkbox option when importing topics to include mentors. This checkbox will toggle whether or not the mentors will be included in the assignment/import. This checkbox will also reload the table to include the additional column required for the mentor's name. Once saved, these mentor names will be stored as an additional attribute in the sign_up_topic.&lt;br /&gt;
&lt;br /&gt;
[[File:mentor_checkbox_mockup.png|600px|thumb|Right|Mockup illustrating the proposed location for the mentor checkbox within the user interface form.]]&lt;br /&gt;
&lt;br /&gt;
It's important to note that this will not affect how teams and mentors are managed for projects where the entire class has the same project. That will still be handled by the mentors being assigned to a team once that team has reached half capacity. This feature will allow mentors to be associated with project topics in projects where each team has a different topic (e.g., ECE 517 Expertiza-based projects).&lt;br /&gt;
&lt;br /&gt;
====Automatic Assignment of Mentors====&lt;br /&gt;
After a team has been created and is allowed to choose a topic from the assignment, the mentor who was assigned to the topic will automatically be assigned to the team. This will be done by adding the mentor to the team (likely via the `TeamsUser` association) and ensuring their `can_mentor` participant value is true. Given the logic of the previous mentor management implementations, this ensures the participant on the team is recognized as a mentor.&lt;br /&gt;
&lt;br /&gt;
The outcome should be that the assigned mentor appears associated with the team in relevant views.&lt;br /&gt;
[[File:Mentor_shows_up_within_teams.png|600px|thumb|Right|Screenshot demonstrating that the assigned mentor's information is now visible within the teams management view after automatic assignment.]]&lt;br /&gt;
&lt;br /&gt;
This automatic assignment upon topic selection complements the existing logic where mentors are assigned when a team reaches half strength, as seen in the `MentorManagement` model: [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/models/mentor_management.rb#L43 MentorManagement#assign_mentor].&lt;br /&gt;
&lt;br /&gt;
====Importing Topics====&lt;br /&gt;
In order for assignments/topics to have mentors assigned to them before teams are formed, there needs to be a minor change to the way that topics are imported into Expertiza (accessible from the Topics tab of an assignment, e.g., `http://152.7.178.121:8080/assignments/1028/edit`).&lt;br /&gt;
&lt;br /&gt;
There should be an optional field in the import file (spreadsheet) that, when included, associates a mentor with a topic. This requires modifying the import logic to handle this optional mentor column.&lt;br /&gt;
[[File:Import_menu_changes.png|600px|thumb|Right|Screenshot highlighting modifications to the import menu, likely including the checkbox or instructions for the mentor column.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Imported_column_change.png|600px|thumb|Right|View showing the changes in the topic table data column after an import, displaying the imported mentor information associated with topics.]]&lt;br /&gt;
&lt;br /&gt;
[[File:Successfully_imported_topics_with_mentors.png|600px|thumb|Right|Confirmation view indicating the successful import of topics along with their assigned mentors.]]&lt;br /&gt;
&lt;br /&gt;
The system should still support importing topics without mentors. Furthermore, there should be a way to manually add or edit the assigned mentor for a topic after it has been created or imported, whether it initially had a mentor or not.&lt;br /&gt;
[[File:Adding_individual_topic_with_mentor.png|600px|thumb|Right|Interface view demonstrating the process of adding or editing an individual topic and assigning a mentor to it manually.]]&lt;br /&gt;
&lt;br /&gt;
==Database==&lt;br /&gt;
We will likely leverage the existing `teams_users` table structure, potentially using the `duty_id` field or similar mechanisms to signify the mentor role within the context of a team, consistent with how other roles might be managed. The `SignUpTopic` model will need an attribute to store the pre-assigned mentor's identifier before a team signs up.&lt;br /&gt;
&lt;br /&gt;
==Files That May Be Modified==&lt;br /&gt;
The following files are likely candidates for modification during this project:&lt;br /&gt;
&lt;br /&gt;
Models:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/signed_up_team.rb  SignedUpTeam] - Potentially modified to trigger mentor assignment upon topic selection.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_topic.rb  SignUpTopic] - To add an attribute for storing the assigned mentor identifier.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_sheet.rb  SignUpSheet]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/team.rb  Team]&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/import_file_controller.rb  import_file_controller.rb] - To handle the new import format including the optional mentor column and the checkbox logic.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/sign_up_sheet_controller.rb  sign_up_sheet_controller.rb]&lt;br /&gt;
&lt;br /&gt;
Views:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/assignments/edit/_topics.html.erb  views/assignments/edit/_topics.html.erb] - To display the mentor column when editing topics if the feature is enabled.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/views/import_file/start.html.erb  views/import_file/start.html.erb] - To add the &amp;quot;include mentors&amp;quot; checkbox and potentially update instructions.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topics.html.erb  views/sign_up_sheet/_add_topics.html.erb] - To include mentor information when adding/displaying topics.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_line.html.erb  views/sign_up_sheet/_table_line.html.erb] - To display the mentor associated with a topic in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_header.html.erb  views/sign_up_sheet/_table_header.html.erb] - To add a header for the mentor column in the sign-up sheet.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic_names.html.erb  views/sign_up_sheet/_topic_names.html.erb] - Potentially adjust topic display.&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topic.html.erb  views/sign_up_sheet/_add_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic.html.erb  views/sign_up_sheet/_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/import_file/_sign_up_topic.html.erb  app/views/import_file/_sign_up_topic.html.erb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/new.html.erb  app/views/sign_up_sheet/new.html.erb]&lt;br /&gt;
&lt;br /&gt;
Helpers:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/helpers/import_topics_helper.rb  import_topics_helper.rb]&lt;br /&gt;
&lt;br /&gt;
Migrations:&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings  db/migrate/20250301220548_create_meetings]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250301220548_create_meetings.rb  db/migrate/20250301220548_create_meetings.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb  db/migrate/20250415151755_add_mentor_id_to_sign_up_topics.rb]&lt;br /&gt;
* [https://github.com/jmwinte3/expertiza/blob/mentor_meetings/db/schema.rb  db/schema.rb]&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
The overarching purpose of these tests is to verify that the system correctly handles mentor assignments in projects where mentors are associated with topics. Tests should cover both success and failure scenarios for each feature. Key areas include:&lt;br /&gt;
&lt;br /&gt;
* '''Storing Mentors with Topics:''' &lt;br /&gt;
** Ensuring that topics can hold information about their assigned mentors (e.g., via the new attribute in `SignUpTopic`).&lt;br /&gt;
* '''Assigning Mentors During Topic Sign-up:''' &lt;br /&gt;
** Confirming that when a team chooses a topic, the topic's pre-assigned mentor is automatically added to the team with the correct role/permissions.&lt;br /&gt;
* '''Compatibility with Existing Assignment Logic:''' &lt;br /&gt;
** Ensuring that the existing logic for assigning mentors (e.g., when teams reach half strength in non-topic-based assignments) remains unaffected or correctly integrated if applicable.&lt;br /&gt;
* '''Displaying Mentor Information:''' &lt;br /&gt;
** Validating that team views and topic views accurately show mentor information for mentored assignments and topics, and correctly hide or omit it otherwise.&lt;br /&gt;
* '''Importing Topics with Mentors:'''&lt;br /&gt;
** Checking that topics imported from files correctly capture and store mentor assignments when the mentor column is present.&lt;br /&gt;
** Verifying that topics are imported correctly when the mentor column is absent.&lt;br /&gt;
** Confirming the &amp;quot;Include mentors&amp;quot; checkbox correctly updates the UI (e.g., topic table columns) and influences the import behavior.&lt;br /&gt;
* '''Manual Mentor Assignment:''' Testing the ability to manually add or edit a mentor for a topic via the UI.&lt;br /&gt;
&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
Once tests are created and modifications are implemented, we will run the test suite and provide evidence (e.g., screenshots of coverage reports) demonstrating the extent to which the new and modified code paths are covered by automated tests. The goal is comprehensive coverage for the implemented features.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
* Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
* E2504 Wiki (Previous Project): https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1jjbqggRDiOHrxdsMlliY62JnP34bGTNHVWAZNz89kT8/edit?tab=t.0#heading=h.yeys674t35p3&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
- Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
- Jacob Winters&lt;br /&gt;
- Alex Wakefield&lt;br /&gt;
- John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=163635</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=163635"/>
		<updated>2025-04-08T01:52:08Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, implementation was added for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned. To expand the functionality of the mentor management system, we want to incorporate mentors into assignment topics.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The main objective of this project is to extend the mentor management system by having it collaborate with the assignment topics system. When an assignment with topics is created, topics are imported from a spreadsheet into the assignment table. This project will focus on including pre-selected mentors (entered in the spreadsheet) in the assignment table and having the mentor assigned to the team automatically upon topic selection.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
====Checkbox to alter the Assignment Creation or Import====&lt;br /&gt;
Implementation will include adding a checkbox option at the top of the page with the other checkbox options. This checkbox will toggle whether or not the mentors will be included in the assignment/import. This checkbox will also reload the table to include the additional column required for the mentor's name. Once saved, these mentor names will be stored as an additional attribute in the sign_up_topic&lt;br /&gt;
&lt;br /&gt;
====Automatic Assignment of Mentors====&lt;br /&gt;
After a team has been created, and is allowed to choose a topic from the assignment, the mentor which was assigned to the topic will automatically be assigned to the team. This will be done by adding the mentor to the team and ensuring their can_mentor participant value is true. Given the logic of the previous mentor management implementations, this ensures the participant on the team is recognized as a mentor of any team they are on.&lt;br /&gt;
&lt;br /&gt;
====Importing Topics====&lt;br /&gt;
In order for assignments/topics to have mentors assigned to them before teams are assigned, there needs to be a minor change to the way that files are imported into expertiza. There should be an optional field that when included associates a mentor with a topic. This will requiring a modification to both the way that normal topics are imported and the option to import topics with mentors.&lt;br /&gt;
&lt;br /&gt;
[[File:mentor_checkbox_mockup.png|600px|thumb|Right|This shows where the checkbox will be added as an option to the existing form]]&lt;br /&gt;
&lt;br /&gt;
When project topics are imported (from the Topics tab of the assignment “Import topics” at the bottom of the page) there must be an optional field for mentor&lt;br /&gt;
At the bottom of this page for example http://152.7.178.121:8080/assignments/1028/edit&lt;br /&gt;
&lt;br /&gt;
just as is done now when the team reaches half strength.&lt;br /&gt;
&lt;br /&gt;
this is happening within the mentor_management model here:&lt;br /&gt;
#https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/models/mentor_management.rb#L43&lt;br /&gt;
&lt;br /&gt;
====Database====&lt;br /&gt;
We will be implementing the same database as 'teams_users' for our project, specifically using duty_id for assignments of mentors.&lt;br /&gt;
&lt;br /&gt;
==Files That May Be Modified==&lt;br /&gt;
Models:&lt;br /&gt;
#SignedUpTeam: https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/signed_up_team.rb&lt;br /&gt;
#SignUpTopic: https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/models/sign_up_topic.rb&lt;br /&gt;
&lt;br /&gt;
Controller:&lt;br /&gt;
#import_file_controller.rb https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/controllers/import_file_controller.rb&lt;br /&gt;
&lt;br /&gt;
Views:&lt;br /&gt;
#its in views/assignments/edit/_topics.html.erb: https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/assignments/edit.html.erb &lt;br /&gt;
#views/import_file/start: https://github.com/jmwinte3/expertiza/blob/e566f88436d4c833111086631d0f30c76a5970a2/app/views/import_file/start.html.erb#L2&lt;br /&gt;
#views/sign_up_sheet/_add_topics.html.erb https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topics.html.erb&lt;br /&gt;
#views/sign_up_sheet/_table_line.html.erb https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_table_line.html.erb&lt;br /&gt;
#views/sign_up_sheet/_topic_names .html.erb https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_topic_names.html.erb&lt;br /&gt;
#views/sign_up_sheet/_add_topic.html.erb https://github.com/jmwinte3/expertiza/blob/mentor_meetings/app/views/sign_up_sheet/_add_topic.html.erb&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
&lt;br /&gt;
The overarching purpose of these tests is to verify that the system correctly handles mentor assignments in projects where mentors are associated with topics, not directly with teams. Each of these cases will have multiple tests to ensure the proper functionality when there is both a failure and a success. The topics include:&lt;br /&gt;
&lt;br /&gt;
  Storing Mentors with Topics: &lt;br /&gt;
    Ensuring that topics can hold information about their assigned mentors.&lt;br /&gt;
  &lt;br /&gt;
  Assigning Mentors During Topic Sign-up: &lt;br /&gt;
    Confirming that when a team chooses a topic, the topic's mentor is automatically assigned to that team.&lt;br /&gt;
  &lt;br /&gt;
  Assigning Mentors when Teams Reach Half Strength: Ensuring that the existing logic for intelligent assignments still applies.&lt;br /&gt;
    Displaying Mentor Information: Validating that team views accurately show mentor information for mentored assignments and correctly hide it for non-mentored ones.&lt;br /&gt;
    &lt;br /&gt;
  Importing Topics with Mentors: Checking that topics imported from files correctly capture and store mentor assignments.&lt;br /&gt;
    Include mentors checkbox updates table: Confirm the table columns are properly updated to include the mentors in the topic&lt;br /&gt;
&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
  Once we have created our tests and made the modifications to the expertiza repository that we have described we will include screenshots of what percentage of the tests fail and show that all functions will hopefully have some coverage in the tests&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
* Github: https://github.com/jmwinte3/expertiza &lt;br /&gt;
* E2504 Wiki: https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&lt;br /&gt;
* Project Description: https://docs.google.com/document/d/1jjbqggRDiOHrxdsMlliY62JnP34bGTNHVWAZNz89kT8/edit?tab=t.0#heading=h.yeys674t35p3&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
&lt;br /&gt;
    Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
&lt;br /&gt;
    Jacob Winters&lt;br /&gt;
    Alex Wakefield&lt;br /&gt;
    John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025&amp;diff=163512</id>
		<title>CSC/ECE 517 Spring 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025&amp;diff=163512"/>
		<updated>2025-04-08T00:46:30Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[CSC/ECE 517 Spring 2025 - E2503. Refactor the Team hierarchy]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2504. Mentor-meeting management]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2505. Testing Answer Tagging]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2508. Reimplement bidding-algorithm web service]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2509. Reimplement feedback_response_map.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2519. Implement view for results of bidding]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2522. Enhancing UI Consistency in Expertiza 1]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2520. Reimplement heatgrid UI for reviews]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2517. Reimplement internationalization (frontend + backend)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2523: Enhancing UI Consistency in Expertiza 2]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2515:  Reimplement student_teams_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2501:  Refactor review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2502:  Refactor review_mapping_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2512. Reimplement responses controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2510. Reimplement grades_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2507. Reimplement back end for submission records]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2514. Reimplement student_quizzes_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2518. Reimplement password resets (frontend + backend)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2516. Reimplement teams_users_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2511. Reimplement participants_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2521. UI for View submissions/assign grades (except heatgrid)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2513. Reimplement sign_up_topic.rb as project_topic.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2506. Implement testing for new Bookmarks Controller]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Final Projects ==&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2509 Refactoring and Enhancing the Feedback Response Map Controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2539 Reimplement Student Task View (Frontend + Backend)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2521 UI for View submissions/assign grades (except heatgrid)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2524 Reimplement student review controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2525 Reimplement review_mapping_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2526 Reimplement Teams and Participant hierarchies]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2530 Reimplement Grades Controller (Frontend + Backend)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2538 Reimplementing Questionnaire Page in Expertiza]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2534 UI for Assign Reviewers]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2540 Integration of Assignment participant Frontend with participant controller Backend]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2532. Reimplement Missing ResponseMap Subclasses]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2542. Refactor review_bids_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2533. ​​Reimplement the Team hierarchy]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2531 Refactor participants_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2528 Testing for Survey Deployment]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2514. Reimplement student_quizzes_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2516. Reimplement teams_users_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2535 Reimplement User Profile Management (Frontend + Backend)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics]]&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=162921</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=162921"/>
		<updated>2025-04-01T18:50:15Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: Fixed Formatting of Links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, you implemented a way for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned, such as Program 2.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
Extend the system developed in Project E2504 to work for projects with topics, where the mentor is preassigned to the topic. Additionally, when a team chooses a topic, the mentor should then become the mentor for the team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
TOTO: Add Implementation&lt;br /&gt;
&lt;br /&gt;
==File Modified==&lt;br /&gt;
TODO: Add Files Modified&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
    TODO: Add Test Plan&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
    TODO: Add Test coverage&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
* Github: https://github.com/jmwinte3/expertiza &lt;br /&gt;
* E2504 Wiki: https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&lt;br /&gt;
* Project Description: https://docs.google.com/document/d/1jjbqggRDiOHrxdsMlliY62JnP34bGTNHVWAZNz89kT8/edit?tab=t.0#heading=h.yeys674t35p3&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
&lt;br /&gt;
    Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
&lt;br /&gt;
    Jacob Winters&lt;br /&gt;
    Alex Wakefield&lt;br /&gt;
    John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=162920</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=162920"/>
		<updated>2025-04-01T18:49:52Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: Updated Links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, you implemented a way for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned, such as Program 2.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
Extend the system developed in Project E2504 to work for projects with topics, where the mentor is preassigned to the topic. Additionally, when a team chooses a topic, the mentor should then become the mentor for the team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
TOTO: Add Implementation&lt;br /&gt;
&lt;br /&gt;
==File Modified==&lt;br /&gt;
TODO: Add Files Modified&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
    TODO: Add Test Plan&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
    TODO: Add Test coverage&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
Github: https://github.com/jmwinte3/expertiza &lt;br /&gt;
E2504 Wiki: https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&lt;br /&gt;
Project Description: https://docs.google.com/document/d/1jjbqggRDiOHrxdsMlliY62JnP34bGTNHVWAZNz89kT8/edit?tab=t.0#heading=h.yeys674t35p3&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
&lt;br /&gt;
    Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
&lt;br /&gt;
    Jacob Winters&lt;br /&gt;
    Alex Wakefield&lt;br /&gt;
    John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=162916</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=162916"/>
		<updated>2025-04-01T18:22:36Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: Fixed Formatting of Testing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, you implemented a way for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned, such as Program 2.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
Extend the system developed in Project E2504 to work for projects with topics, where the mentor is preassigned to the topic. Additionally, when a team chooses a topic, the mentor should then become the mentor for the team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
TOTO: Add Implementation&lt;br /&gt;
&lt;br /&gt;
==File Modified==&lt;br /&gt;
TODO: Add Files Modified&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
===Test Plan===&lt;br /&gt;
    TODO: Add Test Plan&lt;br /&gt;
===Test Coverage===&lt;br /&gt;
    TODO: Add Test coverage&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
TODO: Add links (Github, Wiki, Project Description, etc.)&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
&lt;br /&gt;
    Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
&lt;br /&gt;
    Jacob Winters&lt;br /&gt;
    Alex Wakefield&lt;br /&gt;
    John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=162915</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=162915"/>
		<updated>2025-04-01T18:21:46Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: Added Template to the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
In Project E2504, you implemented a way for mentors to record their meetings with the teams they were mentoring. It worked for projects where mentors were automatically assigned, such as Program 2.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
Extend the system developed in Project E2504 to work for projects with topics, where the mentor is preassigned to the topic. Additionally, when a team chooses a topic, the mentor should then become the mentor for the team.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
TOTO: Add Implementation&lt;br /&gt;
&lt;br /&gt;
==File Modified==&lt;br /&gt;
TODO: Add Files Modified&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
* Test Plan&lt;br /&gt;
    TODO: Add Test Plan&lt;br /&gt;
* Test Coverage&lt;br /&gt;
    TODO: Add Test coverage&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
TODO: Add links (Github, Wiki, Project Description, etc.)&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
&lt;br /&gt;
    Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
&lt;br /&gt;
    Jacob Winters&lt;br /&gt;
    Alex Wakefield&lt;br /&gt;
    John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=162914</id>
		<title>CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2527._Mentor-meeting_management:_assignments_with_topics&amp;diff=162914"/>
		<updated>2025-04-01T18:09:24Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: Created page with &amp;quot;TODO: Create Wiki Page for Team Writeup&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO: Create Wiki Page for Team Writeup&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025&amp;diff=162913</id>
		<title>CSC/ECE 517 Spring 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025&amp;diff=162913"/>
		<updated>2025-04-01T18:09:04Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[CSC/ECE 517 Spring 2025 - E2503. Refactor the Team hierarchy]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2504. Mentor-meeting management]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2505. Testing Answer Tagging]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2508. Reimplement bidding-algorithm web service]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2509. Reimplement feedback_response_map.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2519. Implement view for results of bidding]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2522. Enhancing UI Consistency in Expertiza 1]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2520. Reimplement heatgrid UI for reviews]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2517. Reimplement internationalization (frontend + backend)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2523: Enhancing UI Consistency in Expertiza 2]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2515:  Reimplement student_teams_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2501:  Refactor review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2502:  Refactor review_mapping_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2512. Reimplement responses controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2510. Reimplement grades_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2507. Reimplement back end for submission records]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2514. Reimplement student_quizzes_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2518. Reimplement password resets (frontend + backend)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2516. Reimplement teams_users_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2511. Reimplement participants_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2521. UI for View submissions/assign grades (except heatgrid)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2513. Reimplement sign_up_topic.rb as project_topic.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2506. Implement testing for new Bookmarks Controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2512. Reimplement responses controller (Phase 2)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics]]&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162793</id>
		<title>CSC/ECE 517 Spring 2025 - E2504. Mentor-meeting management</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162793"/>
		<updated>2025-03-25T03:49:31Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
Previously, mentors had to be manually assigned by reviewing team formations, a process that required frequent monitoring and manual intervention. The implementation of automatic mentor assignment significantly reduced this workload.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The mentor assignment system was introduced in 2023 to streamline the process of assigning mentors to teams within Expertiza, an open-source course management platform designed for collaborative learning in large Object-Oriented Programming assignments. The primary focus of this project is to enhance the mentor management system. Within Expertiza, mentors can be assigned to teams either manually or automatically. Automatic assignment is triggered when a team reaches more than 50% of its capacity.&lt;br /&gt;
&lt;br /&gt;
== Challenges ==&lt;br /&gt;
&lt;br /&gt;
* While the system successfully assigns mentors automatically, there is no functionality to notify teams and mentors via email when an assignment is made&lt;br /&gt;
** This feature needs to be implemented to ensure clear communication.&lt;br /&gt;
&lt;br /&gt;
* The only available team listing is on the &amp;quot;Create Teams&amp;quot; page, where team members are displayed on separate lines, and mentors appear in an arbitrary position within the team structure.&lt;br /&gt;
** Improvements are needed to enhance clarity and usability in mentor assignment tracking.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
Create a way that notifies participants and mentors, by email, of when they have been assigned to a team.&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
Dr. Gehringer expressed to us that the current view of mentor meetings took up too much space and proposed to us a mockup of how he would like the view to look, which can be seen below.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:MentorMeetingViewMockup.png|thumb|1000px|Mentor Meeting View Mockup]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
Implement a new controller to handle Create, Read, Update, Delete (CRUD) operations for mentor meetings. Update models to manage mentor meetings and trigger notifications.&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
Streamline logic for adding users/mentors and sending notifications. Refactor view code to improve readability and reusability.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
Ensure all features, including notifications and meeting management, are thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
The Email Notification methods experienced a change to support SOLID Principles. Before, the code was not supporting the Single-Responsibility Principle, but now we have separated the parts of the 'add_member' method apart of the Team model. The current switch allows for an easier readability and understanding of code, while also following the SOLID Principles. &lt;br /&gt;
&lt;br /&gt;
[[File:Mentor_meetings_email_notification.png]]&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
The teams table for mentor meeting management was significantly enhanced with dynamic column manipulation, allowing users to add and remove meeting columns while preventing conflicts with scheduled meetings. Individual meeting deletion and improved reliability were implemented, along with a refactored meeting date display and input for better user experience. The table structure was optimized, incorporating editable meeting fields with a save feature, dynamic updates based on filter selections, and an actions column. To streamline column management, dropdowns were replaced with header buttons, a maximum of five meeting columns was enforced, and dynamic rendering was implemented based on participant data. The mentor logic and date column naming were corrected for clarity, and a destroy route for team meetings was added, ensuring a more efficient and user-friendly team management experience.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Screenshot_2025-03-23_164914.png|thumb|1000px|Screenshot of the Mentor Meeting Management System within the teams table]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
The backend for mentor meeting management underwent significant restructuring to improve efficiency and maintainability. A dedicated destroy route for team meetings was implemented, along with a revised deletion process. The logic for determining mentored teams and displayed teams for mentors was refined, and the meetings table was refactored to utilize the Participants class, establishing a database relationship between mentored teams and meetings. The meetings-related logic was moved from the teams controller to a newly implemented meetings controller, which includes a filter function. An instructor table was added in paginated form, and meeting routes were standardized. The meetings controller was further enhanced with CSS styling and instance variable reorganization, culminating in the integration of @meetings into the Teams Controller model.&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
 #POST /meetings&lt;br /&gt;
  def create&lt;br /&gt;
    @team = Team.find(params[:team_id])&lt;br /&gt;
    @meeting = @team.meetings.new(meeting_params)&lt;br /&gt;
    if @meeting.save&lt;br /&gt;
      # TODO: Re-implement email notification for meeting creation&lt;br /&gt;
      render json: { status: 'success', message: 'Meeting date added' }, status: :created&lt;br /&gt;
    else&lt;br /&gt;
      render json: { status: 'error', message: 'Unable to add meeting date', errors: @meeting.errors.full_messages }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 #DELETE /meetings/:id&lt;br /&gt;
  def destroy&lt;br /&gt;
    puts &amp;quot;Team ID: #{params[:team_id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting ID: #{params[:id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting: #{@meeting.inspect}&amp;quot;&lt;br /&gt;
    if @meeting.destroy&lt;br /&gt;
      render json: { message: 'Meeting deleted successfully' }, status: :ok&lt;br /&gt;
    else&lt;br /&gt;
      render json: { error: 'Failed to delete meeting' }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  resources :teams, only: %i[new create edit update] do&lt;br /&gt;
    collection do&lt;br /&gt;
      get :list&lt;br /&gt;
      post :create_teams&lt;br /&gt;
      post :inherit&lt;br /&gt;
      get :delete&lt;br /&gt;
      get :delete_all&lt;br /&gt;
      get :bequeath_all&lt;br /&gt;
    end&lt;br /&gt;
    resources :meetings, only: %i[create destroy]&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
This set of backend and frontend changes focuses on code cleanup, standardization, and compatibility improvements. Unnecessary whitespace was removed, and the database column &amp;quot;date&amp;quot; was renamed to &amp;quot;meeting_date&amp;quot; for clarity. The &amp;quot;get_dates&amp;quot; function was refactored to ensure compatibility with older Ruby versions. Table column names were converted to snake_case to adhere to Ruby naming conventions, and rendering partials were removed to resolve Turbo issues. Finally, an initial refactoring session was conducted with a Large Language Model (LLM) to further refine the code.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
We have added tests for the teams controller, mailer model, and meetings controller that can be seen below.&lt;br /&gt;
&lt;br /&gt;
[[File:Project2504MailerSpec.png]]&lt;br /&gt;
[[File:Project2504TeamSpec.png]]&lt;br /&gt;
[[File:Project2504ControllerSpec.png]]&lt;br /&gt;
&lt;br /&gt;
With this, our implementations are covered and tested.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
*Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
&lt;br /&gt;
    Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
&lt;br /&gt;
    Jacob Winters&lt;br /&gt;
    Alex Wakefield&lt;br /&gt;
    John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Project2504ControllerSpec.png&amp;diff=162792</id>
		<title>File:Project2504ControllerSpec.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Project2504ControllerSpec.png&amp;diff=162792"/>
		<updated>2025-03-25T03:49:02Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162664</id>
		<title>CSC/ECE 517 Spring 2025 - E2504. Mentor-meeting management</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162664"/>
		<updated>2025-03-25T02:21:59Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Testing and Validation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
Previously, mentors had to be manually assigned by reviewing team formations, a process that required frequent monitoring and manual intervention. The implementation of automatic mentor assignment significantly reduced this workload.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The mentor assignment system was introduced in 2023 to streamline the process of assigning mentors to teams within Expertiza, an open-source course management platform designed for collaborative learning in large Object-Oriented Programming assignments. The primary focus of this project is to enhance the mentor management system. Within Expertiza, mentors can be assigned to teams either manually or automatically. Automatic assignment is triggered when a team reaches more than 50% of its capacity.&lt;br /&gt;
&lt;br /&gt;
== Challenges ==&lt;br /&gt;
&lt;br /&gt;
* While the system successfully assigns mentors automatically, there is no functionality to notify teams and mentors via email when an assignment is made&lt;br /&gt;
** This feature needs to be implemented to ensure clear communication.&lt;br /&gt;
&lt;br /&gt;
* The only available team listing is on the &amp;quot;Create Teams&amp;quot; page, where team members are displayed on separate lines, and mentors appear in an arbitrary position within the team structure.&lt;br /&gt;
** Improvements are needed to enhance clarity and usability in mentor assignment tracking.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
Create a way that notifies participants and mentors, by email, of when they have been assigned to a team.&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
Dr. Gehringer expressed to us that the current view of mentor meetings took up too much space and proposed to us a mockup of how he would like the view to look, which can be seen below.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:MentorMeetingViewMockup.png|thumb|1000px|Mentor Meeting View Mockup]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
Implement a new controller to handle Create, Read, Update, Delete (CRUD) operations for mentor meetings. Update models to manage mentor meetings and trigger notifications.&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
Streamline logic for adding users/mentors and sending notifications. Refactor view code to improve readability and reusability.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
Ensure all features, including notifications and meeting management, are thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
The Email Notification methods experienced a change to support SOLID Principles. Before, the code was not supporting the Single-Responsibility Principle, but now we have separated the parts of the 'add_member' method apart of the Team model. The current switch allows for an easier readability and understanding of code, while also following the SOLID Principles. &lt;br /&gt;
&lt;br /&gt;
[[File:Mentor_meetings_email_notification.png]]&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
The teams table for mentor meeting management was significantly enhanced with dynamic column manipulation, allowing users to add and remove meeting columns while preventing conflicts with scheduled meetings. Individual meeting deletion and improved reliability were implemented, along with a refactored meeting date display and input for better user experience. The table structure was optimized, incorporating editable meeting fields with a save feature, dynamic updates based on filter selections, and an actions column. To streamline column management, dropdowns were replaced with header buttons, a maximum of five meeting columns was enforced, and dynamic rendering was implemented based on participant data. The mentor logic and date column naming were corrected for clarity, and a destroy route for team meetings was added, ensuring a more efficient and user-friendly team management experience.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Screenshot_2025-03-23_164914.png|thumb|1000px|Screenshot of the Mentor Meeting Management System within the teams table]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
The backend for mentor meeting management underwent significant restructuring to improve efficiency and maintainability. A dedicated destroy route for team meetings was implemented, along with a revised deletion process. The logic for determining mentored teams and displayed teams for mentors was refined, and the meetings table was refactored to utilize the Participants class, establishing a database relationship between mentored teams and meetings. The meetings-related logic was moved from the teams controller to a newly implemented meetings controller, which includes a filter function. An instructor table was added in paginated form, and meeting routes were standardized. The meetings controller was further enhanced with CSS styling and instance variable reorganization, culminating in the integration of @meetings into the Teams Controller model.&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
 #POST /meetings&lt;br /&gt;
  def create&lt;br /&gt;
    @team = Team.find(params[:team_id])&lt;br /&gt;
    @meeting = @team.meetings.new(meeting_params)&lt;br /&gt;
    if @meeting.save&lt;br /&gt;
      # TODO: Re-implement email notification for meeting creation&lt;br /&gt;
      render json: { status: 'success', message: 'Meeting date added' }, status: :created&lt;br /&gt;
    else&lt;br /&gt;
      render json: { status: 'error', message: 'Unable to add meeting date', errors: @meeting.errors.full_messages }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 #DELETE /meetings/:id&lt;br /&gt;
  def destroy&lt;br /&gt;
    puts &amp;quot;Team ID: #{params[:team_id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting ID: #{params[:id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting: #{@meeting.inspect}&amp;quot;&lt;br /&gt;
    if @meeting.destroy&lt;br /&gt;
      render json: { message: 'Meeting deleted successfully' }, status: :ok&lt;br /&gt;
    else&lt;br /&gt;
      render json: { error: 'Failed to delete meeting' }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  resources :teams, only: %i[new create edit update] do&lt;br /&gt;
    collection do&lt;br /&gt;
      get :list&lt;br /&gt;
      post :create_teams&lt;br /&gt;
      post :inherit&lt;br /&gt;
      get :delete&lt;br /&gt;
      get :delete_all&lt;br /&gt;
      get :bequeath_all&lt;br /&gt;
    end&lt;br /&gt;
    resources :meetings, only: %i[create destroy]&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
This set of backend and frontend changes focuses on code cleanup, standardization, and compatibility improvements. Unnecessary whitespace was removed, and the database column &amp;quot;date&amp;quot; was renamed to &amp;quot;meeting_date&amp;quot; for clarity. The &amp;quot;get_dates&amp;quot; function was refactored to ensure compatibility with older Ruby versions. Table column names were converted to snake_case to adhere to Ruby naming conventions, and rendering partials were removed to resolve Turbo issues. Finally, an initial refactoring session was conducted with a Large Language Model (LLM) to further refine the code.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
We have added tests for the teams controller, mailer model, and meetings controller that can be seen below.&lt;br /&gt;
&lt;br /&gt;
[[File:Project2504MailerSpec.png]]&lt;br /&gt;
[[File:Project2504TeamSpec.png]]&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
*Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
&lt;br /&gt;
    Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
&lt;br /&gt;
    Jacob Winters&lt;br /&gt;
    Alex Wakefield&lt;br /&gt;
    John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162663</id>
		<title>CSC/ECE 517 Spring 2025 - E2504. Mentor-meeting management</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162663"/>
		<updated>2025-03-25T02:21:46Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
Previously, mentors had to be manually assigned by reviewing team formations, a process that required frequent monitoring and manual intervention. The implementation of automatic mentor assignment significantly reduced this workload.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The mentor assignment system was introduced in 2023 to streamline the process of assigning mentors to teams within Expertiza, an open-source course management platform designed for collaborative learning in large Object-Oriented Programming assignments. The primary focus of this project is to enhance the mentor management system. Within Expertiza, mentors can be assigned to teams either manually or automatically. Automatic assignment is triggered when a team reaches more than 50% of its capacity.&lt;br /&gt;
&lt;br /&gt;
== Challenges ==&lt;br /&gt;
&lt;br /&gt;
* While the system successfully assigns mentors automatically, there is no functionality to notify teams and mentors via email when an assignment is made&lt;br /&gt;
** This feature needs to be implemented to ensure clear communication.&lt;br /&gt;
&lt;br /&gt;
* The only available team listing is on the &amp;quot;Create Teams&amp;quot; page, where team members are displayed on separate lines, and mentors appear in an arbitrary position within the team structure.&lt;br /&gt;
** Improvements are needed to enhance clarity and usability in mentor assignment tracking.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
Create a way that notifies participants and mentors, by email, of when they have been assigned to a team.&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
Dr. Gehringer expressed to us that the current view of mentor meetings took up too much space and proposed to us a mockup of how he would like the view to look, which can be seen below.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:MentorMeetingViewMockup.png|thumb|1000px|Mentor Meeting View Mockup]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
Implement a new controller to handle Create, Read, Update, Delete (CRUD) operations for mentor meetings. Update models to manage mentor meetings and trigger notifications.&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
Streamline logic for adding users/mentors and sending notifications. Refactor view code to improve readability and reusability.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
Ensure all features, including notifications and meeting management, are thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
The Email Notification methods experienced a change to support SOLID Principles. Before, the code was not supporting the Single-Responsibility Principle, but now we have separated the parts of the 'add_member' method apart of the Team model. The current switch allows for an easier readability and understanding of code, while also following the SOLID Principles. &lt;br /&gt;
&lt;br /&gt;
[[File:Mentor_meetings_email_notification.png]]&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
The teams table for mentor meeting management was significantly enhanced with dynamic column manipulation, allowing users to add and remove meeting columns while preventing conflicts with scheduled meetings. Individual meeting deletion and improved reliability were implemented, along with a refactored meeting date display and input for better user experience. The table structure was optimized, incorporating editable meeting fields with a save feature, dynamic updates based on filter selections, and an actions column. To streamline column management, dropdowns were replaced with header buttons, a maximum of five meeting columns was enforced, and dynamic rendering was implemented based on participant data. The mentor logic and date column naming were corrected for clarity, and a destroy route for team meetings was added, ensuring a more efficient and user-friendly team management experience.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Screenshot_2025-03-23_164914.png|thumb|1000px|Screenshot of the Mentor Meeting Management System within the teams table]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
The backend for mentor meeting management underwent significant restructuring to improve efficiency and maintainability. A dedicated destroy route for team meetings was implemented, along with a revised deletion process. The logic for determining mentored teams and displayed teams for mentors was refined, and the meetings table was refactored to utilize the Participants class, establishing a database relationship between mentored teams and meetings. The meetings-related logic was moved from the teams controller to a newly implemented meetings controller, which includes a filter function. An instructor table was added in paginated form, and meeting routes were standardized. The meetings controller was further enhanced with CSS styling and instance variable reorganization, culminating in the integration of @meetings into the Teams Controller model.&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
 #POST /meetings&lt;br /&gt;
  def create&lt;br /&gt;
    @team = Team.find(params[:team_id])&lt;br /&gt;
    @meeting = @team.meetings.new(meeting_params)&lt;br /&gt;
    if @meeting.save&lt;br /&gt;
      # TODO: Re-implement email notification for meeting creation&lt;br /&gt;
      render json: { status: 'success', message: 'Meeting date added' }, status: :created&lt;br /&gt;
    else&lt;br /&gt;
      render json: { status: 'error', message: 'Unable to add meeting date', errors: @meeting.errors.full_messages }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 #DELETE /meetings/:id&lt;br /&gt;
  def destroy&lt;br /&gt;
    puts &amp;quot;Team ID: #{params[:team_id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting ID: #{params[:id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting: #{@meeting.inspect}&amp;quot;&lt;br /&gt;
    if @meeting.destroy&lt;br /&gt;
      render json: { message: 'Meeting deleted successfully' }, status: :ok&lt;br /&gt;
    else&lt;br /&gt;
      render json: { error: 'Failed to delete meeting' }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  resources :teams, only: %i[new create edit update] do&lt;br /&gt;
    collection do&lt;br /&gt;
      get :list&lt;br /&gt;
      post :create_teams&lt;br /&gt;
      post :inherit&lt;br /&gt;
      get :delete&lt;br /&gt;
      get :delete_all&lt;br /&gt;
      get :bequeath_all&lt;br /&gt;
    end&lt;br /&gt;
    resources :meetings, only: %i[create destroy]&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
This set of backend and frontend changes focuses on code cleanup, standardization, and compatibility improvements. Unnecessary whitespace was removed, and the database column &amp;quot;date&amp;quot; was renamed to &amp;quot;meeting_date&amp;quot; for clarity. The &amp;quot;get_dates&amp;quot; function was refactored to ensure compatibility with older Ruby versions. Table column names were converted to snake_case to adhere to Ruby naming conventions, and rendering partials were removed to resolve Turbo issues. Finally, an initial refactoring session was conducted with a Large Language Model (LLM) to further refine the code.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
We have added tests for the teams controller, mailer model, and meetings controller that can be seen below.&lt;br /&gt;
[[File:Project2504MailerSpec.png]]&lt;br /&gt;
[[File:Project2504TeamsSpec.png]]&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
*Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
&lt;br /&gt;
    Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
&lt;br /&gt;
    Jacob Winters&lt;br /&gt;
    Alex Wakefield&lt;br /&gt;
    John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Project2504TeamSpec.png&amp;diff=162662</id>
		<title>File:Project2504TeamSpec.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Project2504TeamSpec.png&amp;diff=162662"/>
		<updated>2025-03-25T02:20:48Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Project2504MailerSpec.png&amp;diff=162661</id>
		<title>File:Project2504MailerSpec.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Project2504MailerSpec.png&amp;diff=162661"/>
		<updated>2025-03-25T02:20:11Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: Mailer Spec&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Mailer Spec&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162660</id>
		<title>CSC/ECE 517 Spring 2025 - E2504. Mentor-meeting management</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162660"/>
		<updated>2025-03-25T02:19:25Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Testing and Validation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
Previously, mentors had to be manually assigned by reviewing team formations, a process that required frequent monitoring and manual intervention. The implementation of automatic mentor assignment significantly reduced this workload.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The mentor assignment system was introduced in 2023 to streamline the process of assigning mentors to teams within Expertiza, an open-source course management platform designed for collaborative learning in large Object-Oriented Programming assignments. The primary focus of this project is to enhance the mentor management system. Within Expertiza, mentors can be assigned to teams either manually or automatically. Automatic assignment is triggered when a team reaches more than 50% of its capacity.&lt;br /&gt;
&lt;br /&gt;
== Challenges ==&lt;br /&gt;
&lt;br /&gt;
* While the system successfully assigns mentors automatically, there is no functionality to notify teams and mentors via email when an assignment is made&lt;br /&gt;
** This feature needs to be implemented to ensure clear communication.&lt;br /&gt;
&lt;br /&gt;
* The only available team listing is on the &amp;quot;Create Teams&amp;quot; page, where team members are displayed on separate lines, and mentors appear in an arbitrary position within the team structure.&lt;br /&gt;
** Improvements are needed to enhance clarity and usability in mentor assignment tracking.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
Create a way that notifies participants and mentors, by email, of when they have been assigned to a team.&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
Dr. Gehringer expressed to us that the current view of mentor meetings took up too much space and proposed to us a mockup of how he would like the view to look, which can be seen below.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:MentorMeetingViewMockup.png|thumb|1000px|Mentor Meeting View Mockup]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
Implement a new controller to handle Create, Read, Update, Delete (CRUD) operations for mentor meetings. Update models to manage mentor meetings and trigger notifications.&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
Streamline logic for adding users/mentors and sending notifications. Refactor view code to improve readability and reusability.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
Ensure all features, including notifications and meeting management, are thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
The Email Notification methods experienced a change to support SOLID Principles. Before, the code was not supporting the Single-Responsibility Principle, but now we have separated the parts of the 'add_member' method apart of the Team model. The current switch allows for an easier readability and understanding of code, while also following the SOLID Principles. &lt;br /&gt;
&lt;br /&gt;
[[File:Mentor_meetings_email_notification.png]]&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
The teams table for mentor meeting management was significantly enhanced with dynamic column manipulation, allowing users to add and remove meeting columns while preventing conflicts with scheduled meetings. Individual meeting deletion and improved reliability were implemented, along with a refactored meeting date display and input for better user experience. The table structure was optimized, incorporating editable meeting fields with a save feature, dynamic updates based on filter selections, and an actions column. To streamline column management, dropdowns were replaced with header buttons, a maximum of five meeting columns was enforced, and dynamic rendering was implemented based on participant data. The mentor logic and date column naming were corrected for clarity, and a destroy route for team meetings was added, ensuring a more efficient and user-friendly team management experience.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Screenshot_2025-03-23_164914.png|thumb|1000px|Screenshot of the Mentor Meeting Management System within the teams table]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
The backend for mentor meeting management underwent significant restructuring to improve efficiency and maintainability. A dedicated destroy route for team meetings was implemented, along with a revised deletion process. The logic for determining mentored teams and displayed teams for mentors was refined, and the meetings table was refactored to utilize the Participants class, establishing a database relationship between mentored teams and meetings. The meetings-related logic was moved from the teams controller to a newly implemented meetings controller, which includes a filter function. An instructor table was added in paginated form, and meeting routes were standardized. The meetings controller was further enhanced with CSS styling and instance variable reorganization, culminating in the integration of @meetings into the Teams Controller model.&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
 #POST /meetings&lt;br /&gt;
  def create&lt;br /&gt;
    @team = Team.find(params[:team_id])&lt;br /&gt;
    @meeting = @team.meetings.new(meeting_params)&lt;br /&gt;
    if @meeting.save&lt;br /&gt;
      # TODO: Re-implement email notification for meeting creation&lt;br /&gt;
      render json: { status: 'success', message: 'Meeting date added' }, status: :created&lt;br /&gt;
    else&lt;br /&gt;
      render json: { status: 'error', message: 'Unable to add meeting date', errors: @meeting.errors.full_messages }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 #DELETE /meetings/:id&lt;br /&gt;
  def destroy&lt;br /&gt;
    puts &amp;quot;Team ID: #{params[:team_id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting ID: #{params[:id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting: #{@meeting.inspect}&amp;quot;&lt;br /&gt;
    if @meeting.destroy&lt;br /&gt;
      render json: { message: 'Meeting deleted successfully' }, status: :ok&lt;br /&gt;
    else&lt;br /&gt;
      render json: { error: 'Failed to delete meeting' }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  resources :teams, only: %i[new create edit update] do&lt;br /&gt;
    collection do&lt;br /&gt;
      get :list&lt;br /&gt;
      post :create_teams&lt;br /&gt;
      post :inherit&lt;br /&gt;
      get :delete&lt;br /&gt;
      get :delete_all&lt;br /&gt;
      get :bequeath_all&lt;br /&gt;
    end&lt;br /&gt;
    resources :meetings, only: %i[create destroy]&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
This set of backend and frontend changes focuses on code cleanup, standardization, and compatibility improvements. Unnecessary whitespace was removed, and the database column &amp;quot;date&amp;quot; was renamed to &amp;quot;meeting_date&amp;quot; for clarity. The &amp;quot;get_dates&amp;quot; function was refactored to ensure compatibility with older Ruby versions. Table column names were converted to snake_case to adhere to Ruby naming conventions, and rendering partials were removed to resolve Turbo issues. Finally, an initial refactoring session was conducted with a Large Language Model (LLM) to further refine the code.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
We have added tests for the teams controller, mailer model, and meetings controller that can be seen below.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
*Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
&lt;br /&gt;
    Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
&lt;br /&gt;
    Jacob Winters&lt;br /&gt;
    Alex Wakefield&lt;br /&gt;
    John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162096</id>
		<title>CSC/ECE 517 Spring 2025 - E2504. Mentor-meeting management</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162096"/>
		<updated>2025-03-23T21:22:22Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Email Notifications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
Previously, mentors had to be manually assigned by reviewing team formations, a process that required frequent monitoring and manual intervention. The implementation of automatic mentor assignment significantly reduced this workload.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The mentor assignment system was introduced in 2023 to streamline the process of assigning mentors to teams within Expertiza, an open-source course management platform designed for collaborative learning in large Object-Oriented Programming assignments. The primary focus of this project is to enhance the mentor management system. Within Expertiza, mentors can be assigned to teams either manually or automatically. Automatic assignment is triggered when a team reaches more than 50% of its capacity.&lt;br /&gt;
&lt;br /&gt;
== Challenges ==&lt;br /&gt;
&lt;br /&gt;
* While the system successfully assigns mentors automatically, there is no functionality to notify teams and mentors via email when an assignment is made&lt;br /&gt;
** This feature needs to be implemented to ensure clear communication.&lt;br /&gt;
&lt;br /&gt;
* The only available team listing is on the &amp;quot;Create Teams&amp;quot; page, where team members are displayed on separate lines, and mentors appear in an arbitrary position within the team structure.&lt;br /&gt;
** Improvements are needed to enhance clarity and usability in mentor assignment tracking.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
Create a way that notifies participants and mentors, by email, of when they have been assigned to a team.&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
Dr. Gehringer expressed to us that the current view of mentor meetings took up too much space and proposed to us a mockup of how he would like the view to look, which can be seen below.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:MentorMeetingViewMockup.png|thumb|1000px|Mentor Meeting View Mockup]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
Implement a new controller to handle Create, Read, Update, Delete (CRUD) operations for mentor meetings. Update models to manage mentor meetings and trigger notifications.&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
Streamline logic for adding users/mentors and sending notifications. Refactor view code to improve readability and reusability.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
Ensure all features, including notifications and meeting management, are thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
The Email Notification methods experienced a change to support SOLID Principles. Before, the code was not supporting the Single-Responsibility Principle, but now we have separated the parts of the 'add_member' method apart of the Team model. The current switch allows for an easier readability and understanding of code, while also following the SOLID Principles. &lt;br /&gt;
&lt;br /&gt;
[[File:Mentor_meetings_email_notification.png]]&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
The teams table for mentor meeting management was significantly enhanced with dynamic column manipulation, allowing users to add and remove meeting columns while preventing conflicts with scheduled meetings. Individual meeting deletion and improved reliability were implemented, along with a refactored meeting date display and input for better user experience. The table structure was optimized, incorporating editable meeting fields with a save feature, dynamic updates based on filter selections, and an actions column. To streamline column management, dropdowns were replaced with header buttons, a maximum of five meeting columns was enforced, and dynamic rendering was implemented based on participant data. The mentor logic and date column naming were corrected for clarity, and a destroy route for team meetings was added, ensuring a more efficient and user-friendly team management experience.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Screenshot_2025-03-23_164914.png|thumb|1000px|Screenshot of the Mentor Meeting Management System within the teams table]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
The backend for mentor meeting management underwent significant restructuring to improve efficiency and maintainability. A dedicated destroy route for team meetings was implemented, along with a revised deletion process. The logic for determining mentored teams and displayed teams for mentors was refined, and the meetings table was refactored to utilize the Participants class, establishing a database relationship between mentored teams and meetings. The meetings-related logic was moved from the teams controller to a newly implemented meetings controller, which includes a filter function. An instructor table was added in paginated form, and meeting routes were standardized. The meetings controller was further enhanced with CSS styling and instance variable reorganization, culminating in the integration of @meetings into the Teams Controller model.&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
 #POST /meetings&lt;br /&gt;
  def create&lt;br /&gt;
    @team = Team.find(params[:team_id])&lt;br /&gt;
    @meeting = @team.meetings.new(meeting_params)&lt;br /&gt;
    if @meeting.save&lt;br /&gt;
      # TODO: Re-implement email notification for meeting creation&lt;br /&gt;
      render json: { status: 'success', message: 'Meeting date added' }, status: :created&lt;br /&gt;
    else&lt;br /&gt;
      render json: { status: 'error', message: 'Unable to add meeting date', errors: @meeting.errors.full_messages }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 #DELETE /meetings/:id&lt;br /&gt;
  def destroy&lt;br /&gt;
    puts &amp;quot;Team ID: #{params[:team_id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting ID: #{params[:id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting: #{@meeting.inspect}&amp;quot;&lt;br /&gt;
    if @meeting.destroy&lt;br /&gt;
      render json: { message: 'Meeting deleted successfully' }, status: :ok&lt;br /&gt;
    else&lt;br /&gt;
      render json: { error: 'Failed to delete meeting' }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  resources :teams, only: %i[new create edit update] do&lt;br /&gt;
    collection do&lt;br /&gt;
      get :list&lt;br /&gt;
      post :create_teams&lt;br /&gt;
      post :inherit&lt;br /&gt;
      get :delete&lt;br /&gt;
      get :delete_all&lt;br /&gt;
      get :bequeath_all&lt;br /&gt;
    end&lt;br /&gt;
    resources :meetings, only: %i[create destroy]&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
This set of backend and frontend changes focuses on code cleanup, standardization, and compatibility improvements. Unnecessary whitespace was removed, and the database column &amp;quot;date&amp;quot; was renamed to &amp;quot;meeting_date&amp;quot; for clarity. The &amp;quot;get_dates&amp;quot; function was refactored to ensure compatibility with older Ruby versions. Table column names were converted to snake_case to adhere to Ruby naming conventions, and rendering partials were removed to resolve Turbo issues. Finally, an initial refactoring session was conducted with a Large Language Model (LLM) to further refine the code.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
*Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
&lt;br /&gt;
    Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
&lt;br /&gt;
    Jacob Winters&lt;br /&gt;
    Alex Wakefield&lt;br /&gt;
    John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162095</id>
		<title>CSC/ECE 517 Spring 2025 - E2504. Mentor-meeting management</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162095"/>
		<updated>2025-03-23T21:22:05Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Email Notifications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
Previously, mentors had to be manually assigned by reviewing team formations, a process that required frequent monitoring and manual intervention. The implementation of automatic mentor assignment significantly reduced this workload.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The mentor assignment system was introduced in 2023 to streamline the process of assigning mentors to teams within Expertiza, an open-source course management platform designed for collaborative learning in large Object-Oriented Programming assignments. The primary focus of this project is to enhance the mentor management system. Within Expertiza, mentors can be assigned to teams either manually or automatically. Automatic assignment is triggered when a team reaches more than 50% of its capacity.&lt;br /&gt;
&lt;br /&gt;
== Challenges ==&lt;br /&gt;
&lt;br /&gt;
* While the system successfully assigns mentors automatically, there is no functionality to notify teams and mentors via email when an assignment is made&lt;br /&gt;
** This feature needs to be implemented to ensure clear communication.&lt;br /&gt;
&lt;br /&gt;
* The only available team listing is on the &amp;quot;Create Teams&amp;quot; page, where team members are displayed on separate lines, and mentors appear in an arbitrary position within the team structure.&lt;br /&gt;
** Improvements are needed to enhance clarity and usability in mentor assignment tracking.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
Create a way that notifies participants and mentors, by email, of when they have been assigned to a team.&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
Dr. Gehringer expressed to us that the current view of mentor meetings took up too much space and proposed to us a mockup of how he would like the view to look, which can be seen below.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:MentorMeetingViewMockup.png|thumb|1000px|Mentor Meeting View Mockup]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
Implement a new controller to handle Create, Read, Update, Delete (CRUD) operations for mentor meetings. Update models to manage mentor meetings and trigger notifications.&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
Streamline logic for adding users/mentors and sending notifications. Refactor view code to improve readability and reusability.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
Ensure all features, including notifications and meeting management, are thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
The Email Notification methods experienced a change to support SOLID Principles. Before, the code was not supporting the Single-Responsibility Principle, but now we have separated the parts of the 'add_member' method apart of the Team model. The current switch allows for an easier readability and understanding of code, while also following the SOLID Principles. &lt;br /&gt;
&lt;br /&gt;
[[File:Mentor_meetings_email_notification.png|thumb|750px|Screenshot of the Email Notification logic]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
The teams table for mentor meeting management was significantly enhanced with dynamic column manipulation, allowing users to add and remove meeting columns while preventing conflicts with scheduled meetings. Individual meeting deletion and improved reliability were implemented, along with a refactored meeting date display and input for better user experience. The table structure was optimized, incorporating editable meeting fields with a save feature, dynamic updates based on filter selections, and an actions column. To streamline column management, dropdowns were replaced with header buttons, a maximum of five meeting columns was enforced, and dynamic rendering was implemented based on participant data. The mentor logic and date column naming were corrected for clarity, and a destroy route for team meetings was added, ensuring a more efficient and user-friendly team management experience.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Screenshot_2025-03-23_164914.png|thumb|1000px|Screenshot of the Mentor Meeting Management System within the teams table]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
The backend for mentor meeting management underwent significant restructuring to improve efficiency and maintainability. A dedicated destroy route for team meetings was implemented, along with a revised deletion process. The logic for determining mentored teams and displayed teams for mentors was refined, and the meetings table was refactored to utilize the Participants class, establishing a database relationship between mentored teams and meetings. The meetings-related logic was moved from the teams controller to a newly implemented meetings controller, which includes a filter function. An instructor table was added in paginated form, and meeting routes were standardized. The meetings controller was further enhanced with CSS styling and instance variable reorganization, culminating in the integration of @meetings into the Teams Controller model.&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
 #POST /meetings&lt;br /&gt;
  def create&lt;br /&gt;
    @team = Team.find(params[:team_id])&lt;br /&gt;
    @meeting = @team.meetings.new(meeting_params)&lt;br /&gt;
    if @meeting.save&lt;br /&gt;
      # TODO: Re-implement email notification for meeting creation&lt;br /&gt;
      render json: { status: 'success', message: 'Meeting date added' }, status: :created&lt;br /&gt;
    else&lt;br /&gt;
      render json: { status: 'error', message: 'Unable to add meeting date', errors: @meeting.errors.full_messages }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 #DELETE /meetings/:id&lt;br /&gt;
  def destroy&lt;br /&gt;
    puts &amp;quot;Team ID: #{params[:team_id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting ID: #{params[:id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting: #{@meeting.inspect}&amp;quot;&lt;br /&gt;
    if @meeting.destroy&lt;br /&gt;
      render json: { message: 'Meeting deleted successfully' }, status: :ok&lt;br /&gt;
    else&lt;br /&gt;
      render json: { error: 'Failed to delete meeting' }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  resources :teams, only: %i[new create edit update] do&lt;br /&gt;
    collection do&lt;br /&gt;
      get :list&lt;br /&gt;
      post :create_teams&lt;br /&gt;
      post :inherit&lt;br /&gt;
      get :delete&lt;br /&gt;
      get :delete_all&lt;br /&gt;
      get :bequeath_all&lt;br /&gt;
    end&lt;br /&gt;
    resources :meetings, only: %i[create destroy]&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
This set of backend and frontend changes focuses on code cleanup, standardization, and compatibility improvements. Unnecessary whitespace was removed, and the database column &amp;quot;date&amp;quot; was renamed to &amp;quot;meeting_date&amp;quot; for clarity. The &amp;quot;get_dates&amp;quot; function was refactored to ensure compatibility with older Ruby versions. Table column names were converted to snake_case to adhere to Ruby naming conventions, and rendering partials were removed to resolve Turbo issues. Finally, an initial refactoring session was conducted with a Large Language Model (LLM) to further refine the code.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
*Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
&lt;br /&gt;
    Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
&lt;br /&gt;
    Jacob Winters&lt;br /&gt;
    Alex Wakefield&lt;br /&gt;
    John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162094</id>
		<title>CSC/ECE 517 Spring 2025 - E2504. Mentor-meeting management</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162094"/>
		<updated>2025-03-23T21:21:54Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Email Notifications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
Previously, mentors had to be manually assigned by reviewing team formations, a process that required frequent monitoring and manual intervention. The implementation of automatic mentor assignment significantly reduced this workload.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The mentor assignment system was introduced in 2023 to streamline the process of assigning mentors to teams within Expertiza, an open-source course management platform designed for collaborative learning in large Object-Oriented Programming assignments. The primary focus of this project is to enhance the mentor management system. Within Expertiza, mentors can be assigned to teams either manually or automatically. Automatic assignment is triggered when a team reaches more than 50% of its capacity.&lt;br /&gt;
&lt;br /&gt;
== Challenges ==&lt;br /&gt;
&lt;br /&gt;
* While the system successfully assigns mentors automatically, there is no functionality to notify teams and mentors via email when an assignment is made&lt;br /&gt;
** This feature needs to be implemented to ensure clear communication.&lt;br /&gt;
&lt;br /&gt;
* The only available team listing is on the &amp;quot;Create Teams&amp;quot; page, where team members are displayed on separate lines, and mentors appear in an arbitrary position within the team structure.&lt;br /&gt;
** Improvements are needed to enhance clarity and usability in mentor assignment tracking.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
Create a way that notifies participants and mentors, by email, of when they have been assigned to a team.&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
Dr. Gehringer expressed to us that the current view of mentor meetings took up too much space and proposed to us a mockup of how he would like the view to look, which can be seen below.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:MentorMeetingViewMockup.png|thumb|1000px|Mentor Meeting View Mockup]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
Implement a new controller to handle Create, Read, Update, Delete (CRUD) operations for mentor meetings. Update models to manage mentor meetings and trigger notifications.&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
Streamline logic for adding users/mentors and sending notifications. Refactor view code to improve readability and reusability.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
Ensure all features, including notifications and meeting management, are thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
The Email Notification methods experienced a change to support SOLID Principles. Before, the code was not supporting the Single-Responsibility Principle, but now we have separated the parts of the 'add_member' method apart of the Team model. The current switch allows for an easier readability and understanding of code, while also following the SOLID Principles. &lt;br /&gt;
&lt;br /&gt;
[[File:Mentor_meetings_email_notification.png|thumb|500px|Screenshot of the Email Notification logic]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
The teams table for mentor meeting management was significantly enhanced with dynamic column manipulation, allowing users to add and remove meeting columns while preventing conflicts with scheduled meetings. Individual meeting deletion and improved reliability were implemented, along with a refactored meeting date display and input for better user experience. The table structure was optimized, incorporating editable meeting fields with a save feature, dynamic updates based on filter selections, and an actions column. To streamline column management, dropdowns were replaced with header buttons, a maximum of five meeting columns was enforced, and dynamic rendering was implemented based on participant data. The mentor logic and date column naming were corrected for clarity, and a destroy route for team meetings was added, ensuring a more efficient and user-friendly team management experience.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Screenshot_2025-03-23_164914.png|thumb|1000px|Screenshot of the Mentor Meeting Management System within the teams table]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
The backend for mentor meeting management underwent significant restructuring to improve efficiency and maintainability. A dedicated destroy route for team meetings was implemented, along with a revised deletion process. The logic for determining mentored teams and displayed teams for mentors was refined, and the meetings table was refactored to utilize the Participants class, establishing a database relationship between mentored teams and meetings. The meetings-related logic was moved from the teams controller to a newly implemented meetings controller, which includes a filter function. An instructor table was added in paginated form, and meeting routes were standardized. The meetings controller was further enhanced with CSS styling and instance variable reorganization, culminating in the integration of @meetings into the Teams Controller model.&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
 #POST /meetings&lt;br /&gt;
  def create&lt;br /&gt;
    @team = Team.find(params[:team_id])&lt;br /&gt;
    @meeting = @team.meetings.new(meeting_params)&lt;br /&gt;
    if @meeting.save&lt;br /&gt;
      # TODO: Re-implement email notification for meeting creation&lt;br /&gt;
      render json: { status: 'success', message: 'Meeting date added' }, status: :created&lt;br /&gt;
    else&lt;br /&gt;
      render json: { status: 'error', message: 'Unable to add meeting date', errors: @meeting.errors.full_messages }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 #DELETE /meetings/:id&lt;br /&gt;
  def destroy&lt;br /&gt;
    puts &amp;quot;Team ID: #{params[:team_id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting ID: #{params[:id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting: #{@meeting.inspect}&amp;quot;&lt;br /&gt;
    if @meeting.destroy&lt;br /&gt;
      render json: { message: 'Meeting deleted successfully' }, status: :ok&lt;br /&gt;
    else&lt;br /&gt;
      render json: { error: 'Failed to delete meeting' }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  resources :teams, only: %i[new create edit update] do&lt;br /&gt;
    collection do&lt;br /&gt;
      get :list&lt;br /&gt;
      post :create_teams&lt;br /&gt;
      post :inherit&lt;br /&gt;
      get :delete&lt;br /&gt;
      get :delete_all&lt;br /&gt;
      get :bequeath_all&lt;br /&gt;
    end&lt;br /&gt;
    resources :meetings, only: %i[create destroy]&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
This set of backend and frontend changes focuses on code cleanup, standardization, and compatibility improvements. Unnecessary whitespace was removed, and the database column &amp;quot;date&amp;quot; was renamed to &amp;quot;meeting_date&amp;quot; for clarity. The &amp;quot;get_dates&amp;quot; function was refactored to ensure compatibility with older Ruby versions. Table column names were converted to snake_case to adhere to Ruby naming conventions, and rendering partials were removed to resolve Turbo issues. Finally, an initial refactoring session was conducted with a Large Language Model (LLM) to further refine the code.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
*Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
&lt;br /&gt;
    Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
&lt;br /&gt;
    Jacob Winters&lt;br /&gt;
    Alex Wakefield&lt;br /&gt;
    John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162093</id>
		<title>CSC/ECE 517 Spring 2025 - E2504. Mentor-meeting management</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162093"/>
		<updated>2025-03-23T21:21:49Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Email Notifications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
Previously, mentors had to be manually assigned by reviewing team formations, a process that required frequent monitoring and manual intervention. The implementation of automatic mentor assignment significantly reduced this workload.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The mentor assignment system was introduced in 2023 to streamline the process of assigning mentors to teams within Expertiza, an open-source course management platform designed for collaborative learning in large Object-Oriented Programming assignments. The primary focus of this project is to enhance the mentor management system. Within Expertiza, mentors can be assigned to teams either manually or automatically. Automatic assignment is triggered when a team reaches more than 50% of its capacity.&lt;br /&gt;
&lt;br /&gt;
== Challenges ==&lt;br /&gt;
&lt;br /&gt;
* While the system successfully assigns mentors automatically, there is no functionality to notify teams and mentors via email when an assignment is made&lt;br /&gt;
** This feature needs to be implemented to ensure clear communication.&lt;br /&gt;
&lt;br /&gt;
* The only available team listing is on the &amp;quot;Create Teams&amp;quot; page, where team members are displayed on separate lines, and mentors appear in an arbitrary position within the team structure.&lt;br /&gt;
** Improvements are needed to enhance clarity and usability in mentor assignment tracking.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
Create a way that notifies participants and mentors, by email, of when they have been assigned to a team.&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
Dr. Gehringer expressed to us that the current view of mentor meetings took up too much space and proposed to us a mockup of how he would like the view to look, which can be seen below.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:MentorMeetingViewMockup.png|thumb|1000px|Mentor Meeting View Mockup]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
Implement a new controller to handle Create, Read, Update, Delete (CRUD) operations for mentor meetings. Update models to manage mentor meetings and trigger notifications.&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
Streamline logic for adding users/mentors and sending notifications. Refactor view code to improve readability and reusability.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
Ensure all features, including notifications and meeting management, are thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
The Email Notification methods experienced a change to support SOLID Principles. Before, the code was not supporting the Single-Responsibility Principle, but now we have separated the parts of the 'add_member' method apart of the Team model. The current switch allows for an easier readability and understanding of code, while also following the SOLID Principles. &lt;br /&gt;
&lt;br /&gt;
[[File:Mentor_meetings_email_notification.png|thumb|100px|Screenshot of the Email Notification logic]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
The teams table for mentor meeting management was significantly enhanced with dynamic column manipulation, allowing users to add and remove meeting columns while preventing conflicts with scheduled meetings. Individual meeting deletion and improved reliability were implemented, along with a refactored meeting date display and input for better user experience. The table structure was optimized, incorporating editable meeting fields with a save feature, dynamic updates based on filter selections, and an actions column. To streamline column management, dropdowns were replaced with header buttons, a maximum of five meeting columns was enforced, and dynamic rendering was implemented based on participant data. The mentor logic and date column naming were corrected for clarity, and a destroy route for team meetings was added, ensuring a more efficient and user-friendly team management experience.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Screenshot_2025-03-23_164914.png|thumb|1000px|Screenshot of the Mentor Meeting Management System within the teams table]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
The backend for mentor meeting management underwent significant restructuring to improve efficiency and maintainability. A dedicated destroy route for team meetings was implemented, along with a revised deletion process. The logic for determining mentored teams and displayed teams for mentors was refined, and the meetings table was refactored to utilize the Participants class, establishing a database relationship between mentored teams and meetings. The meetings-related logic was moved from the teams controller to a newly implemented meetings controller, which includes a filter function. An instructor table was added in paginated form, and meeting routes were standardized. The meetings controller was further enhanced with CSS styling and instance variable reorganization, culminating in the integration of @meetings into the Teams Controller model.&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
 #POST /meetings&lt;br /&gt;
  def create&lt;br /&gt;
    @team = Team.find(params[:team_id])&lt;br /&gt;
    @meeting = @team.meetings.new(meeting_params)&lt;br /&gt;
    if @meeting.save&lt;br /&gt;
      # TODO: Re-implement email notification for meeting creation&lt;br /&gt;
      render json: { status: 'success', message: 'Meeting date added' }, status: :created&lt;br /&gt;
    else&lt;br /&gt;
      render json: { status: 'error', message: 'Unable to add meeting date', errors: @meeting.errors.full_messages }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 #DELETE /meetings/:id&lt;br /&gt;
  def destroy&lt;br /&gt;
    puts &amp;quot;Team ID: #{params[:team_id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting ID: #{params[:id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting: #{@meeting.inspect}&amp;quot;&lt;br /&gt;
    if @meeting.destroy&lt;br /&gt;
      render json: { message: 'Meeting deleted successfully' }, status: :ok&lt;br /&gt;
    else&lt;br /&gt;
      render json: { error: 'Failed to delete meeting' }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  resources :teams, only: %i[new create edit update] do&lt;br /&gt;
    collection do&lt;br /&gt;
      get :list&lt;br /&gt;
      post :create_teams&lt;br /&gt;
      post :inherit&lt;br /&gt;
      get :delete&lt;br /&gt;
      get :delete_all&lt;br /&gt;
      get :bequeath_all&lt;br /&gt;
    end&lt;br /&gt;
    resources :meetings, only: %i[create destroy]&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
This set of backend and frontend changes focuses on code cleanup, standardization, and compatibility improvements. Unnecessary whitespace was removed, and the database column &amp;quot;date&amp;quot; was renamed to &amp;quot;meeting_date&amp;quot; for clarity. The &amp;quot;get_dates&amp;quot; function was refactored to ensure compatibility with older Ruby versions. Table column names were converted to snake_case to adhere to Ruby naming conventions, and rendering partials were removed to resolve Turbo issues. Finally, an initial refactoring session was conducted with a Large Language Model (LLM) to further refine the code.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
*Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
&lt;br /&gt;
    Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
&lt;br /&gt;
    Jacob Winters&lt;br /&gt;
    Alex Wakefield&lt;br /&gt;
    John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162092</id>
		<title>CSC/ECE 517 Spring 2025 - E2504. Mentor-meeting management</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162092"/>
		<updated>2025-03-23T21:20:42Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Testing and Validation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
Previously, mentors had to be manually assigned by reviewing team formations, a process that required frequent monitoring and manual intervention. The implementation of automatic mentor assignment significantly reduced this workload.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The mentor assignment system was introduced in 2023 to streamline the process of assigning mentors to teams within Expertiza, an open-source course management platform designed for collaborative learning in large Object-Oriented Programming assignments. The primary focus of this project is to enhance the mentor management system. Within Expertiza, mentors can be assigned to teams either manually or automatically. Automatic assignment is triggered when a team reaches more than 50% of its capacity.&lt;br /&gt;
&lt;br /&gt;
== Challenges ==&lt;br /&gt;
&lt;br /&gt;
* While the system successfully assigns mentors automatically, there is no functionality to notify teams and mentors via email when an assignment is made&lt;br /&gt;
** This feature needs to be implemented to ensure clear communication.&lt;br /&gt;
&lt;br /&gt;
* The only available team listing is on the &amp;quot;Create Teams&amp;quot; page, where team members are displayed on separate lines, and mentors appear in an arbitrary position within the team structure.&lt;br /&gt;
** Improvements are needed to enhance clarity and usability in mentor assignment tracking.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
Create a way that notifies participants and mentors, by email, of when they have been assigned to a team.&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
Dr. Gehringer expressed to us that the current view of mentor meetings took up too much space and proposed to us a mockup of how he would like the view to look, which can be seen below.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:MentorMeetingViewMockup.png|thumb|1000px|Mentor Meeting View Mockup]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
Implement a new controller to handle Create, Read, Update, Delete (CRUD) operations for mentor meetings. Update models to manage mentor meetings and trigger notifications.&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
Streamline logic for adding users/mentors and sending notifications. Refactor view code to improve readability and reusability.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
Ensure all features, including notifications and meeting management, are thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
The Email Notification methods experienced a change to support SOLID Principles. Before, the code was not supporting the Single-Responsibility Principle, but now we have separated the parts of the 'add_member' method apart of the Team model. The current switch allows for an easier readability and understanding of code, while also following the SOLID Principles. &lt;br /&gt;
&lt;br /&gt;
[[File:Mentor_meetings_email_notification.png]]&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
The teams table for mentor meeting management was significantly enhanced with dynamic column manipulation, allowing users to add and remove meeting columns while preventing conflicts with scheduled meetings. Individual meeting deletion and improved reliability were implemented, along with a refactored meeting date display and input for better user experience. The table structure was optimized, incorporating editable meeting fields with a save feature, dynamic updates based on filter selections, and an actions column. To streamline column management, dropdowns were replaced with header buttons, a maximum of five meeting columns was enforced, and dynamic rendering was implemented based on participant data. The mentor logic and date column naming were corrected for clarity, and a destroy route for team meetings was added, ensuring a more efficient and user-friendly team management experience.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Screenshot_2025-03-23_164914.png|thumb|1000px|Screenshot of the Mentor Meeting Management System within the teams table]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
The backend for mentor meeting management underwent significant restructuring to improve efficiency and maintainability. A dedicated destroy route for team meetings was implemented, along with a revised deletion process. The logic for determining mentored teams and displayed teams for mentors was refined, and the meetings table was refactored to utilize the Participants class, establishing a database relationship between mentored teams and meetings. The meetings-related logic was moved from the teams controller to a newly implemented meetings controller, which includes a filter function. An instructor table was added in paginated form, and meeting routes were standardized. The meetings controller was further enhanced with CSS styling and instance variable reorganization, culminating in the integration of @meetings into the Teams Controller model.&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
 #POST /meetings&lt;br /&gt;
  def create&lt;br /&gt;
    @team = Team.find(params[:team_id])&lt;br /&gt;
    @meeting = @team.meetings.new(meeting_params)&lt;br /&gt;
    if @meeting.save&lt;br /&gt;
      # TODO: Re-implement email notification for meeting creation&lt;br /&gt;
      render json: { status: 'success', message: 'Meeting date added' }, status: :created&lt;br /&gt;
    else&lt;br /&gt;
      render json: { status: 'error', message: 'Unable to add meeting date', errors: @meeting.errors.full_messages }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 #DELETE /meetings/:id&lt;br /&gt;
  def destroy&lt;br /&gt;
    puts &amp;quot;Team ID: #{params[:team_id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting ID: #{params[:id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting: #{@meeting.inspect}&amp;quot;&lt;br /&gt;
    if @meeting.destroy&lt;br /&gt;
      render json: { message: 'Meeting deleted successfully' }, status: :ok&lt;br /&gt;
    else&lt;br /&gt;
      render json: { error: 'Failed to delete meeting' }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  resources :teams, only: %i[new create edit update] do&lt;br /&gt;
    collection do&lt;br /&gt;
      get :list&lt;br /&gt;
      post :create_teams&lt;br /&gt;
      post :inherit&lt;br /&gt;
      get :delete&lt;br /&gt;
      get :delete_all&lt;br /&gt;
      get :bequeath_all&lt;br /&gt;
    end&lt;br /&gt;
    resources :meetings, only: %i[create destroy]&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
This set of backend and frontend changes focuses on code cleanup, standardization, and compatibility improvements. Unnecessary whitespace was removed, and the database column &amp;quot;date&amp;quot; was renamed to &amp;quot;meeting_date&amp;quot; for clarity. The &amp;quot;get_dates&amp;quot; function was refactored to ensure compatibility with older Ruby versions. Table column names were converted to snake_case to adhere to Ruby naming conventions, and rendering partials were removed to resolve Turbo issues. Finally, an initial refactoring session was conducted with a Large Language Model (LLM) to further refine the code.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
*Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
&lt;br /&gt;
    Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
&lt;br /&gt;
    Jacob Winters&lt;br /&gt;
    Alex Wakefield&lt;br /&gt;
    John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162091</id>
		<title>CSC/ECE 517 Spring 2025 - E2504. Mentor-meeting management</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162091"/>
		<updated>2025-03-23T21:20:29Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Refactor Existing Codebase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
Previously, mentors had to be manually assigned by reviewing team formations, a process that required frequent monitoring and manual intervention. The implementation of automatic mentor assignment significantly reduced this workload.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The mentor assignment system was introduced in 2023 to streamline the process of assigning mentors to teams within Expertiza, an open-source course management platform designed for collaborative learning in large Object-Oriented Programming assignments. The primary focus of this project is to enhance the mentor management system. Within Expertiza, mentors can be assigned to teams either manually or automatically. Automatic assignment is triggered when a team reaches more than 50% of its capacity.&lt;br /&gt;
&lt;br /&gt;
== Challenges ==&lt;br /&gt;
&lt;br /&gt;
* While the system successfully assigns mentors automatically, there is no functionality to notify teams and mentors via email when an assignment is made&lt;br /&gt;
** This feature needs to be implemented to ensure clear communication.&lt;br /&gt;
&lt;br /&gt;
* The only available team listing is on the &amp;quot;Create Teams&amp;quot; page, where team members are displayed on separate lines, and mentors appear in an arbitrary position within the team structure.&lt;br /&gt;
** Improvements are needed to enhance clarity and usability in mentor assignment tracking.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
Create a way that notifies participants and mentors, by email, of when they have been assigned to a team.&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
Dr. Gehringer expressed to us that the current view of mentor meetings took up too much space and proposed to us a mockup of how he would like the view to look, which can be seen below.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:MentorMeetingViewMockup.png|thumb|1000px|Mentor Meeting View Mockup]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
Implement a new controller to handle Create, Read, Update, Delete (CRUD) operations for mentor meetings. Update models to manage mentor meetings and trigger notifications.&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
Streamline logic for adding users/mentors and sending notifications. Refactor view code to improve readability and reusability.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
The Email Notification methods experienced a change to support SOLID Principles. Before, the code was not supporting the Single-Responsibility Principle, but now we have separated the parts of the 'add_member' method apart of the Team model. The current switch allows for an easier readability and understanding of code, while also following the SOLID Principles. &lt;br /&gt;
&lt;br /&gt;
[[File:Mentor_meetings_email_notification.png]]&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
The teams table for mentor meeting management was significantly enhanced with dynamic column manipulation, allowing users to add and remove meeting columns while preventing conflicts with scheduled meetings. Individual meeting deletion and improved reliability were implemented, along with a refactored meeting date display and input for better user experience. The table structure was optimized, incorporating editable meeting fields with a save feature, dynamic updates based on filter selections, and an actions column. To streamline column management, dropdowns were replaced with header buttons, a maximum of five meeting columns was enforced, and dynamic rendering was implemented based on participant data. The mentor logic and date column naming were corrected for clarity, and a destroy route for team meetings was added, ensuring a more efficient and user-friendly team management experience.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Screenshot_2025-03-23_164914.png|thumb|1000px|Screenshot of the Mentor Meeting Management System within the teams table]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
The backend for mentor meeting management underwent significant restructuring to improve efficiency and maintainability. A dedicated destroy route for team meetings was implemented, along with a revised deletion process. The logic for determining mentored teams and displayed teams for mentors was refined, and the meetings table was refactored to utilize the Participants class, establishing a database relationship between mentored teams and meetings. The meetings-related logic was moved from the teams controller to a newly implemented meetings controller, which includes a filter function. An instructor table was added in paginated form, and meeting routes were standardized. The meetings controller was further enhanced with CSS styling and instance variable reorganization, culminating in the integration of @meetings into the Teams Controller model.&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
 #POST /meetings&lt;br /&gt;
  def create&lt;br /&gt;
    @team = Team.find(params[:team_id])&lt;br /&gt;
    @meeting = @team.meetings.new(meeting_params)&lt;br /&gt;
    if @meeting.save&lt;br /&gt;
      # TODO: Re-implement email notification for meeting creation&lt;br /&gt;
      render json: { status: 'success', message: 'Meeting date added' }, status: :created&lt;br /&gt;
    else&lt;br /&gt;
      render json: { status: 'error', message: 'Unable to add meeting date', errors: @meeting.errors.full_messages }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 #DELETE /meetings/:id&lt;br /&gt;
  def destroy&lt;br /&gt;
    puts &amp;quot;Team ID: #{params[:team_id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting ID: #{params[:id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting: #{@meeting.inspect}&amp;quot;&lt;br /&gt;
    if @meeting.destroy&lt;br /&gt;
      render json: { message: 'Meeting deleted successfully' }, status: :ok&lt;br /&gt;
    else&lt;br /&gt;
      render json: { error: 'Failed to delete meeting' }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  resources :teams, only: %i[new create edit update] do&lt;br /&gt;
    collection do&lt;br /&gt;
      get :list&lt;br /&gt;
      post :create_teams&lt;br /&gt;
      post :inherit&lt;br /&gt;
      get :delete&lt;br /&gt;
      get :delete_all&lt;br /&gt;
      get :bequeath_all&lt;br /&gt;
    end&lt;br /&gt;
    resources :meetings, only: %i[create destroy]&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
This set of backend and frontend changes focuses on code cleanup, standardization, and compatibility improvements. Unnecessary whitespace was removed, and the database column &amp;quot;date&amp;quot; was renamed to &amp;quot;meeting_date&amp;quot; for clarity. The &amp;quot;get_dates&amp;quot; function was refactored to ensure compatibility with older Ruby versions. Table column names were converted to snake_case to adhere to Ruby naming conventions, and rendering partials were removed to resolve Turbo issues. Finally, an initial refactoring session was conducted with a Large Language Model (LLM) to further refine the code.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
*Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
&lt;br /&gt;
    Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
&lt;br /&gt;
    Jacob Winters&lt;br /&gt;
    Alex Wakefield&lt;br /&gt;
    John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162090</id>
		<title>CSC/ECE 517 Spring 2025 - E2504. Mentor-meeting management</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162090"/>
		<updated>2025-03-23T21:20:04Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Backend and Controller Updates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
Previously, mentors had to be manually assigned by reviewing team formations, a process that required frequent monitoring and manual intervention. The implementation of automatic mentor assignment significantly reduced this workload.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The mentor assignment system was introduced in 2023 to streamline the process of assigning mentors to teams within Expertiza, an open-source course management platform designed for collaborative learning in large Object-Oriented Programming assignments. The primary focus of this project is to enhance the mentor management system. Within Expertiza, mentors can be assigned to teams either manually or automatically. Automatic assignment is triggered when a team reaches more than 50% of its capacity.&lt;br /&gt;
&lt;br /&gt;
== Challenges ==&lt;br /&gt;
&lt;br /&gt;
* While the system successfully assigns mentors automatically, there is no functionality to notify teams and mentors via email when an assignment is made&lt;br /&gt;
** This feature needs to be implemented to ensure clear communication.&lt;br /&gt;
&lt;br /&gt;
* The only available team listing is on the &amp;quot;Create Teams&amp;quot; page, where team members are displayed on separate lines, and mentors appear in an arbitrary position within the team structure.&lt;br /&gt;
** Improvements are needed to enhance clarity and usability in mentor assignment tracking.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
Create a way that notifies participants and mentors, by email, of when they have been assigned to a team.&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
Dr. Gehringer expressed to us that the current view of mentor meetings took up too much space and proposed to us a mockup of how he would like the view to look, which can be seen below.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:MentorMeetingViewMockup.png|thumb|1000px|Mentor Meeting View Mockup]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
Implement a new controller to handle Create, Read, Update, Delete (CRUD) operations for mentor meetings. Update models to manage mentor meetings and trigger notifications.&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
The Email Notification methods experienced a change to support SOLID Principles. Before, the code was not supporting the Single-Responsibility Principle, but now we have separated the parts of the 'add_member' method apart of the Team model. The current switch allows for an easier readability and understanding of code, while also following the SOLID Principles. &lt;br /&gt;
&lt;br /&gt;
[[File:Mentor_meetings_email_notification.png]]&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
The teams table for mentor meeting management was significantly enhanced with dynamic column manipulation, allowing users to add and remove meeting columns while preventing conflicts with scheduled meetings. Individual meeting deletion and improved reliability were implemented, along with a refactored meeting date display and input for better user experience. The table structure was optimized, incorporating editable meeting fields with a save feature, dynamic updates based on filter selections, and an actions column. To streamline column management, dropdowns were replaced with header buttons, a maximum of five meeting columns was enforced, and dynamic rendering was implemented based on participant data. The mentor logic and date column naming were corrected for clarity, and a destroy route for team meetings was added, ensuring a more efficient and user-friendly team management experience.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Screenshot_2025-03-23_164914.png|thumb|1000px|Screenshot of the Mentor Meeting Management System within the teams table]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
The backend for mentor meeting management underwent significant restructuring to improve efficiency and maintainability. A dedicated destroy route for team meetings was implemented, along with a revised deletion process. The logic for determining mentored teams and displayed teams for mentors was refined, and the meetings table was refactored to utilize the Participants class, establishing a database relationship between mentored teams and meetings. The meetings-related logic was moved from the teams controller to a newly implemented meetings controller, which includes a filter function. An instructor table was added in paginated form, and meeting routes were standardized. The meetings controller was further enhanced with CSS styling and instance variable reorganization, culminating in the integration of @meetings into the Teams Controller model.&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
 #POST /meetings&lt;br /&gt;
  def create&lt;br /&gt;
    @team = Team.find(params[:team_id])&lt;br /&gt;
    @meeting = @team.meetings.new(meeting_params)&lt;br /&gt;
    if @meeting.save&lt;br /&gt;
      # TODO: Re-implement email notification for meeting creation&lt;br /&gt;
      render json: { status: 'success', message: 'Meeting date added' }, status: :created&lt;br /&gt;
    else&lt;br /&gt;
      render json: { status: 'error', message: 'Unable to add meeting date', errors: @meeting.errors.full_messages }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 #DELETE /meetings/:id&lt;br /&gt;
  def destroy&lt;br /&gt;
    puts &amp;quot;Team ID: #{params[:team_id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting ID: #{params[:id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting: #{@meeting.inspect}&amp;quot;&lt;br /&gt;
    if @meeting.destroy&lt;br /&gt;
      render json: { message: 'Meeting deleted successfully' }, status: :ok&lt;br /&gt;
    else&lt;br /&gt;
      render json: { error: 'Failed to delete meeting' }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  resources :teams, only: %i[new create edit update] do&lt;br /&gt;
    collection do&lt;br /&gt;
      get :list&lt;br /&gt;
      post :create_teams&lt;br /&gt;
      post :inherit&lt;br /&gt;
      get :delete&lt;br /&gt;
      get :delete_all&lt;br /&gt;
      get :bequeath_all&lt;br /&gt;
    end&lt;br /&gt;
    resources :meetings, only: %i[create destroy]&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
This set of backend and frontend changes focuses on code cleanup, standardization, and compatibility improvements. Unnecessary whitespace was removed, and the database column &amp;quot;date&amp;quot; was renamed to &amp;quot;meeting_date&amp;quot; for clarity. The &amp;quot;get_dates&amp;quot; function was refactored to ensure compatibility with older Ruby versions. Table column names were converted to snake_case to adhere to Ruby naming conventions, and rendering partials were removed to resolve Turbo issues. Finally, an initial refactoring session was conducted with a Large Language Model (LLM) to further refine the code.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
*Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
&lt;br /&gt;
    Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
&lt;br /&gt;
    Jacob Winters&lt;br /&gt;
    Alex Wakefield&lt;br /&gt;
    John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162089</id>
		<title>CSC/ECE 517 Spring 2025 - E2504. Mentor-meeting management</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162089"/>
		<updated>2025-03-23T21:18:34Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Email Notifications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
Previously, mentors had to be manually assigned by reviewing team formations, a process that required frequent monitoring and manual intervention. The implementation of automatic mentor assignment significantly reduced this workload.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The mentor assignment system was introduced in 2023 to streamline the process of assigning mentors to teams within Expertiza, an open-source course management platform designed for collaborative learning in large Object-Oriented Programming assignments. The primary focus of this project is to enhance the mentor management system. Within Expertiza, mentors can be assigned to teams either manually or automatically. Automatic assignment is triggered when a team reaches more than 50% of its capacity.&lt;br /&gt;
&lt;br /&gt;
== Challenges ==&lt;br /&gt;
&lt;br /&gt;
* While the system successfully assigns mentors automatically, there is no functionality to notify teams and mentors via email when an assignment is made&lt;br /&gt;
** This feature needs to be implemented to ensure clear communication.&lt;br /&gt;
&lt;br /&gt;
* The only available team listing is on the &amp;quot;Create Teams&amp;quot; page, where team members are displayed on separate lines, and mentors appear in an arbitrary position within the team structure.&lt;br /&gt;
** Improvements are needed to enhance clarity and usability in mentor assignment tracking.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
Create a way that notifies participants and mentors, by email, of when they have been assigned to a team.&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
Dr. Gehringer expressed to us that the current view of mentor meetings took up too much space and proposed to us a mockup of how he would like the view to look, which can be seen below.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:MentorMeetingViewMockup.png|thumb|1000px|Mentor Meeting View Mockup]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
The Email Notification methods experienced a change to support SOLID Principles. Before, the code was not supporting the Single-Responsibility Principle, but now we have separated the parts of the 'add_member' method apart of the Team model. The current switch allows for an easier readability and understanding of code, while also following the SOLID Principles. &lt;br /&gt;
&lt;br /&gt;
[[File:Mentor_meetings_email_notification.png]]&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
The teams table for mentor meeting management was significantly enhanced with dynamic column manipulation, allowing users to add and remove meeting columns while preventing conflicts with scheduled meetings. Individual meeting deletion and improved reliability were implemented, along with a refactored meeting date display and input for better user experience. The table structure was optimized, incorporating editable meeting fields with a save feature, dynamic updates based on filter selections, and an actions column. To streamline column management, dropdowns were replaced with header buttons, a maximum of five meeting columns was enforced, and dynamic rendering was implemented based on participant data. The mentor logic and date column naming were corrected for clarity, and a destroy route for team meetings was added, ensuring a more efficient and user-friendly team management experience.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Screenshot_2025-03-23_164914.png|thumb|1000px|Screenshot of the Mentor Meeting Management System within the teams table]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
The backend for mentor meeting management underwent significant restructuring to improve efficiency and maintainability. A dedicated destroy route for team meetings was implemented, along with a revised deletion process. The logic for determining mentored teams and displayed teams for mentors was refined, and the meetings table was refactored to utilize the Participants class, establishing a database relationship between mentored teams and meetings. The meetings-related logic was moved from the teams controller to a newly implemented meetings controller, which includes a filter function. An instructor table was added in paginated form, and meeting routes were standardized. The meetings controller was further enhanced with CSS styling and instance variable reorganization, culminating in the integration of @meetings into the Teams Controller model.&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
 #POST /meetings&lt;br /&gt;
  def create&lt;br /&gt;
    @team = Team.find(params[:team_id])&lt;br /&gt;
    @meeting = @team.meetings.new(meeting_params)&lt;br /&gt;
    if @meeting.save&lt;br /&gt;
      # TODO: Re-implement email notification for meeting creation&lt;br /&gt;
      render json: { status: 'success', message: 'Meeting date added' }, status: :created&lt;br /&gt;
    else&lt;br /&gt;
      render json: { status: 'error', message: 'Unable to add meeting date', errors: @meeting.errors.full_messages }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 #DELETE /meetings/:id&lt;br /&gt;
  def destroy&lt;br /&gt;
    puts &amp;quot;Team ID: #{params[:team_id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting ID: #{params[:id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting: #{@meeting.inspect}&amp;quot;&lt;br /&gt;
    if @meeting.destroy&lt;br /&gt;
      render json: { message: 'Meeting deleted successfully' }, status: :ok&lt;br /&gt;
    else&lt;br /&gt;
      render json: { error: 'Failed to delete meeting' }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  resources :teams, only: %i[new create edit update] do&lt;br /&gt;
    collection do&lt;br /&gt;
      get :list&lt;br /&gt;
      post :create_teams&lt;br /&gt;
      post :inherit&lt;br /&gt;
      get :delete&lt;br /&gt;
      get :delete_all&lt;br /&gt;
      get :bequeath_all&lt;br /&gt;
    end&lt;br /&gt;
    resources :meetings, only: %i[create destroy]&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
This set of backend and frontend changes focuses on code cleanup, standardization, and compatibility improvements. Unnecessary whitespace was removed, and the database column &amp;quot;date&amp;quot; was renamed to &amp;quot;meeting_date&amp;quot; for clarity. The &amp;quot;get_dates&amp;quot; function was refactored to ensure compatibility with older Ruby versions. Table column names were converted to snake_case to adhere to Ruby naming conventions, and rendering partials were removed to resolve Turbo issues. Finally, an initial refactoring session was conducted with a Large Language Model (LLM) to further refine the code.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
*Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
&lt;br /&gt;
    Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
&lt;br /&gt;
    Jacob Winters&lt;br /&gt;
    Alex Wakefield&lt;br /&gt;
    John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162088</id>
		<title>CSC/ECE 517 Spring 2025 - E2504. Mentor-meeting management</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162088"/>
		<updated>2025-03-23T21:18:16Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Email Notifications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
Previously, mentors had to be manually assigned by reviewing team formations, a process that required frequent monitoring and manual intervention. The implementation of automatic mentor assignment significantly reduced this workload.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The mentor assignment system was introduced in 2023 to streamline the process of assigning mentors to teams within Expertiza, an open-source course management platform designed for collaborative learning in large Object-Oriented Programming assignments. The primary focus of this project is to enhance the mentor management system. Within Expertiza, mentors can be assigned to teams either manually or automatically. Automatic assignment is triggered when a team reaches more than 50% of its capacity.&lt;br /&gt;
&lt;br /&gt;
== Challenges ==&lt;br /&gt;
&lt;br /&gt;
* While the system successfully assigns mentors automatically, there is no functionality to notify teams and mentors via email when an assignment is made&lt;br /&gt;
** This feature needs to be implemented to ensure clear communication.&lt;br /&gt;
&lt;br /&gt;
* The only available team listing is on the &amp;quot;Create Teams&amp;quot; page, where team members are displayed on separate lines, and mentors appear in an arbitrary position within the team structure.&lt;br /&gt;
** Improvements are needed to enhance clarity and usability in mentor assignment tracking.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
Create a way that notifies participants and mentors, by email, of when they have been assigned to a team.&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
Dr. Gehringer expressed to us that the current view of mentor meetings took up too much space and proposed to us a mockup of how he would like the view to look, which can be seen below.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:MentorMeetingViewMockup.png|thumb|1000px|Mentor Meeting View Mockup]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
The Email Notification methods experienced a change to support SOLID Principles. Before, the code was not supporting the Single-Responsibility Principle, but now we have separated the parts of the 'add_member' method apart of the Team model. The current switch allows for an easier readability and understanding of code, while also following the SOLID Principles. [[File:Mentor_meetings_email_notification.png]]&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
The teams table for mentor meeting management was significantly enhanced with dynamic column manipulation, allowing users to add and remove meeting columns while preventing conflicts with scheduled meetings. Individual meeting deletion and improved reliability were implemented, along with a refactored meeting date display and input for better user experience. The table structure was optimized, incorporating editable meeting fields with a save feature, dynamic updates based on filter selections, and an actions column. To streamline column management, dropdowns were replaced with header buttons, a maximum of five meeting columns was enforced, and dynamic rendering was implemented based on participant data. The mentor logic and date column naming were corrected for clarity, and a destroy route for team meetings was added, ensuring a more efficient and user-friendly team management experience.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Screenshot_2025-03-23_164914.png|thumb|1000px|Screenshot of the Mentor Meeting Management System within the teams table]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
The backend for mentor meeting management underwent significant restructuring to improve efficiency and maintainability. A dedicated destroy route for team meetings was implemented, along with a revised deletion process. The logic for determining mentored teams and displayed teams for mentors was refined, and the meetings table was refactored to utilize the Participants class, establishing a database relationship between mentored teams and meetings. The meetings-related logic was moved from the teams controller to a newly implemented meetings controller, which includes a filter function. An instructor table was added in paginated form, and meeting routes were standardized. The meetings controller was further enhanced with CSS styling and instance variable reorganization, culminating in the integration of @meetings into the Teams Controller model.&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
 #POST /meetings&lt;br /&gt;
  def create&lt;br /&gt;
    @team = Team.find(params[:team_id])&lt;br /&gt;
    @meeting = @team.meetings.new(meeting_params)&lt;br /&gt;
    if @meeting.save&lt;br /&gt;
      # TODO: Re-implement email notification for meeting creation&lt;br /&gt;
      render json: { status: 'success', message: 'Meeting date added' }, status: :created&lt;br /&gt;
    else&lt;br /&gt;
      render json: { status: 'error', message: 'Unable to add meeting date', errors: @meeting.errors.full_messages }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 #DELETE /meetings/:id&lt;br /&gt;
  def destroy&lt;br /&gt;
    puts &amp;quot;Team ID: #{params[:team_id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting ID: #{params[:id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting: #{@meeting.inspect}&amp;quot;&lt;br /&gt;
    if @meeting.destroy&lt;br /&gt;
      render json: { message: 'Meeting deleted successfully' }, status: :ok&lt;br /&gt;
    else&lt;br /&gt;
      render json: { error: 'Failed to delete meeting' }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  resources :teams, only: %i[new create edit update] do&lt;br /&gt;
    collection do&lt;br /&gt;
      get :list&lt;br /&gt;
      post :create_teams&lt;br /&gt;
      post :inherit&lt;br /&gt;
      get :delete&lt;br /&gt;
      get :delete_all&lt;br /&gt;
      get :bequeath_all&lt;br /&gt;
    end&lt;br /&gt;
    resources :meetings, only: %i[create destroy]&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
This set of backend and frontend changes focuses on code cleanup, standardization, and compatibility improvements. Unnecessary whitespace was removed, and the database column &amp;quot;date&amp;quot; was renamed to &amp;quot;meeting_date&amp;quot; for clarity. The &amp;quot;get_dates&amp;quot; function was refactored to ensure compatibility with older Ruby versions. Table column names were converted to snake_case to adhere to Ruby naming conventions, and rendering partials were removed to resolve Turbo issues. Finally, an initial refactoring session was conducted with a Large Language Model (LLM) to further refine the code.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
*Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
&lt;br /&gt;
    Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
&lt;br /&gt;
    Jacob Winters&lt;br /&gt;
    Alex Wakefield&lt;br /&gt;
    John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162087</id>
		<title>CSC/ECE 517 Spring 2025 - E2504. Mentor-meeting management</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162087"/>
		<updated>2025-03-23T21:17:34Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Email Notifications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
Previously, mentors had to be manually assigned by reviewing team formations, a process that required frequent monitoring and manual intervention. The implementation of automatic mentor assignment significantly reduced this workload.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The mentor assignment system was introduced in 2023 to streamline the process of assigning mentors to teams within Expertiza, an open-source course management platform designed for collaborative learning in large Object-Oriented Programming assignments. The primary focus of this project is to enhance the mentor management system. Within Expertiza, mentors can be assigned to teams either manually or automatically. Automatic assignment is triggered when a team reaches more than 50% of its capacity.&lt;br /&gt;
&lt;br /&gt;
== Challenges ==&lt;br /&gt;
&lt;br /&gt;
* While the system successfully assigns mentors automatically, there is no functionality to notify teams and mentors via email when an assignment is made&lt;br /&gt;
** This feature needs to be implemented to ensure clear communication.&lt;br /&gt;
&lt;br /&gt;
* The only available team listing is on the &amp;quot;Create Teams&amp;quot; page, where team members are displayed on separate lines, and mentors appear in an arbitrary position within the team structure.&lt;br /&gt;
** Improvements are needed to enhance clarity and usability in mentor assignment tracking.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
Create a way that notifies participants and mentors, by email, of when they have been assigned to a team.&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
Dr. Gehringer expressed to us that the current view of mentor meetings took up too much space and proposed to us a mockup of how he would like the view to look, which can be seen below.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:MentorMeetingViewMockup.png|thumb|1000px|Mentor Meeting View Mockup]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
The Email Notification methods experienced a change to support SOLID Principles. Before, the code was not supporting the Single-Responsibility Principle, but now we have separated the parts of the 'add_member' method apart of the Team model. The current switch allows for an easier readability and understanding of code, while also following the SOLID Principles. [[File:Mentor_meetings_email_notification.png Screenshot of the Email notification logic]]&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
The teams table for mentor meeting management was significantly enhanced with dynamic column manipulation, allowing users to add and remove meeting columns while preventing conflicts with scheduled meetings. Individual meeting deletion and improved reliability were implemented, along with a refactored meeting date display and input for better user experience. The table structure was optimized, incorporating editable meeting fields with a save feature, dynamic updates based on filter selections, and an actions column. To streamline column management, dropdowns were replaced with header buttons, a maximum of five meeting columns was enforced, and dynamic rendering was implemented based on participant data. The mentor logic and date column naming were corrected for clarity, and a destroy route for team meetings was added, ensuring a more efficient and user-friendly team management experience.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Screenshot_2025-03-23_164914.png|thumb|1000px|Screenshot of the Mentor Meeting Management System within the teams table]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
The backend for mentor meeting management underwent significant restructuring to improve efficiency and maintainability. A dedicated destroy route for team meetings was implemented, along with a revised deletion process. The logic for determining mentored teams and displayed teams for mentors was refined, and the meetings table was refactored to utilize the Participants class, establishing a database relationship between mentored teams and meetings. The meetings-related logic was moved from the teams controller to a newly implemented meetings controller, which includes a filter function. An instructor table was added in paginated form, and meeting routes were standardized. The meetings controller was further enhanced with CSS styling and instance variable reorganization, culminating in the integration of @meetings into the Teams Controller model.&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
 #POST /meetings&lt;br /&gt;
  def create&lt;br /&gt;
    @team = Team.find(params[:team_id])&lt;br /&gt;
    @meeting = @team.meetings.new(meeting_params)&lt;br /&gt;
    if @meeting.save&lt;br /&gt;
      # TODO: Re-implement email notification for meeting creation&lt;br /&gt;
      render json: { status: 'success', message: 'Meeting date added' }, status: :created&lt;br /&gt;
    else&lt;br /&gt;
      render json: { status: 'error', message: 'Unable to add meeting date', errors: @meeting.errors.full_messages }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 #DELETE /meetings/:id&lt;br /&gt;
  def destroy&lt;br /&gt;
    puts &amp;quot;Team ID: #{params[:team_id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting ID: #{params[:id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting: #{@meeting.inspect}&amp;quot;&lt;br /&gt;
    if @meeting.destroy&lt;br /&gt;
      render json: { message: 'Meeting deleted successfully' }, status: :ok&lt;br /&gt;
    else&lt;br /&gt;
      render json: { error: 'Failed to delete meeting' }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  resources :teams, only: %i[new create edit update] do&lt;br /&gt;
    collection do&lt;br /&gt;
      get :list&lt;br /&gt;
      post :create_teams&lt;br /&gt;
      post :inherit&lt;br /&gt;
      get :delete&lt;br /&gt;
      get :delete_all&lt;br /&gt;
      get :bequeath_all&lt;br /&gt;
    end&lt;br /&gt;
    resources :meetings, only: %i[create destroy]&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
This set of backend and frontend changes focuses on code cleanup, standardization, and compatibility improvements. Unnecessary whitespace was removed, and the database column &amp;quot;date&amp;quot; was renamed to &amp;quot;meeting_date&amp;quot; for clarity. The &amp;quot;get_dates&amp;quot; function was refactored to ensure compatibility with older Ruby versions. Table column names were converted to snake_case to adhere to Ruby naming conventions, and rendering partials were removed to resolve Turbo issues. Finally, an initial refactoring session was conducted with a Large Language Model (LLM) to further refine the code.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
*Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
&lt;br /&gt;
    Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
&lt;br /&gt;
    Jacob Winters&lt;br /&gt;
    Alex Wakefield&lt;br /&gt;
    John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162086</id>
		<title>CSC/ECE 517 Spring 2025 - E2504. Mentor-meeting management</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2504._Mentor-meeting_management&amp;diff=162086"/>
		<updated>2025-03-23T21:17:10Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: /* Email Notifications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
Previously, mentors had to be manually assigned by reviewing team formations, a process that required frequent monitoring and manual intervention. The implementation of automatic mentor assignment significantly reduced this workload.&lt;br /&gt;
&lt;br /&gt;
==Project Overview==&lt;br /&gt;
The mentor assignment system was introduced in 2023 to streamline the process of assigning mentors to teams within Expertiza, an open-source course management platform designed for collaborative learning in large Object-Oriented Programming assignments. The primary focus of this project is to enhance the mentor management system. Within Expertiza, mentors can be assigned to teams either manually or automatically. Automatic assignment is triggered when a team reaches more than 50% of its capacity.&lt;br /&gt;
&lt;br /&gt;
== Challenges ==&lt;br /&gt;
&lt;br /&gt;
* While the system successfully assigns mentors automatically, there is no functionality to notify teams and mentors via email when an assignment is made&lt;br /&gt;
** This feature needs to be implemented to ensure clear communication.&lt;br /&gt;
&lt;br /&gt;
* The only available team listing is on the &amp;quot;Create Teams&amp;quot; page, where team members are displayed on separate lines, and mentors appear in an arbitrary position within the team structure.&lt;br /&gt;
** Improvements are needed to enhance clarity and usability in mentor assignment tracking.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
Create a way that notifies participants and mentors, by email, of when they have been assigned to a team.&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
Dr. Gehringer expressed to us that the current view of mentor meetings took up too much space and proposed to us a mockup of how he would like the view to look, which can be seen below.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:MentorMeetingViewMockup.png|thumb|1000px|Mentor Meeting View Mockup]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Email Notifications ===&lt;br /&gt;
The Email Notification methods experienced a change to support SOLID Principles. Before, the code was not supporting the Single-Responsibility Principle, but now we have separated the parts of the 'add_member' method apart of the Team model. The current switch allows for an easier readability and understanding of code, while also following the SOLID Principles. [[File:Mentor_meetings_email_notification.png|thumb|1000px|Screenshot of the Email notification logic]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mentor Meeting Management ===&lt;br /&gt;
The teams table for mentor meeting management was significantly enhanced with dynamic column manipulation, allowing users to add and remove meeting columns while preventing conflicts with scheduled meetings. Individual meeting deletion and improved reliability were implemented, along with a refactored meeting date display and input for better user experience. The table structure was optimized, incorporating editable meeting fields with a save feature, dynamic updates based on filter selections, and an actions column. To streamline column management, dropdowns were replaced with header buttons, a maximum of five meeting columns was enforced, and dynamic rendering was implemented based on participant data. The mentor logic and date column naming were corrected for clarity, and a destroy route for team meetings was added, ensuring a more efficient and user-friendly team management experience.&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:Screenshot_2025-03-23_164914.png|thumb|1000px|Screenshot of the Mentor Meeting Management System within the teams table]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backend and Controller Updates ===&lt;br /&gt;
The backend for mentor meeting management underwent significant restructuring to improve efficiency and maintainability. A dedicated destroy route for team meetings was implemented, along with a revised deletion process. The logic for determining mentored teams and displayed teams for mentors was refined, and the meetings table was refactored to utilize the Participants class, establishing a database relationship between mentored teams and meetings. The meetings-related logic was moved from the teams controller to a newly implemented meetings controller, which includes a filter function. An instructor table was added in paginated form, and meeting routes were standardized. The meetings controller was further enhanced with CSS styling and instance variable reorganization, culminating in the integration of @meetings into the Teams Controller model.&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
 #POST /meetings&lt;br /&gt;
  def create&lt;br /&gt;
    @team = Team.find(params[:team_id])&lt;br /&gt;
    @meeting = @team.meetings.new(meeting_params)&lt;br /&gt;
    if @meeting.save&lt;br /&gt;
      # TODO: Re-implement email notification for meeting creation&lt;br /&gt;
      render json: { status: 'success', message: 'Meeting date added' }, status: :created&lt;br /&gt;
    else&lt;br /&gt;
      render json: { status: 'error', message: 'Unable to add meeting date', errors: @meeting.errors.full_messages }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
 #DELETE /meetings/:id&lt;br /&gt;
  def destroy&lt;br /&gt;
    puts &amp;quot;Team ID: #{params[:team_id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting ID: #{params[:id]}&amp;quot;&lt;br /&gt;
    puts &amp;quot;Meeting: #{@meeting.inspect}&amp;quot;&lt;br /&gt;
    if @meeting.destroy&lt;br /&gt;
      render json: { message: 'Meeting deleted successfully' }, status: :ok&lt;br /&gt;
    else&lt;br /&gt;
      render json: { error: 'Failed to delete meeting' }, status: :unprocessable_entity&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
  resources :teams, only: %i[new create edit update] do&lt;br /&gt;
    collection do&lt;br /&gt;
      get :list&lt;br /&gt;
      post :create_teams&lt;br /&gt;
      post :inherit&lt;br /&gt;
      get :delete&lt;br /&gt;
      get :delete_all&lt;br /&gt;
      get :bequeath_all&lt;br /&gt;
    end&lt;br /&gt;
    resources :meetings, only: %i[create destroy]&lt;br /&gt;
  end&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=== Refactor Existing Codebase ===&lt;br /&gt;
This set of backend and frontend changes focuses on code cleanup, standardization, and compatibility improvements. Unnecessary whitespace was removed, and the database column &amp;quot;date&amp;quot; was renamed to &amp;quot;meeting_date&amp;quot; for clarity. The &amp;quot;get_dates&amp;quot; function was refactored to ensure compatibility with older Ruby versions. Table column names were converted to snake_case to adhere to Ruby naming conventions, and rendering partials were removed to resolve Turbo issues. Finally, an initial refactoring session was conducted with a Large Language Model (LLM) to further refine the code.&lt;br /&gt;
&lt;br /&gt;
=== Testing and Validation ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
*Github Repository: https://github.com/jmwinte3/expertiza&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
&lt;br /&gt;
    Ed Gehringer&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
&lt;br /&gt;
    Jacob Winters&lt;br /&gt;
    Alex Wakefield&lt;br /&gt;
    John Buchanan&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Mentor_meetings_email_notification.png&amp;diff=162085</id>
		<title>File:Mentor meetings email notification.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Mentor_meetings_email_notification.png&amp;diff=162085"/>
		<updated>2025-03-23T21:14:47Z</updated>

		<summary type="html">&lt;p&gt;Jlbucha4: The shows the implementation of the mailer logic.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
The shows the implementation of the mailer logic.&lt;/div&gt;</summary>
		<author><name>Jlbucha4</name></author>
	</entry>
</feed>