<?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=Asharm67</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=Asharm67"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Asharm67"/>
	<updated>2026-08-17T21:13:41Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2450._Refactor_assignments_controller.rb&amp;diff=159094</id>
		<title>CSC/ECE 517 Fall 2024 - E2450. Refactor assignments controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2450._Refactor_assignments_controller.rb&amp;diff=159094"/>
		<updated>2024-11-12T16:32:23Z</updated>

		<summary type="html">&lt;p&gt;Asharm67: /* Phase 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About Controller ==&lt;br /&gt;
The `AssignmentsController` handles actions related to managing assignments.Key functionalities include initializing a new assignment in the `new` action and creating assignments through the `create` action, with validations to prevent duplicate names and directory paths. If creation succeeds, it redirects appropriately; otherwise, it renders the form with errors. This controller ensures smooth assignment management by enforcing proper validations and access control throughout the process.&lt;br /&gt;
== Functionality of assignments_controller ==&lt;br /&gt;
The `AssignmentsController` handles the management of assignments by providing actions for creating and initializing them while ensuring access control. It uses `before_action` callbacks to enforce authorization, ensuring only permitted users can interact with assignment-related features. The `new` action initializes a blank assignment object for form rendering, facilitating the creation of new assignments. Additionally, the `create` action is responsible for processing form submissions, validating input, and saving the assignment if it meets the criteria. This controller ensures that all assignment operations are secure, properly initialized, and follow the required business logic.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The `assignments_controller` presents difficulties due to its large size, intricate structure, and absence of comments, making it challenging for developers to grasp its functionality. To address these issues, a thorough refactor is advised, breaking down lengthy methods into smaller, more manageable sections. This strategy would modularize complex logic, assigning specific tasks to individual parts within the controller’s responsibilities. Furthermore, the refactor should aim to remove redundant code by consolidating repetitive sections into reusable functions or utilities, enhancing code quality and reducing the risk of errors. By restructuring the controller and improving its documentation, developers can better understand its operations, making maintenance, debugging, and future updates more straightforward.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
1. '''Refactor create method'''&lt;br /&gt;
&lt;br /&gt;
2. '''Refactor edit method'''&lt;br /&gt;
&lt;br /&gt;
3. '''Refactor update method'''&lt;br /&gt;
&lt;br /&gt;
4. '''Refactor delete method''': New models for subclasses will be implemented to streamline organization and simplify management.&lt;br /&gt;
&lt;br /&gt;
5. '''Reposition methods'''&lt;br /&gt;
&lt;br /&gt;
6. '''Enhance Comments'''&lt;br /&gt;
&lt;br /&gt;
7. '''Expand Test Coverage'''&lt;br /&gt;
&lt;br /&gt;
=== '''Phase 1''' ===&lt;br /&gt;
# Clarify and Refactor exist_assignment variable.  &lt;br /&gt;
# Clarify aq Parameter Naming in list_unassigned_rubrics &amp;amp; remove_existing_questionnaire.  &lt;br /&gt;
# Fixing the Github required checks.  &lt;br /&gt;
# Refactor Variable Naming for Clarity.  &lt;br /&gt;
# Review path Method Location.  &lt;br /&gt;
# Refactor Authorization Checks. &lt;br /&gt;
# Simplify Array Usage in Create Method.&lt;br /&gt;
# Refactor Method Names with 'Check'.&lt;br /&gt;
# Refactor query_participants_and_alert Method.&lt;br /&gt;
&lt;br /&gt;
=== '''Phase 2''' ===&lt;br /&gt;
Current Status&lt;br /&gt;
 We have successfully completed the following refactoring and functionality improvements:&lt;br /&gt;
  1. Refactor query_participants_and_alert Method&lt;br /&gt;
   Refactored query_participants_and_alert by splitting it into missing_participants? and alert_missing_participants for improved readability and       maintainability. &lt;br /&gt;
   The new missing_participants? method checks if participants are blank, while alert_missing_participants generates a flash error message with a link to add    missing participants.&lt;br /&gt;
 2. Clarify and Refactor Variable Naming for Clarity&lt;br /&gt;
  a. Renamed find_existing_assignment to assignment_by_name for consistency with Ruby conventions.&lt;br /&gt;
  b. Renamed exist_assignment to assignment_created to clearly indicate it tracks assignment creation status.&lt;br /&gt;
  c. Renamed the aq parameter to assignment_questionnaire for clarity in assignment questionnaire iterations.&lt;br /&gt;
 3. Refactor Authorization Checks&lt;br /&gt;
  Centralized privilege-checking logic by replacing direct role checks with helper methods current_user_has_instructor_privileges? and   current_user_has_ta_privileges?, enhancing maintainability and aligning with DRY principles.&lt;br /&gt;
 4. Simplify Array Usage in create Method&lt;br /&gt;
  Simplified the check method by renaming it to validate and removing unnecessary arrays (ques_array and due_array). Direct data structure traversal is now   used, reducing complexity and enhancing clarity.&lt;br /&gt;
These changes have been implemented and tested to ensure they meet the requirements for clarity, functionality, and performance.&lt;br /&gt;
&lt;br /&gt;
Issues and Plan of Action For Phase 2&lt;br /&gt;
&lt;br /&gt;
1. Assess Method Placement for Assignment Name Check&lt;br /&gt;
 Current Issue: The method that checks if an assignment name is already in use currently resides in the controller. This placement may violate the separation of concerns principle, as it could be more fitting for a model or service object to handle this validation.&lt;br /&gt;
 Plan: Analyze the current functionality of the assignment name check and determine if it involves complex logic that could be encapsulated within a service object or model. If it's a simple validation, move it to the model; for more complex operations, implement a service object to streamline the controller and enhance reusability across the application.&lt;br /&gt;
2. Simplify path_warning_and_answer_tag Method&lt;br /&gt;
 Current Issue: The path_warning_and_answer_tag method has a verbose name and may be performing multiple tasks, making it hard to read and maintain.&lt;br /&gt;
 Plan: Rename path_warning_and_answer_tag to a clear, action-oriented name and refactor the method by breaking it into smaller, single-purpose methods. Each new method should encapsulate one logical part of the process, improving readability, modularity, and simplifying future maintenance.&lt;br /&gt;
3. Evaluate Bookmarking Functionality&lt;br /&gt;
 Current Issue: Bookmarking assignments and managing badges may not be logically consistent within the current context, creating ambiguity about where and how these features should be implemented.&lt;br /&gt;
 Plan: Review the current use cases for bookmarking and badge handling to establish if these features align with the current controller or model. If they serve a broader purpose or require more context-specific handling, consider relocating them to a dedicated module or service. Create a detailed design proposal for implementing and managing these features effectively.&lt;br /&gt;
4. Move Assignment Management Methods to Model&lt;br /&gt;
 Current Issue: The methods remove_assignment_from_course and place_assignment_in_course are currently in the controller, but they deal with assignment management, which may belong more appropriately in the model.&lt;br /&gt;
 Plan: Move remove_assignment_from_course and place_assignment_in_course to the assignment model to adhere to the principle of separating concerns. Adjust the controller to call these model methods, keeping the controller focused on handling HTTP requests while the model manages data-related logic.&lt;br /&gt;
5. Reassess Delayed Mailer Methods&lt;br /&gt;
 Current Issue: The delayed_mailer and delete_delayed_mailer methods reside in the controller but may not need to be there, especially if they are used for background email processes that can be managed elsewhere.&lt;br /&gt;
 Plan: Evaluate the purpose and functionality of these delayed mailer methods. If they are intended to manage background processes, consider relocating them to a service object or a background job manager to enhance modularity. Ensure the new placement supports asynchronous processing while reducing the controller’s load.&lt;br /&gt;
6. Addressing Code Climate Issues&lt;br /&gt;
 Current Issue: Code climate flags include high complexity and excessive line count&lt;br /&gt;
 Plan: Refactor by:&lt;br /&gt;
  Splitting complex logic into smaller helper methods&lt;br /&gt;
  Reducing nested conditionals and loops&lt;br /&gt;
  Improving readability through concise naming and streamlined code&lt;br /&gt;
  These adjustments will enhance maintainability and meet Code Climate’s metrics for complexity and line limits.&lt;br /&gt;
7. Remove HTML Markup Code From the Controller&lt;br /&gt;
 Current Issue: There is HTML markup code present in the controller, especially in Flash messages&lt;br /&gt;
 Plan: Evaluate the current controller to identify HTML markup in Flash messages and remove it, adhering to MVC principles. Refactor the controller to pass raw, clean data (without HTML) to the view. In the view, update Flash message rendering to handle HTML formatting using Rails helpers like raw or sanitize for security. Test thoroughly to ensure functionality and proper display across browsers. Finally, update documentation and request a code review before deploying the changes.&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
All of the required checks for tests are passing. This is shown in the image below. The previously written test cases were not changed, just modified the cases to incorporate our refactoring.&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot_2024-11-01_at_12.30.05_AM.png|700px]]&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Refactor query_participants_and_alert Method ===&lt;br /&gt;
==== What ====&lt;br /&gt;
The method `query_participants_and_alert` was refactored to improve readability and maintainability by splitting it into two distinct methods.&lt;br /&gt;
&lt;br /&gt;
==== Why ====&lt;br /&gt;
The method was initially complex, with inline logic that reduced readability.&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
The inline check for participants was moved to a new method `missing_participants?` in `assignment.rb`, which now simply checks if participants are blank. The alerting functionality was moved to a new `alert_missing_participants` method. This method generates a flash error message and adds a link to help the user add participants if they are missing.&lt;br /&gt;
&lt;br /&gt;
=== Clarify and Refactor Variable Naming for Clarity ===&lt;br /&gt;
==== a. `find_existing_assignment` Renamed to `assignment_by_name` ====&lt;br /&gt;
===== What =====&lt;br /&gt;
Renamed `find_existing_assignment` to `assignment_by_name`.&lt;br /&gt;
&lt;br /&gt;
===== Why =====&lt;br /&gt;
The original name was verbose and inconsistent with Ruby conventions.&lt;br /&gt;
&lt;br /&gt;
===== How =====&lt;br /&gt;
Renamed `find_existing_assignment` to `assignment_by_name` to more accurately describe the purpose of the variable.&lt;br /&gt;
&lt;br /&gt;
==== b. `exist_assignment` Renamed to `assignment_created` ====&lt;br /&gt;
===== What =====&lt;br /&gt;
Renamed `exist_assignment` to `assignment_created`.&lt;br /&gt;
&lt;br /&gt;
===== Why =====&lt;br /&gt;
The original name was ambiguous and could lead to confusion.&lt;br /&gt;
&lt;br /&gt;
===== How =====&lt;br /&gt;
Renamed `exist_assignment` to `assignment_created` to clearly indicate that the variable tracks the creation status of an assignment.&lt;br /&gt;
&lt;br /&gt;
==== c. `aq` Parameter Renamed to `assignment_questionnaire` ====&lt;br /&gt;
===== What =====&lt;br /&gt;
Renamed `aq` parameter to `assignment_questionnaire`.&lt;br /&gt;
&lt;br /&gt;
===== Why =====&lt;br /&gt;
The `aq` parameter used in loops lacked descriptive power, making it harder for developers to interpret its purpose.&lt;br /&gt;
&lt;br /&gt;
===== How =====&lt;br /&gt;
Renamed `aq` to `assignment_questionnaire` to better indicate the parameter’s context in assignment questionnaire iterations.&lt;br /&gt;
&lt;br /&gt;
=== Refactor Authorization Checks ===&lt;br /&gt;
==== What ====&lt;br /&gt;
Centralized privilege-checking logic by using helper methods from the `AuthorizationHelper` module.&lt;br /&gt;
&lt;br /&gt;
==== Why ====&lt;br /&gt;
Direct role checks created redundant code, as privilege-checking logic was scattered and duplicated.&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
Replaced direct role checks with calls to `current_user_has_instructor_privileges?` and `current_user_has_ta_privileges?`, enhancing maintainability and aligning with DRY principles.&lt;br /&gt;
&lt;br /&gt;
=== Simplify Array Usage in Create Method ===&lt;br /&gt;
==== What ====&lt;br /&gt;
Reduced complexity by removing unnecessary arrays in the `check` method.&lt;br /&gt;
&lt;br /&gt;
==== Why ====&lt;br /&gt;
The `check` method was generic and not expressive enough for its validation purposes, and `ques_array` and `due_array` added unnecessary complexity.&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
Renamed `check` to `validate`, making the method’s purpose clearer and aligning with common naming conventions. Removed `ques_array` and `due_array`, opting to directly traverse data structures where possible.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== '''Mentor''' ===&lt;br /&gt;
* Ameya Vaichalkar&lt;br /&gt;
&lt;br /&gt;
=== '''Members''' ===&lt;br /&gt;
* Avleen Mehal&lt;br /&gt;
* Daksh Pratap Singh&lt;br /&gt;
* Abhinav Sharma&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#[https://expertiza.ncsu.edu/ Expertiza]&lt;/div&gt;</summary>
		<author><name>Asharm67</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2450._Refactor_assignments_controller.rb&amp;diff=159093</id>
		<title>CSC/ECE 517 Fall 2024 - E2450. Refactor assignments controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2450._Refactor_assignments_controller.rb&amp;diff=159093"/>
		<updated>2024-11-12T16:32:10Z</updated>

		<summary type="html">&lt;p&gt;Asharm67: /* Phase 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About Controller ==&lt;br /&gt;
The `AssignmentsController` handles actions related to managing assignments.Key functionalities include initializing a new assignment in the `new` action and creating assignments through the `create` action, with validations to prevent duplicate names and directory paths. If creation succeeds, it redirects appropriately; otherwise, it renders the form with errors. This controller ensures smooth assignment management by enforcing proper validations and access control throughout the process.&lt;br /&gt;
== Functionality of assignments_controller ==&lt;br /&gt;
The `AssignmentsController` handles the management of assignments by providing actions for creating and initializing them while ensuring access control. It uses `before_action` callbacks to enforce authorization, ensuring only permitted users can interact with assignment-related features. The `new` action initializes a blank assignment object for form rendering, facilitating the creation of new assignments. Additionally, the `create` action is responsible for processing form submissions, validating input, and saving the assignment if it meets the criteria. This controller ensures that all assignment operations are secure, properly initialized, and follow the required business logic.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The `assignments_controller` presents difficulties due to its large size, intricate structure, and absence of comments, making it challenging for developers to grasp its functionality. To address these issues, a thorough refactor is advised, breaking down lengthy methods into smaller, more manageable sections. This strategy would modularize complex logic, assigning specific tasks to individual parts within the controller’s responsibilities. Furthermore, the refactor should aim to remove redundant code by consolidating repetitive sections into reusable functions or utilities, enhancing code quality and reducing the risk of errors. By restructuring the controller and improving its documentation, developers can better understand its operations, making maintenance, debugging, and future updates more straightforward.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
1. '''Refactor create method'''&lt;br /&gt;
&lt;br /&gt;
2. '''Refactor edit method'''&lt;br /&gt;
&lt;br /&gt;
3. '''Refactor update method'''&lt;br /&gt;
&lt;br /&gt;
4. '''Refactor delete method''': New models for subclasses will be implemented to streamline organization and simplify management.&lt;br /&gt;
&lt;br /&gt;
5. '''Reposition methods'''&lt;br /&gt;
&lt;br /&gt;
6. '''Enhance Comments'''&lt;br /&gt;
&lt;br /&gt;
7. '''Expand Test Coverage'''&lt;br /&gt;
&lt;br /&gt;
=== '''Phase 1''' ===&lt;br /&gt;
# Clarify and Refactor exist_assignment variable.  &lt;br /&gt;
# Clarify aq Parameter Naming in list_unassigned_rubrics &amp;amp; remove_existing_questionnaire.  &lt;br /&gt;
# Fixing the Github required checks.  &lt;br /&gt;
# Refactor Variable Naming for Clarity.  &lt;br /&gt;
# Review path Method Location.  &lt;br /&gt;
# Refactor Authorization Checks. &lt;br /&gt;
# Simplify Array Usage in Create Method.&lt;br /&gt;
# Refactor Method Names with 'Check'.&lt;br /&gt;
# Refactor query_participants_and_alert Method.&lt;br /&gt;
&lt;br /&gt;
=== '''Phase 2''' ===&lt;br /&gt;
Current Status&lt;br /&gt;
 We have successfully completed the following refactoring and functionality improvements:&lt;br /&gt;
  1. Refactor query_participants_and_alert Method&lt;br /&gt;
   Refactored query_participants_and_alert by splitting it into missing_participants? and alert_missing_participants for improved readability and       maintainability. &lt;br /&gt;
   The new missing_participants? method checks if participants are blank, while alert_missing_participants generates a flash error message with a link to add    missing participants.&lt;br /&gt;
 2. Clarify and Refactor Variable Naming for Clarity&lt;br /&gt;
  a. Renamed find_existing_assignment to assignment_by_name for consistency with Ruby conventions.&lt;br /&gt;
  b. Renamed exist_assignment to assignment_created to clearly indicate it tracks assignment creation status.&lt;br /&gt;
  c. Renamed the aq parameter to assignment_questionnaire for clarity in assignment questionnaire iterations.&lt;br /&gt;
 3. Refactor Authorization Checks&lt;br /&gt;
  Centralized privilege-checking logic by replacing direct role checks with helper methods current_user_has_instructor_privileges? and   current_user_has_ta_privileges?, enhancing maintainability and aligning with DRY principles.&lt;br /&gt;
 4. Simplify Array Usage in create Method&lt;br /&gt;
  Simplified the check method by renaming it to validate and removing unnecessary arrays (ques_array and due_array). Direct data structure traversal is now   used, reducing complexity and enhancing clarity.&lt;br /&gt;
These changes have been implemented and tested to ensure they meet the requirements for clarity, functionality, and performance.&lt;br /&gt;
&lt;br /&gt;
Issues and Plan of Action For Phase 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Assess Method Placement for Assignment Name Check&lt;br /&gt;
 Current Issue: The method that checks if an assignment name is already in use currently resides in the controller. This placement may violate the separation of concerns principle, as it could be more fitting for a model or service object to handle this validation.&lt;br /&gt;
 Plan: Analyze the current functionality of the assignment name check and determine if it involves complex logic that could be encapsulated within a service object or model. If it's a simple validation, move it to the model; for more complex operations, implement a service object to streamline the controller and enhance reusability across the application.&lt;br /&gt;
2. Simplify path_warning_and_answer_tag Method&lt;br /&gt;
 Current Issue: The path_warning_and_answer_tag method has a verbose name and may be performing multiple tasks, making it hard to read and maintain.&lt;br /&gt;
 Plan: Rename path_warning_and_answer_tag to a clear, action-oriented name and refactor the method by breaking it into smaller, single-purpose methods. Each new method should encapsulate one logical part of the process, improving readability, modularity, and simplifying future maintenance.&lt;br /&gt;
3. Evaluate Bookmarking Functionality&lt;br /&gt;
 Current Issue: Bookmarking assignments and managing badges may not be logically consistent within the current context, creating ambiguity about where and how these features should be implemented.&lt;br /&gt;
 Plan: Review the current use cases for bookmarking and badge handling to establish if these features align with the current controller or model. If they serve a broader purpose or require more context-specific handling, consider relocating them to a dedicated module or service. Create a detailed design proposal for implementing and managing these features effectively.&lt;br /&gt;
4. Move Assignment Management Methods to Model&lt;br /&gt;
 Current Issue: The methods remove_assignment_from_course and place_assignment_in_course are currently in the controller, but they deal with assignment management, which may belong more appropriately in the model.&lt;br /&gt;
 Plan: Move remove_assignment_from_course and place_assignment_in_course to the assignment model to adhere to the principle of separating concerns. Adjust the controller to call these model methods, keeping the controller focused on handling HTTP requests while the model manages data-related logic.&lt;br /&gt;
5. Reassess Delayed Mailer Methods&lt;br /&gt;
 Current Issue: The delayed_mailer and delete_delayed_mailer methods reside in the controller but may not need to be there, especially if they are used for background email processes that can be managed elsewhere.&lt;br /&gt;
 Plan: Evaluate the purpose and functionality of these delayed mailer methods. If they are intended to manage background processes, consider relocating them to a service object or a background job manager to enhance modularity. Ensure the new placement supports asynchronous processing while reducing the controller’s load.&lt;br /&gt;
6. Addressing Code Climate Issues&lt;br /&gt;
 Current Issue: Code climate flags include high complexity and excessive line count&lt;br /&gt;
 Plan: Refactor by:&lt;br /&gt;
  Splitting complex logic into smaller helper methods&lt;br /&gt;
  Reducing nested conditionals and loops&lt;br /&gt;
  Improving readability through concise naming and streamlined code&lt;br /&gt;
  These adjustments will enhance maintainability and meet Code Climate’s metrics for complexity and line limits.&lt;br /&gt;
7. Remove HTML Markup Code From the Controller&lt;br /&gt;
 Current Issue: There is HTML markup code present in the controller, especially in Flash messages&lt;br /&gt;
 Plan: Evaluate the current controller to identify HTML markup in Flash messages and remove it, adhering to MVC principles. Refactor the controller to pass raw, clean data (without HTML) to the view. In the view, update Flash message rendering to handle HTML formatting using Rails helpers like raw or sanitize for security. Test thoroughly to ensure functionality and proper display across browsers. Finally, update documentation and request a code review before deploying the changes.&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
All of the required checks for tests are passing. This is shown in the image below. The previously written test cases were not changed, just modified the cases to incorporate our refactoring.&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot_2024-11-01_at_12.30.05_AM.png|700px]]&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Refactor query_participants_and_alert Method ===&lt;br /&gt;
==== What ====&lt;br /&gt;
The method `query_participants_and_alert` was refactored to improve readability and maintainability by splitting it into two distinct methods.&lt;br /&gt;
&lt;br /&gt;
==== Why ====&lt;br /&gt;
The method was initially complex, with inline logic that reduced readability.&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
The inline check for participants was moved to a new method `missing_participants?` in `assignment.rb`, which now simply checks if participants are blank. The alerting functionality was moved to a new `alert_missing_participants` method. This method generates a flash error message and adds a link to help the user add participants if they are missing.&lt;br /&gt;
&lt;br /&gt;
=== Clarify and Refactor Variable Naming for Clarity ===&lt;br /&gt;
==== a. `find_existing_assignment` Renamed to `assignment_by_name` ====&lt;br /&gt;
===== What =====&lt;br /&gt;
Renamed `find_existing_assignment` to `assignment_by_name`.&lt;br /&gt;
&lt;br /&gt;
===== Why =====&lt;br /&gt;
The original name was verbose and inconsistent with Ruby conventions.&lt;br /&gt;
&lt;br /&gt;
===== How =====&lt;br /&gt;
Renamed `find_existing_assignment` to `assignment_by_name` to more accurately describe the purpose of the variable.&lt;br /&gt;
&lt;br /&gt;
==== b. `exist_assignment` Renamed to `assignment_created` ====&lt;br /&gt;
===== What =====&lt;br /&gt;
Renamed `exist_assignment` to `assignment_created`.&lt;br /&gt;
&lt;br /&gt;
===== Why =====&lt;br /&gt;
The original name was ambiguous and could lead to confusion.&lt;br /&gt;
&lt;br /&gt;
===== How =====&lt;br /&gt;
Renamed `exist_assignment` to `assignment_created` to clearly indicate that the variable tracks the creation status of an assignment.&lt;br /&gt;
&lt;br /&gt;
==== c. `aq` Parameter Renamed to `assignment_questionnaire` ====&lt;br /&gt;
===== What =====&lt;br /&gt;
Renamed `aq` parameter to `assignment_questionnaire`.&lt;br /&gt;
&lt;br /&gt;
===== Why =====&lt;br /&gt;
The `aq` parameter used in loops lacked descriptive power, making it harder for developers to interpret its purpose.&lt;br /&gt;
&lt;br /&gt;
===== How =====&lt;br /&gt;
Renamed `aq` to `assignment_questionnaire` to better indicate the parameter’s context in assignment questionnaire iterations.&lt;br /&gt;
&lt;br /&gt;
=== Refactor Authorization Checks ===&lt;br /&gt;
==== What ====&lt;br /&gt;
Centralized privilege-checking logic by using helper methods from the `AuthorizationHelper` module.&lt;br /&gt;
&lt;br /&gt;
==== Why ====&lt;br /&gt;
Direct role checks created redundant code, as privilege-checking logic was scattered and duplicated.&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
Replaced direct role checks with calls to `current_user_has_instructor_privileges?` and `current_user_has_ta_privileges?`, enhancing maintainability and aligning with DRY principles.&lt;br /&gt;
&lt;br /&gt;
=== Simplify Array Usage in Create Method ===&lt;br /&gt;
==== What ====&lt;br /&gt;
Reduced complexity by removing unnecessary arrays in the `check` method.&lt;br /&gt;
&lt;br /&gt;
==== Why ====&lt;br /&gt;
The `check` method was generic and not expressive enough for its validation purposes, and `ques_array` and `due_array` added unnecessary complexity.&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
Renamed `check` to `validate`, making the method’s purpose clearer and aligning with common naming conventions. Removed `ques_array` and `due_array`, opting to directly traverse data structures where possible.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== '''Mentor''' ===&lt;br /&gt;
* Ameya Vaichalkar&lt;br /&gt;
&lt;br /&gt;
=== '''Members''' ===&lt;br /&gt;
* Avleen Mehal&lt;br /&gt;
* Daksh Pratap Singh&lt;br /&gt;
* Abhinav Sharma&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#[https://expertiza.ncsu.edu/ Expertiza]&lt;/div&gt;</summary>
		<author><name>Asharm67</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2450._Refactor_assignments_controller.rb&amp;diff=159092</id>
		<title>CSC/ECE 517 Fall 2024 - E2450. Refactor assignments controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2450._Refactor_assignments_controller.rb&amp;diff=159092"/>
		<updated>2024-11-12T16:27:13Z</updated>

		<summary type="html">&lt;p&gt;Asharm67: /* Phase 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About Controller ==&lt;br /&gt;
The `AssignmentsController` handles actions related to managing assignments.Key functionalities include initializing a new assignment in the `new` action and creating assignments through the `create` action, with validations to prevent duplicate names and directory paths. If creation succeeds, it redirects appropriately; otherwise, it renders the form with errors. This controller ensures smooth assignment management by enforcing proper validations and access control throughout the process.&lt;br /&gt;
== Functionality of assignments_controller ==&lt;br /&gt;
The `AssignmentsController` handles the management of assignments by providing actions for creating and initializing them while ensuring access control. It uses `before_action` callbacks to enforce authorization, ensuring only permitted users can interact with assignment-related features. The `new` action initializes a blank assignment object for form rendering, facilitating the creation of new assignments. Additionally, the `create` action is responsible for processing form submissions, validating input, and saving the assignment if it meets the criteria. This controller ensures that all assignment operations are secure, properly initialized, and follow the required business logic.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The `assignments_controller` presents difficulties due to its large size, intricate structure, and absence of comments, making it challenging for developers to grasp its functionality. To address these issues, a thorough refactor is advised, breaking down lengthy methods into smaller, more manageable sections. This strategy would modularize complex logic, assigning specific tasks to individual parts within the controller’s responsibilities. Furthermore, the refactor should aim to remove redundant code by consolidating repetitive sections into reusable functions or utilities, enhancing code quality and reducing the risk of errors. By restructuring the controller and improving its documentation, developers can better understand its operations, making maintenance, debugging, and future updates more straightforward.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
1. '''Refactor create method'''&lt;br /&gt;
&lt;br /&gt;
2. '''Refactor edit method'''&lt;br /&gt;
&lt;br /&gt;
3. '''Refactor update method'''&lt;br /&gt;
&lt;br /&gt;
4. '''Refactor delete method''': New models for subclasses will be implemented to streamline organization and simplify management.&lt;br /&gt;
&lt;br /&gt;
5. '''Reposition methods'''&lt;br /&gt;
&lt;br /&gt;
6. '''Enhance Comments'''&lt;br /&gt;
&lt;br /&gt;
7. '''Expand Test Coverage'''&lt;br /&gt;
&lt;br /&gt;
=== '''Phase 1''' ===&lt;br /&gt;
# Clarify and Refactor exist_assignment variable.  &lt;br /&gt;
# Clarify aq Parameter Naming in list_unassigned_rubrics &amp;amp; remove_existing_questionnaire.  &lt;br /&gt;
# Fixing the Github required checks.  &lt;br /&gt;
# Refactor Variable Naming for Clarity.  &lt;br /&gt;
# Review path Method Location.  &lt;br /&gt;
# Refactor Authorization Checks. &lt;br /&gt;
# Simplify Array Usage in Create Method.&lt;br /&gt;
# Refactor Method Names with 'Check'.&lt;br /&gt;
# Refactor query_participants_and_alert Method.&lt;br /&gt;
&lt;br /&gt;
=== '''Phase 2''' ===&lt;br /&gt;
1. Assess Method Placement for Assignment Name Check&lt;br /&gt;
 Current Issue: The method that checks if an assignment name is already in use currently resides in the controller. This placement may violate the separation of concerns principle, as it could be more fitting for a model or service object to handle this validation.&lt;br /&gt;
 Plan: Analyze the current functionality of the assignment name check and determine if it involves complex logic that could be encapsulated within a service object or model. If it's a simple validation, move it to the model; for more complex operations, implement a service object to streamline the controller and enhance reusability across the application.&lt;br /&gt;
2. Simplify path_warning_and_answer_tag Method&lt;br /&gt;
 Current Issue: The path_warning_and_answer_tag method has a verbose name and may be performing multiple tasks, making it hard to read and maintain.&lt;br /&gt;
 Plan: Rename path_warning_and_answer_tag to a clear, action-oriented name and refactor the method by breaking it into smaller, single-purpose methods. Each new method should encapsulate one logical part of the process, improving readability, modularity, and simplifying future maintenance.&lt;br /&gt;
3. Evaluate Bookmarking Functionality&lt;br /&gt;
 Current Issue: Bookmarking assignments and managing badges may not be logically consistent within the current context, creating ambiguity about where and how these features should be implemented.&lt;br /&gt;
 Plan: Review the current use cases for bookmarking and badge handling to establish if these features align with the current controller or model. If they serve a broader purpose or require more context-specific handling, consider relocating them to a dedicated module or service. Create a detailed design proposal for implementing and managing these features effectively.&lt;br /&gt;
4. Move Assignment Management Methods to Model&lt;br /&gt;
 Current Issue: The methods remove_assignment_from_course and place_assignment_in_course are currently in the controller, but they deal with assignment management, which may belong more appropriately in the model.&lt;br /&gt;
 Plan: Move remove_assignment_from_course and place_assignment_in_course to the assignment model to adhere to the principle of separating concerns. Adjust the controller to call these model methods, keeping the controller focused on handling HTTP requests while the model manages data-related logic.&lt;br /&gt;
5. Reassess Delayed Mailer Methods&lt;br /&gt;
 Current Issue: The delayed_mailer and delete_delayed_mailer methods reside in the controller but may not need to be there, especially if they are used for background email processes that can be managed elsewhere.&lt;br /&gt;
 Plan: Evaluate the purpose and functionality of these delayed mailer methods. If they are intended to manage background processes, consider relocating them to a service object or a background job manager to enhance modularity. Ensure the new placement supports asynchronous processing while reducing the controller’s load.&lt;br /&gt;
6. Addressing Code Climate Issues&lt;br /&gt;
 Current Issue: Code climate flags include high complexity and excessive line count&lt;br /&gt;
 Plan: Refactor by:&lt;br /&gt;
  Splitting complex logic into smaller helper methods&lt;br /&gt;
  Reducing nested conditionals and loops&lt;br /&gt;
  Improving readability through concise naming and streamlined code&lt;br /&gt;
  These adjustments will enhance maintainability and meet Code Climate’s metrics for complexity and line limits.&lt;br /&gt;
7. Remove HTML Markup Code From the Controller&lt;br /&gt;
 Current Issue: There is HTML markup code present in the controller, especially in Flash messages&lt;br /&gt;
 Plan: Evaluate the current controller to identify HTML markup in Flash messages and remove it, adhering to MVC principles. Refactor the controller to pass raw, clean data (without HTML) to the view. In the view, update Flash message rendering to handle HTML formatting using Rails helpers like raw or sanitize for security. Test thoroughly to ensure functionality and proper display across browsers. Finally, update documentation and request a code review before deploying the changes.&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
All of the required checks for tests are passing. This is shown in the image below. The previously written test cases were not changed, just modified the cases to incorporate our refactoring.&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot_2024-11-01_at_12.30.05_AM.png|700px]]&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Refactor query_participants_and_alert Method ===&lt;br /&gt;
==== What ====&lt;br /&gt;
The method `query_participants_and_alert` was refactored to improve readability and maintainability by splitting it into two distinct methods.&lt;br /&gt;
&lt;br /&gt;
==== Why ====&lt;br /&gt;
The method was initially complex, with inline logic that reduced readability.&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
The inline check for participants was moved to a new method `missing_participants?` in `assignment.rb`, which now simply checks if participants are blank. The alerting functionality was moved to a new `alert_missing_participants` method. This method generates a flash error message and adds a link to help the user add participants if they are missing.&lt;br /&gt;
&lt;br /&gt;
=== Clarify and Refactor Variable Naming for Clarity ===&lt;br /&gt;
==== a. `find_existing_assignment` Renamed to `assignment_by_name` ====&lt;br /&gt;
===== What =====&lt;br /&gt;
Renamed `find_existing_assignment` to `assignment_by_name`.&lt;br /&gt;
&lt;br /&gt;
===== Why =====&lt;br /&gt;
The original name was verbose and inconsistent with Ruby conventions.&lt;br /&gt;
&lt;br /&gt;
===== How =====&lt;br /&gt;
Renamed `find_existing_assignment` to `assignment_by_name` to more accurately describe the purpose of the variable.&lt;br /&gt;
&lt;br /&gt;
==== b. `exist_assignment` Renamed to `assignment_created` ====&lt;br /&gt;
===== What =====&lt;br /&gt;
Renamed `exist_assignment` to `assignment_created`.&lt;br /&gt;
&lt;br /&gt;
===== Why =====&lt;br /&gt;
The original name was ambiguous and could lead to confusion.&lt;br /&gt;
&lt;br /&gt;
===== How =====&lt;br /&gt;
Renamed `exist_assignment` to `assignment_created` to clearly indicate that the variable tracks the creation status of an assignment.&lt;br /&gt;
&lt;br /&gt;
==== c. `aq` Parameter Renamed to `assignment_questionnaire` ====&lt;br /&gt;
===== What =====&lt;br /&gt;
Renamed `aq` parameter to `assignment_questionnaire`.&lt;br /&gt;
&lt;br /&gt;
===== Why =====&lt;br /&gt;
The `aq` parameter used in loops lacked descriptive power, making it harder for developers to interpret its purpose.&lt;br /&gt;
&lt;br /&gt;
===== How =====&lt;br /&gt;
Renamed `aq` to `assignment_questionnaire` to better indicate the parameter’s context in assignment questionnaire iterations.&lt;br /&gt;
&lt;br /&gt;
=== Refactor Authorization Checks ===&lt;br /&gt;
==== What ====&lt;br /&gt;
Centralized privilege-checking logic by using helper methods from the `AuthorizationHelper` module.&lt;br /&gt;
&lt;br /&gt;
==== Why ====&lt;br /&gt;
Direct role checks created redundant code, as privilege-checking logic was scattered and duplicated.&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
Replaced direct role checks with calls to `current_user_has_instructor_privileges?` and `current_user_has_ta_privileges?`, enhancing maintainability and aligning with DRY principles.&lt;br /&gt;
&lt;br /&gt;
=== Simplify Array Usage in Create Method ===&lt;br /&gt;
==== What ====&lt;br /&gt;
Reduced complexity by removing unnecessary arrays in the `check` method.&lt;br /&gt;
&lt;br /&gt;
==== Why ====&lt;br /&gt;
The `check` method was generic and not expressive enough for its validation purposes, and `ques_array` and `due_array` added unnecessary complexity.&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
Renamed `check` to `validate`, making the method’s purpose clearer and aligning with common naming conventions. Removed `ques_array` and `due_array`, opting to directly traverse data structures where possible.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== '''Mentor''' ===&lt;br /&gt;
* Ameya Vaichalkar&lt;br /&gt;
&lt;br /&gt;
=== '''Members''' ===&lt;br /&gt;
* Avleen Mehal&lt;br /&gt;
* Daksh Pratap Singh&lt;br /&gt;
* Abhinav Sharma&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#[https://expertiza.ncsu.edu/ Expertiza]&lt;/div&gt;</summary>
		<author><name>Asharm67</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2450._Refactor_assignments_controller.rb&amp;diff=159090</id>
		<title>CSC/ECE 517 Fall 2024 - E2450. Refactor assignments controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2450._Refactor_assignments_controller.rb&amp;diff=159090"/>
		<updated>2024-11-12T16:24:20Z</updated>

		<summary type="html">&lt;p&gt;Asharm67: /* Tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About Controller ==&lt;br /&gt;
The `AssignmentsController` handles actions related to managing assignments.Key functionalities include initializing a new assignment in the `new` action and creating assignments through the `create` action, with validations to prevent duplicate names and directory paths. If creation succeeds, it redirects appropriately; otherwise, it renders the form with errors. This controller ensures smooth assignment management by enforcing proper validations and access control throughout the process.&lt;br /&gt;
== Functionality of assignments_controller ==&lt;br /&gt;
The `AssignmentsController` handles the management of assignments by providing actions for creating and initializing them while ensuring access control. It uses `before_action` callbacks to enforce authorization, ensuring only permitted users can interact with assignment-related features. The `new` action initializes a blank assignment object for form rendering, facilitating the creation of new assignments. Additionally, the `create` action is responsible for processing form submissions, validating input, and saving the assignment if it meets the criteria. This controller ensures that all assignment operations are secure, properly initialized, and follow the required business logic.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The `assignments_controller` presents difficulties due to its large size, intricate structure, and absence of comments, making it challenging for developers to grasp its functionality. To address these issues, a thorough refactor is advised, breaking down lengthy methods into smaller, more manageable sections. This strategy would modularize complex logic, assigning specific tasks to individual parts within the controller’s responsibilities. Furthermore, the refactor should aim to remove redundant code by consolidating repetitive sections into reusable functions or utilities, enhancing code quality and reducing the risk of errors. By restructuring the controller and improving its documentation, developers can better understand its operations, making maintenance, debugging, and future updates more straightforward.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
1. '''Refactor create method'''&lt;br /&gt;
&lt;br /&gt;
2. '''Refactor edit method'''&lt;br /&gt;
&lt;br /&gt;
3. '''Refactor update method'''&lt;br /&gt;
&lt;br /&gt;
4. '''Refactor delete method''': New models for subclasses will be implemented to streamline organization and simplify management.&lt;br /&gt;
&lt;br /&gt;
5. '''Reposition methods'''&lt;br /&gt;
&lt;br /&gt;
6. '''Enhance Comments'''&lt;br /&gt;
&lt;br /&gt;
7. '''Expand Test Coverage'''&lt;br /&gt;
&lt;br /&gt;
=== '''Phase 1''' ===&lt;br /&gt;
# Clarify and Refactor exist_assignment variable.  &lt;br /&gt;
# Clarify aq Parameter Naming in list_unassigned_rubrics &amp;amp; remove_existing_questionnaire.  &lt;br /&gt;
# Fixing the Github required checks.  &lt;br /&gt;
# Refactor Variable Naming for Clarity.  &lt;br /&gt;
# Review path Method Location.  &lt;br /&gt;
# Refactor Authorization Checks. &lt;br /&gt;
# Simplify Array Usage in Create Method.&lt;br /&gt;
# Refactor Method Names with 'Check'.&lt;br /&gt;
# Refactor query_participants_and_alert Method.&lt;br /&gt;
&lt;br /&gt;
=== '''Phase 2''' ===&lt;br /&gt;
# Assess Method Placement for Assignment Name Check&lt;br /&gt;
Current Issue: The method that checks if an assignment name is already in use currently resides in the controller. This placement may violate the separation of concerns principle, as it could be more fitting for a model or service object to handle this validation.&lt;br /&gt;
Plan: Analyze the current functionality of the assignment name check and determine if it involves complex logic that could be encapsulated within a service object or model. If it's a simple validation, move it to the model; for more complex operations, implement a service object to streamline the controller and enhance reusability across the application.&lt;br /&gt;
# Simplify path_warning_and_answer_tag Method&lt;br /&gt;
Current Issue: The path_warning_and_answer_tag method has a verbose name and may be performing multiple tasks, making it hard to read and maintain.&lt;br /&gt;
Plan: Rename path_warning_and_answer_tag to a clear, action-oriented name and refactor the method by breaking it into smaller, single-purpose methods. Each new method should encapsulate one logical part of the process, improving readability, modularity, and simplifying future maintenance.&lt;br /&gt;
# Evaluate Bookmarking Functionality&lt;br /&gt;
Current Issue: Bookmarking assignments and managing badges may not be logically consistent within the current context, creating ambiguity about where and how these features should be implemented.&lt;br /&gt;
Plan: Review the current use cases for bookmarking and badge handling to establish if these features align with the current controller or model. If they serve a broader purpose or require more context-specific handling, consider relocating them to a dedicated module or service. Create a detailed design proposal for implementing and managing these features effectively.&lt;br /&gt;
# Move Assignment Management Methods to Model&lt;br /&gt;
Current Issue: The methods remove_assignment_from_course and place_assignment_in_course are currently in the controller, but they deal with assignment management, which may belong more appropriately in the model.&lt;br /&gt;
Plan: Move remove_assignment_from_course and place_assignment_in_course to the assignment model to adhere to the principle of separating concerns. Adjust the controller to call these model methods, keeping the controller focused on handling HTTP requests while the model manages data-related logic.&lt;br /&gt;
# Reassess Delayed Mailer Methods&lt;br /&gt;
Current Issue: The delayed_mailer and delete_delayed_mailer methods reside in the controller but may not need to be there, especially if they are used for background email processes that can be managed elsewhere.&lt;br /&gt;
Plan: Evaluate the purpose and functionality of these delayed mailer methods. If they are intended to manage background processes, consider relocating them to a service object or a background job manager to enhance modularity. Ensure the new placement supports asynchronous processing while reducing the controller’s load.&lt;br /&gt;
# Addressing Code Climate Issues&lt;br /&gt;
Current Issue: Code climate flags include high complexity and excessive line count&lt;br /&gt;
Plan: Refactor by:&lt;br /&gt;
Splitting complex logic into smaller helper methods&lt;br /&gt;
Reducing nested conditionals and loops&lt;br /&gt;
Improving readability through concise naming and streamlined code&lt;br /&gt;
These adjustments will enhance maintainability and meet Code Climate’s metrics for complexity and line limits.&lt;br /&gt;
# Remove HTML Markup Code From the Controller&lt;br /&gt;
Current Issue: There is HTML markup code present in the controller, especially in Flash messages&lt;br /&gt;
Plan: Evaluate the current controller to identify HTML markup in Flash messages and remove it, adhering to MVC principles. Refactor the controller to pass raw, clean data (without HTML) to the view. In the view, update Flash message rendering to handle HTML formatting using Rails helpers like raw or sanitize for security. Test thoroughly to ensure functionality and proper display across browsers. Finally, update documentation and request a code review before deploying the changes.&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
All of the required checks for tests are passing. This is shown in the image below. The previously written test cases were not changed, just modified the cases to incorporate our refactoring.&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot_2024-11-01_at_12.30.05_AM.png|700px]]&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Refactor query_participants_and_alert Method ===&lt;br /&gt;
==== What ====&lt;br /&gt;
The method `query_participants_and_alert` was refactored to improve readability and maintainability by splitting it into two distinct methods.&lt;br /&gt;
&lt;br /&gt;
==== Why ====&lt;br /&gt;
The method was initially complex, with inline logic that reduced readability.&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
The inline check for participants was moved to a new method `missing_participants?` in `assignment.rb`, which now simply checks if participants are blank. The alerting functionality was moved to a new `alert_missing_participants` method. This method generates a flash error message and adds a link to help the user add participants if they are missing.&lt;br /&gt;
&lt;br /&gt;
=== Clarify and Refactor Variable Naming for Clarity ===&lt;br /&gt;
==== a. `find_existing_assignment` Renamed to `assignment_by_name` ====&lt;br /&gt;
===== What =====&lt;br /&gt;
Renamed `find_existing_assignment` to `assignment_by_name`.&lt;br /&gt;
&lt;br /&gt;
===== Why =====&lt;br /&gt;
The original name was verbose and inconsistent with Ruby conventions.&lt;br /&gt;
&lt;br /&gt;
===== How =====&lt;br /&gt;
Renamed `find_existing_assignment` to `assignment_by_name` to more accurately describe the purpose of the variable.&lt;br /&gt;
&lt;br /&gt;
==== b. `exist_assignment` Renamed to `assignment_created` ====&lt;br /&gt;
===== What =====&lt;br /&gt;
Renamed `exist_assignment` to `assignment_created`.&lt;br /&gt;
&lt;br /&gt;
===== Why =====&lt;br /&gt;
The original name was ambiguous and could lead to confusion.&lt;br /&gt;
&lt;br /&gt;
===== How =====&lt;br /&gt;
Renamed `exist_assignment` to `assignment_created` to clearly indicate that the variable tracks the creation status of an assignment.&lt;br /&gt;
&lt;br /&gt;
==== c. `aq` Parameter Renamed to `assignment_questionnaire` ====&lt;br /&gt;
===== What =====&lt;br /&gt;
Renamed `aq` parameter to `assignment_questionnaire`.&lt;br /&gt;
&lt;br /&gt;
===== Why =====&lt;br /&gt;
The `aq` parameter used in loops lacked descriptive power, making it harder for developers to interpret its purpose.&lt;br /&gt;
&lt;br /&gt;
===== How =====&lt;br /&gt;
Renamed `aq` to `assignment_questionnaire` to better indicate the parameter’s context in assignment questionnaire iterations.&lt;br /&gt;
&lt;br /&gt;
=== Refactor Authorization Checks ===&lt;br /&gt;
==== What ====&lt;br /&gt;
Centralized privilege-checking logic by using helper methods from the `AuthorizationHelper` module.&lt;br /&gt;
&lt;br /&gt;
==== Why ====&lt;br /&gt;
Direct role checks created redundant code, as privilege-checking logic was scattered and duplicated.&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
Replaced direct role checks with calls to `current_user_has_instructor_privileges?` and `current_user_has_ta_privileges?`, enhancing maintainability and aligning with DRY principles.&lt;br /&gt;
&lt;br /&gt;
=== Simplify Array Usage in Create Method ===&lt;br /&gt;
==== What ====&lt;br /&gt;
Reduced complexity by removing unnecessary arrays in the `check` method.&lt;br /&gt;
&lt;br /&gt;
==== Why ====&lt;br /&gt;
The `check` method was generic and not expressive enough for its validation purposes, and `ques_array` and `due_array` added unnecessary complexity.&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
Renamed `check` to `validate`, making the method’s purpose clearer and aligning with common naming conventions. Removed `ques_array` and `due_array`, opting to directly traverse data structures where possible.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== '''Mentor''' ===&lt;br /&gt;
* Ameya Vaichalkar&lt;br /&gt;
&lt;br /&gt;
=== '''Members''' ===&lt;br /&gt;
* Avleen Mehal&lt;br /&gt;
* Daksh Pratap Singh&lt;br /&gt;
* Abhinav Sharma&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#[https://expertiza.ncsu.edu/ Expertiza]&lt;/div&gt;</summary>
		<author><name>Asharm67</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2450._Refactor_assignments_controller.rb&amp;diff=159089</id>
		<title>CSC/ECE 517 Fall 2024 - E2450. Refactor assignments controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2450._Refactor_assignments_controller.rb&amp;diff=159089"/>
		<updated>2024-11-12T16:22:42Z</updated>

		<summary type="html">&lt;p&gt;Asharm67: /* Tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About Controller ==&lt;br /&gt;
The `AssignmentsController` handles actions related to managing assignments.Key functionalities include initializing a new assignment in the `new` action and creating assignments through the `create` action, with validations to prevent duplicate names and directory paths. If creation succeeds, it redirects appropriately; otherwise, it renders the form with errors. This controller ensures smooth assignment management by enforcing proper validations and access control throughout the process.&lt;br /&gt;
== Functionality of assignments_controller ==&lt;br /&gt;
The `AssignmentsController` handles the management of assignments by providing actions for creating and initializing them while ensuring access control. It uses `before_action` callbacks to enforce authorization, ensuring only permitted users can interact with assignment-related features. The `new` action initializes a blank assignment object for form rendering, facilitating the creation of new assignments. Additionally, the `create` action is responsible for processing form submissions, validating input, and saving the assignment if it meets the criteria. This controller ensures that all assignment operations are secure, properly initialized, and follow the required business logic.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The `assignments_controller` presents difficulties due to its large size, intricate structure, and absence of comments, making it challenging for developers to grasp its functionality. To address these issues, a thorough refactor is advised, breaking down lengthy methods into smaller, more manageable sections. This strategy would modularize complex logic, assigning specific tasks to individual parts within the controller’s responsibilities. Furthermore, the refactor should aim to remove redundant code by consolidating repetitive sections into reusable functions or utilities, enhancing code quality and reducing the risk of errors. By restructuring the controller and improving its documentation, developers can better understand its operations, making maintenance, debugging, and future updates more straightforward.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
1. '''Refactor create method'''&lt;br /&gt;
&lt;br /&gt;
2. '''Refactor edit method'''&lt;br /&gt;
&lt;br /&gt;
3. '''Refactor update method'''&lt;br /&gt;
&lt;br /&gt;
4. '''Refactor delete method''': New models for subclasses will be implemented to streamline organization and simplify management.&lt;br /&gt;
&lt;br /&gt;
5. '''Reposition methods'''&lt;br /&gt;
&lt;br /&gt;
6. '''Enhance Comments'''&lt;br /&gt;
&lt;br /&gt;
7. '''Expand Test Coverage'''&lt;br /&gt;
&lt;br /&gt;
=== '''Phase 1''' ===&lt;br /&gt;
# Clarify and Refactor exist_assignment variable.  &lt;br /&gt;
# Clarify aq Parameter Naming in list_unassigned_rubrics &amp;amp; remove_existing_questionnaire.  &lt;br /&gt;
# Fixing the Github required checks.  &lt;br /&gt;
# Refactor Variable Naming for Clarity.  &lt;br /&gt;
# Review path Method Location.  &lt;br /&gt;
# Refactor Authorization Checks. &lt;br /&gt;
# Simplify Array Usage in Create Method.&lt;br /&gt;
# Refactor Method Names with 'Check'.&lt;br /&gt;
# Refactor query_participants_and_alert Method.&lt;br /&gt;
&lt;br /&gt;
=== '''Phase 2''' ===&lt;br /&gt;
1. Assess Method Placement for Assignment Name Check&lt;br /&gt;
Current Issue: The method that checks if an assignment name is already in use currently resides in the controller. This placement may violate the separation of concerns principle, as it could be more fitting for a model or service object to handle this validation.&lt;br /&gt;
Plan: Analyze the current functionality of the assignment name check and determine if it involves complex logic that could be encapsulated within a service object or model. If it's a simple validation, move it to the model; for more complex operations, implement a service object to streamline the controller and enhance reusability across the application.&lt;br /&gt;
2. Simplify path_warning_and_answer_tag Method&lt;br /&gt;
Current Issue: The path_warning_and_answer_tag method has a verbose name and may be performing multiple tasks, making it hard to read and maintain.&lt;br /&gt;
Plan: Rename path_warning_and_answer_tag to a clear, action-oriented name and refactor the method by breaking it into smaller, single-purpose methods. Each new method should encapsulate one logical part of the process, improving readability, modularity, and simplifying future maintenance.&lt;br /&gt;
3. Evaluate Bookmarking Functionality&lt;br /&gt;
Current Issue: Bookmarking assignments and managing badges may not be logically consistent within the current context, creating ambiguity about where and how these features should be implemented.&lt;br /&gt;
Plan: Review the current use cases for bookmarking and badge handling to establish if these features align with the current controller or model. If they serve a broader purpose or require more context-specific handling, consider relocating them to a dedicated module or service. Create a detailed design proposal for implementing and managing these features effectively.&lt;br /&gt;
4. Move Assignment Management Methods to Model&lt;br /&gt;
Current Issue: The methods remove_assignment_from_course and place_assignment_in_course are currently in the controller, but they deal with assignment management, which may belong more appropriately in the model.&lt;br /&gt;
Plan: Move remove_assignment_from_course and place_assignment_in_course to the assignment model to adhere to the principle of separating concerns. Adjust the controller to call these model methods, keeping the controller focused on handling HTTP requests while the model manages data-related logic.&lt;br /&gt;
5. Reassess Delayed Mailer Methods&lt;br /&gt;
Current Issue: The delayed_mailer and delete_delayed_mailer methods reside in the controller but may not need to be there, especially if they are used for background email processes that can be managed elsewhere.&lt;br /&gt;
Plan: Evaluate the purpose and functionality of these delayed mailer methods. If they are intended to manage background processes, consider relocating them to a service object or a background job manager to enhance modularity. Ensure the new placement supports asynchronous processing while reducing the controller’s load.&lt;br /&gt;
6. Addressing Code Climate Issues&lt;br /&gt;
Current Issue: Code climate flags include high complexity and excessive line count&lt;br /&gt;
Plan: Refactor by:&lt;br /&gt;
Splitting complex logic into smaller helper methods&lt;br /&gt;
Reducing nested conditionals and loops&lt;br /&gt;
Improving readability through concise naming and streamlined code&lt;br /&gt;
These adjustments will enhance maintainability and meet Code Climate’s metrics for complexity and line limits.&lt;br /&gt;
7. Remove HTML Markup Code From Controller&lt;br /&gt;
Current Issue: There is HTML markup code present in the controller, especially in Flash messages&lt;br /&gt;
Plan: Evaluate the current controller to identify HTML markup in Flash messages and remove it, adhering to MVC principles. Refactor the controller to pass raw, clean data (without HTML) to the view. In the view, update Flash message rendering to handle HTML formatting using Rails helpers like raw or sanitize for security. Test thoroughly to ensure functionality and proper display across browsers. Finally, update documentation and request a code review before deploying the changes.&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
All of the required checks for tests are passing. This is shown in the image below. The previously written test cases were not changed, just modified the cases to incorporate our refactoring.&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot_2024-11-01_at_12.30.05_AM.png|700px]]&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Refactor query_participants_and_alert Method ===&lt;br /&gt;
==== What ====&lt;br /&gt;
The method `query_participants_and_alert` was refactored to improve readability and maintainability by splitting it into two distinct methods.&lt;br /&gt;
&lt;br /&gt;
==== Why ====&lt;br /&gt;
The method was initially complex, with inline logic that reduced readability.&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
The inline check for participants was moved to a new method `missing_participants?` in `assignment.rb`, which now simply checks if participants are blank. The alerting functionality was moved to a new `alert_missing_participants` method. This method generates a flash error message and adds a link to help the user add participants if they are missing.&lt;br /&gt;
&lt;br /&gt;
=== Clarify and Refactor Variable Naming for Clarity ===&lt;br /&gt;
==== a. `find_existing_assignment` Renamed to `assignment_by_name` ====&lt;br /&gt;
===== What =====&lt;br /&gt;
Renamed `find_existing_assignment` to `assignment_by_name`.&lt;br /&gt;
&lt;br /&gt;
===== Why =====&lt;br /&gt;
The original name was verbose and inconsistent with Ruby conventions.&lt;br /&gt;
&lt;br /&gt;
===== How =====&lt;br /&gt;
Renamed `find_existing_assignment` to `assignment_by_name` to more accurately describe the purpose of the variable.&lt;br /&gt;
&lt;br /&gt;
==== b. `exist_assignment` Renamed to `assignment_created` ====&lt;br /&gt;
===== What =====&lt;br /&gt;
Renamed `exist_assignment` to `assignment_created`.&lt;br /&gt;
&lt;br /&gt;
===== Why =====&lt;br /&gt;
The original name was ambiguous and could lead to confusion.&lt;br /&gt;
&lt;br /&gt;
===== How =====&lt;br /&gt;
Renamed `exist_assignment` to `assignment_created` to clearly indicate that the variable tracks the creation status of an assignment.&lt;br /&gt;
&lt;br /&gt;
==== c. `aq` Parameter Renamed to `assignment_questionnaire` ====&lt;br /&gt;
===== What =====&lt;br /&gt;
Renamed `aq` parameter to `assignment_questionnaire`.&lt;br /&gt;
&lt;br /&gt;
===== Why =====&lt;br /&gt;
The `aq` parameter used in loops lacked descriptive power, making it harder for developers to interpret its purpose.&lt;br /&gt;
&lt;br /&gt;
===== How =====&lt;br /&gt;
Renamed `aq` to `assignment_questionnaire` to better indicate the parameter’s context in assignment questionnaire iterations.&lt;br /&gt;
&lt;br /&gt;
=== Refactor Authorization Checks ===&lt;br /&gt;
==== What ====&lt;br /&gt;
Centralized privilege-checking logic by using helper methods from the `AuthorizationHelper` module.&lt;br /&gt;
&lt;br /&gt;
==== Why ====&lt;br /&gt;
Direct role checks created redundant code, as privilege-checking logic was scattered and duplicated.&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
Replaced direct role checks with calls to `current_user_has_instructor_privileges?` and `current_user_has_ta_privileges?`, enhancing maintainability and aligning with DRY principles.&lt;br /&gt;
&lt;br /&gt;
=== Simplify Array Usage in Create Method ===&lt;br /&gt;
==== What ====&lt;br /&gt;
Reduced complexity by removing unnecessary arrays in the `check` method.&lt;br /&gt;
&lt;br /&gt;
==== Why ====&lt;br /&gt;
The `check` method was generic and not expressive enough for its validation purposes, and `ques_array` and `due_array` added unnecessary complexity.&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
Renamed `check` to `validate`, making the method’s purpose clearer and aligning with common naming conventions. Removed `ques_array` and `due_array`, opting to directly traverse data structures where possible.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== '''Mentor''' ===&lt;br /&gt;
* Ameya Vaichalkar&lt;br /&gt;
&lt;br /&gt;
=== '''Members''' ===&lt;br /&gt;
* Avleen Mehal&lt;br /&gt;
* Daksh Pratap Singh&lt;br /&gt;
* Abhinav Sharma&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#[https://expertiza.ncsu.edu/ Expertiza]&lt;/div&gt;</summary>
		<author><name>Asharm67</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2450._Refactor_assignments_controller.rb&amp;diff=158266</id>
		<title>CSC/ECE 517 Fall 2024 - E2450. Refactor assignments controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2450._Refactor_assignments_controller.rb&amp;diff=158266"/>
		<updated>2024-10-30T02:33:29Z</updated>

		<summary type="html">&lt;p&gt;Asharm67: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About Controller ==&lt;br /&gt;
The `AssignmentsController` handles actions related to managing assignments.Key functionalities include initializing a new assignment in the `new` action and creating assignments through the `create` action, with validations to prevent duplicate names and directory paths. If creation succeeds, it redirects appropriately; otherwise, it renders the form with errors. This controller ensures smooth assignment management by enforcing proper validations and access control throughout the process.&lt;br /&gt;
== Functionality of assignments_controller ==&lt;br /&gt;
The `AssignmentsController` handles the management of assignments by providing actions for creating and initializing them while ensuring access control. It uses `before_action` callbacks to enforce authorization, ensuring only permitted users can interact with assignment-related features. The `new` action initializes a blank assignment object for form rendering, facilitating the creation of new assignments. Additionally, the `create` action is responsible for processing form submissions, validating input, and saving the assignment if it meets the criteria. This controller ensures that all assignment operations are secure, properly initialized, and follow the required business logic.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The `assignments_controller` presents difficulties due to its large size, intricate structure, and absence of comments, making it challenging for developers to grasp its functionality. To address these issues, a thorough refactor is advised, breaking down lengthy methods into smaller, more manageable sections. This strategy would modularize complex logic, assigning specific tasks to individual parts within the controller’s responsibilities. Furthermore, the refactor should aim to remove redundant code by consolidating repetitive sections into reusable functions or utilities, enhancing code quality and reducing the risk of errors. By restructuring the controller and improving its documentation, developers can better understand its operations, making maintenance, debugging, and future updates more straightforward.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
1. '''Refactor create method'''&lt;br /&gt;
&lt;br /&gt;
2. '''Refactor edit method'''&lt;br /&gt;
&lt;br /&gt;
3. '''Refactor update method'''&lt;br /&gt;
&lt;br /&gt;
4. '''Refactor delete method''': New models for subclasses will be implemented to streamline organization and simplify management.&lt;br /&gt;
&lt;br /&gt;
5. '''Reposition methods'''&lt;br /&gt;
&lt;br /&gt;
6. '''Enhance Comments'''&lt;br /&gt;
&lt;br /&gt;
7. '''Expand Test Coverage'''&lt;br /&gt;
&lt;br /&gt;
=== '''Phase 1''' ===&lt;br /&gt;
# Clarify and Refactor exist_assignment variable.  &lt;br /&gt;
# Clarify aq Parameter Naming in list_unassigned_rubrics &amp;amp; remove_existing_questionnaire.  &lt;br /&gt;
# Fixing the Github required checks.  &lt;br /&gt;
# Refactor Variable Naming for Clarity.  &lt;br /&gt;
# Review path Method Location.  &lt;br /&gt;
# Refactor Authorization Checks. &lt;br /&gt;
# Simplify Array Usage in Create Method.&lt;br /&gt;
# Refactor Method Names with 'Check'.&lt;br /&gt;
# Refactor query_participants_and_alert Method.&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
# To do&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== '''Clarify and Refactor exist_assignment variable. ''' ===&lt;br /&gt;
==== What ====&lt;br /&gt;
Todo.&lt;br /&gt;
==== Why ====&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
=== '''Clarify aq Parameter Naming in list_unassigned_rubrics &amp;amp; remove_existing_questionnaire''' === &lt;br /&gt;
==== What ====&lt;br /&gt;
Todo.&lt;br /&gt;
==== Why ====&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Fixing the Github required checks''' === &lt;br /&gt;
==== What ====&lt;br /&gt;
Todo.&lt;br /&gt;
==== Why ====&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Refactor Variable Naming for Clarity''' === &lt;br /&gt;
==== What ====&lt;br /&gt;
Todo.&lt;br /&gt;
==== Why ====&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Review path Method Location''' === &lt;br /&gt;
==== What ====&lt;br /&gt;
Todo.&lt;br /&gt;
==== Why ====&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Refactor Authorization Checks''' === &lt;br /&gt;
==== What ====&lt;br /&gt;
Todo.&lt;br /&gt;
==== Why ====&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Simplify Array Usage in Create Method''' === &lt;br /&gt;
==== What ====&lt;br /&gt;
Todo.&lt;br /&gt;
==== Why ====&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Refactor Method Names with 'Check'''' === &lt;br /&gt;
==== What ====&lt;br /&gt;
Todo.&lt;br /&gt;
==== Why ====&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''Refactor query_participants_and_alert Method''' === &lt;br /&gt;
==== What ====&lt;br /&gt;
Todo.&lt;br /&gt;
==== Why ====&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== '''Mentor''' ===&lt;br /&gt;
* Ameya Vaichalkar&lt;br /&gt;
&lt;br /&gt;
=== '''Members''' ===&lt;br /&gt;
* Avleen Mehal&lt;br /&gt;
* Daksh Pratap Singh&lt;br /&gt;
* Abhinav Sharma&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#[https://expertiza.ncsu.edu/ Expertiza]&lt;/div&gt;</summary>
		<author><name>Asharm67</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2450._Refactor_assignments_controller.rb&amp;diff=158263</id>
		<title>CSC/ECE 517 Fall 2024 - E2450. Refactor assignments controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2450._Refactor_assignments_controller.rb&amp;diff=158263"/>
		<updated>2024-10-30T02:32:50Z</updated>

		<summary type="html">&lt;p&gt;Asharm67: /* Clarify and Refactor exist_assignment variable.  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About Controller ==&lt;br /&gt;
The `AssignmentsController` handles actions related to managing assignments.Key functionalities include initializing a new assignment in the `new` action and creating assignments through the `create` action, with validations to prevent duplicate names and directory paths. If creation succeeds, it redirects appropriately; otherwise, it renders the form with errors. This controller ensures smooth assignment management by enforcing proper validations and access control throughout the process.&lt;br /&gt;
== Functionality of assignments_controller ==&lt;br /&gt;
The `AssignmentsController` handles the management of assignments by providing actions for creating and initializing them while ensuring access control. It uses `before_action` callbacks to enforce authorization, ensuring only permitted users can interact with assignment-related features. The `new` action initializes a blank assignment object for form rendering, facilitating the creation of new assignments. Additionally, the `create` action is responsible for processing form submissions, validating input, and saving the assignment if it meets the criteria. This controller ensures that all assignment operations are secure, properly initialized, and follow the required business logic.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The `assignments_controller` presents difficulties due to its large size, intricate structure, and absence of comments, making it challenging for developers to grasp its functionality. To address these issues, a thorough refactor is advised, breaking down lengthy methods into smaller, more manageable sections. This strategy would modularize complex logic, assigning specific tasks to individual parts within the controller’s responsibilities. Furthermore, the refactor should aim to remove redundant code by consolidating repetitive sections into reusable functions or utilities, enhancing code quality and reducing the risk of errors. By restructuring the controller and improving its documentation, developers can better understand its operations, making maintenance, debugging, and future updates more straightforward.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
1. '''Refactor create method'''&lt;br /&gt;
&lt;br /&gt;
2. '''Refactor edit method'''&lt;br /&gt;
&lt;br /&gt;
3. '''Refactor update method'''&lt;br /&gt;
&lt;br /&gt;
4. '''Refactor delete method''': New models for subclasses will be implemented to streamline organization and simplify management.&lt;br /&gt;
&lt;br /&gt;
5. '''Reposition methods'''&lt;br /&gt;
&lt;br /&gt;
6. '''Enhance Comments'''&lt;br /&gt;
&lt;br /&gt;
7. '''Expand Test Coverage'''&lt;br /&gt;
&lt;br /&gt;
=== '''Phase 1''' ===&lt;br /&gt;
# Clarify and Refactor exist_assignment variable.  &lt;br /&gt;
# Clarify aq Parameter Naming in list_unassigned_rubrics &amp;amp; remove_existing_questionnaire.  &lt;br /&gt;
# Fixing the Github required checks.  &lt;br /&gt;
# Refactor Variable Naming for Clarity.  &lt;br /&gt;
# Review path Method Location.  &lt;br /&gt;
# Refactor Authorization Checks. &lt;br /&gt;
# Simplify Array Usage in Create Method.&lt;br /&gt;
# Refactor Method Names with 'Check'.&lt;br /&gt;
# Refactor query_participants_and_alert Method.&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
# To do&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== '''Clarify and Refactor exist_assignment variable. ''' ===&lt;br /&gt;
==== What ====&lt;br /&gt;
Todo.&lt;br /&gt;
==== Why ====&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
==== How ====&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
=== '''Clarify aq Parameter Naming in list_unassigned_rubrics &amp;amp; remove_existing_questionnaire''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
*Todo&lt;br /&gt;
&lt;br /&gt;
=== '''Fixing the Github required checks''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
*Todo&lt;br /&gt;
&lt;br /&gt;
=== '''Refactor Variable Naming for Clarity''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
=== '''Review path Method Location''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo &lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
=== '''Refactor Authorization Checks''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
&lt;br /&gt;
=== '''Simplify Array Usage in Create Method''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
&lt;br /&gt;
=== '''Refactor Method Names with 'Check'''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
&lt;br /&gt;
=== '''Refactor query_participants_and_alert Method''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== '''Mentor''' ===&lt;br /&gt;
* Ameya Vaichalkar&lt;br /&gt;
&lt;br /&gt;
=== '''Members''' ===&lt;br /&gt;
* Avleen Mehal&lt;br /&gt;
* Daksh Pratap Singh&lt;br /&gt;
* Abhinav Sharma&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#[https://expertiza.ncsu.edu/ Expertiza]&lt;/div&gt;</summary>
		<author><name>Asharm67</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2450._Refactor_assignments_controller.rb&amp;diff=158261</id>
		<title>CSC/ECE 517 Fall 2024 - E2450. Refactor assignments controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2450._Refactor_assignments_controller.rb&amp;diff=158261"/>
		<updated>2024-10-30T02:32:22Z</updated>

		<summary type="html">&lt;p&gt;Asharm67: /* Tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About Controller ==&lt;br /&gt;
The `AssignmentsController` handles actions related to managing assignments.Key functionalities include initializing a new assignment in the `new` action and creating assignments through the `create` action, with validations to prevent duplicate names and directory paths. If creation succeeds, it redirects appropriately; otherwise, it renders the form with errors. This controller ensures smooth assignment management by enforcing proper validations and access control throughout the process.&lt;br /&gt;
== Functionality of assignments_controller ==&lt;br /&gt;
The `AssignmentsController` handles the management of assignments by providing actions for creating and initializing them while ensuring access control. It uses `before_action` callbacks to enforce authorization, ensuring only permitted users can interact with assignment-related features. The `new` action initializes a blank assignment object for form rendering, facilitating the creation of new assignments. Additionally, the `create` action is responsible for processing form submissions, validating input, and saving the assignment if it meets the criteria. This controller ensures that all assignment operations are secure, properly initialized, and follow the required business logic.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The `assignments_controller` presents difficulties due to its large size, intricate structure, and absence of comments, making it challenging for developers to grasp its functionality. To address these issues, a thorough refactor is advised, breaking down lengthy methods into smaller, more manageable sections. This strategy would modularize complex logic, assigning specific tasks to individual parts within the controller’s responsibilities. Furthermore, the refactor should aim to remove redundant code by consolidating repetitive sections into reusable functions or utilities, enhancing code quality and reducing the risk of errors. By restructuring the controller and improving its documentation, developers can better understand its operations, making maintenance, debugging, and future updates more straightforward.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
1. '''Refactor create method'''&lt;br /&gt;
&lt;br /&gt;
2. '''Refactor edit method'''&lt;br /&gt;
&lt;br /&gt;
3. '''Refactor update method'''&lt;br /&gt;
&lt;br /&gt;
4. '''Refactor delete method''': New models for subclasses will be implemented to streamline organization and simplify management.&lt;br /&gt;
&lt;br /&gt;
5. '''Reposition methods'''&lt;br /&gt;
&lt;br /&gt;
6. '''Enhance Comments'''&lt;br /&gt;
&lt;br /&gt;
7. '''Expand Test Coverage'''&lt;br /&gt;
&lt;br /&gt;
=== '''Phase 1''' ===&lt;br /&gt;
# Clarify and Refactor exist_assignment variable.  &lt;br /&gt;
# Clarify aq Parameter Naming in list_unassigned_rubrics &amp;amp; remove_existing_questionnaire.  &lt;br /&gt;
# Fixing the Github required checks.  &lt;br /&gt;
# Refactor Variable Naming for Clarity.  &lt;br /&gt;
# Review path Method Location.  &lt;br /&gt;
# Refactor Authorization Checks. &lt;br /&gt;
# Simplify Array Usage in Create Method.&lt;br /&gt;
# Refactor Method Names with 'Check'.&lt;br /&gt;
# Refactor query_participants_and_alert Method.&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
# To do&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== '''Clarify and Refactor exist_assignment variable. ''' ===&lt;br /&gt;
==== Original Code ====&lt;br /&gt;
Todo.&lt;br /&gt;
==== Updated Code ====&lt;br /&gt;
Todo&lt;br /&gt;
=== '''Clarify aq Parameter Naming in list_unassigned_rubrics &amp;amp; remove_existing_questionnaire''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
*Todo&lt;br /&gt;
&lt;br /&gt;
=== '''Fixing the Github required checks''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
*Todo&lt;br /&gt;
&lt;br /&gt;
=== '''Refactor Variable Naming for Clarity''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
=== '''Review path Method Location''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo &lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
=== '''Refactor Authorization Checks''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
&lt;br /&gt;
=== '''Simplify Array Usage in Create Method''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
&lt;br /&gt;
=== '''Refactor Method Names with 'Check'''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
&lt;br /&gt;
=== '''Refactor query_participants_and_alert Method''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== '''Mentor''' ===&lt;br /&gt;
* Ameya Vaichalkar&lt;br /&gt;
&lt;br /&gt;
=== '''Members''' ===&lt;br /&gt;
* Avleen Mehal&lt;br /&gt;
* Daksh Pratap Singh&lt;br /&gt;
* Abhinav Sharma&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#[https://expertiza.ncsu.edu/ Expertiza]&lt;/div&gt;</summary>
		<author><name>Asharm67</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2450._Refactor_assignments_controller.rb&amp;diff=158250</id>
		<title>CSC/ECE 517 Fall 2024 - E2450. Refactor assignments controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2450._Refactor_assignments_controller.rb&amp;diff=158250"/>
		<updated>2024-10-30T02:30:20Z</updated>

		<summary type="html">&lt;p&gt;Asharm67: Created page with &amp;quot;== About Controller == The `AssignmentsController` handles actions related to managing assignments.Key functionalities include initializing a new assignment in the `new` action and creating assignments through the `create` action, with validations to prevent duplicate names and directory paths. If creation succeeds, it redirects appropriately; otherwise, it renders the form with errors. This controller ensures smooth assignment management by enforcing proper validations...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About Controller ==&lt;br /&gt;
The `AssignmentsController` handles actions related to managing assignments.Key functionalities include initializing a new assignment in the `new` action and creating assignments through the `create` action, with validations to prevent duplicate names and directory paths. If creation succeeds, it redirects appropriately; otherwise, it renders the form with errors. This controller ensures smooth assignment management by enforcing proper validations and access control throughout the process.&lt;br /&gt;
== Functionality of assignments_controller ==&lt;br /&gt;
The `AssignmentsController` handles the management of assignments by providing actions for creating and initializing them while ensuring access control. It uses `before_action` callbacks to enforce authorization, ensuring only permitted users can interact with assignment-related features. The `new` action initializes a blank assignment object for form rendering, facilitating the creation of new assignments. Additionally, the `create` action is responsible for processing form submissions, validating input, and saving the assignment if it meets the criteria. This controller ensures that all assignment operations are secure, properly initialized, and follow the required business logic.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The `assignments_controller` presents difficulties due to its large size, intricate structure, and absence of comments, making it challenging for developers to grasp its functionality. To address these issues, a thorough refactor is advised, breaking down lengthy methods into smaller, more manageable sections. This strategy would modularize complex logic, assigning specific tasks to individual parts within the controller’s responsibilities. Furthermore, the refactor should aim to remove redundant code by consolidating repetitive sections into reusable functions or utilities, enhancing code quality and reducing the risk of errors. By restructuring the controller and improving its documentation, developers can better understand its operations, making maintenance, debugging, and future updates more straightforward.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
1. '''Refactor create method'''&lt;br /&gt;
&lt;br /&gt;
2. '''Refactor edit method'''&lt;br /&gt;
&lt;br /&gt;
3. '''Refactor update method'''&lt;br /&gt;
&lt;br /&gt;
4. '''Refactor delete method''': New models for subclasses will be implemented to streamline organization and simplify management.&lt;br /&gt;
&lt;br /&gt;
5. '''Reposition methods'''&lt;br /&gt;
&lt;br /&gt;
6. '''Enhance Comments''': Additional comments will be included where helpful, and any vague or redundant comments will be clarified or removed.&lt;br /&gt;
&lt;br /&gt;
7. '''Expand Test Coverage''': The test suite will be extended to ensure thorough testing, particularly following the refactoring process.&lt;br /&gt;
&lt;br /&gt;
=== '''Phase 1''' ===&lt;br /&gt;
# Clarify and Refactor exist_assignment variable.  &lt;br /&gt;
# Clarify aq Parameter Naming in list_unassigned_rubrics &amp;amp; remove_existing_questionnaire.  &lt;br /&gt;
# Fixing the Github required checks.  &lt;br /&gt;
# Refactor Variable Naming for Clarity.  &lt;br /&gt;
# Review path Method Location.  &lt;br /&gt;
# Refactor Authorization Checks. &lt;br /&gt;
# Simplify Array Usage in Create Method.&lt;br /&gt;
# Refactor Method Names with 'Check'.&lt;br /&gt;
# Refactor query_participants_and_alert Method.&lt;br /&gt;
&lt;br /&gt;
== Test Cases ==&lt;br /&gt;
# To do&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== '''Clarify and Refactor exist_assignment variable. ''' ===&lt;br /&gt;
==== Original Code ====&lt;br /&gt;
Todo.&lt;br /&gt;
==== Updated Code ====&lt;br /&gt;
Todo&lt;br /&gt;
=== '''Clarify aq Parameter Naming in list_unassigned_rubrics &amp;amp; remove_existing_questionnaire''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
*Todo&lt;br /&gt;
&lt;br /&gt;
=== '''Fixing the Github required checks''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
*Todo&lt;br /&gt;
&lt;br /&gt;
=== '''Refactor Variable Naming for Clarity''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
=== '''Review path Method Location''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo &lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
=== '''Refactor Authorization Checks''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
&lt;br /&gt;
=== '''Simplify Array Usage in Create Method''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
&lt;br /&gt;
=== '''Refactor Method Names with 'Check'''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
&lt;br /&gt;
=== '''Refactor query_participants_and_alert Method''' === &lt;br /&gt;
==== Original Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
==== Updated Code ==== &lt;br /&gt;
*Todo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== '''Mentor''' ===&lt;br /&gt;
* Ameya Vaichalkar&lt;br /&gt;
&lt;br /&gt;
=== '''Members''' ===&lt;br /&gt;
* Avleen Mehal&lt;br /&gt;
* Daksh Pratap Singh&lt;br /&gt;
* Abhinav Sharma&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#[https://expertiza.ncsu.edu/ Expertiza]&lt;/div&gt;</summary>
		<author><name>Asharm67</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024&amp;diff=158089</id>
		<title>CSC/ECE 517 Fall 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024&amp;diff=158089"/>
		<updated>2024-10-30T01:39:16Z</updated>

		<summary type="html">&lt;p&gt;Asharm67: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[CSC/ECE 517 Fall 2024 - E2450. Refactor assignments_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2452. Refactor review_mapping_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2453. Refactor review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2454. Refactor student_task.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2456. Refactor teams_user.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2455. Refactor sign_up_sheet_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2458. User management and users table]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2459. View for results of bidding]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2460 Mentor-Meeting Management]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2461. UI for Courses]]&lt;br /&gt;
* [https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2462._UI_for_Questionnaires CSC/ECE 517 Fall 2024 - E2462. UI for Questionnaire.rb]&lt;br /&gt;
* [https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2463_Implement_Front_End_for_Student_Task_List CSC/ECE 517 Fall 2024 - E2463. UI for Student Task List]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2464 UI for Project Topics (was: Sign_up_Topics)]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2465. UI for Institutions and Notification]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2466. UI for Impersonate User]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2467. UI for View Submissions]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2468. Reimplement due_date]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2469. Reimplement grades/view_team]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2470. Reimplement grades_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2471. Reimplement logger]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2475. Reimplement student_task view]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2478. Reimplement the Question hierarchy as Item hierarchy]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2480. Implement testing for new Bookmarks Controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2482. Reimplement heatgrid for reviews]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2481 Reimplement response_map.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - G2401 Refactor Graphql API endpoint for contribution metrics]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - G2402 Refactor Graphql API endpoint for repositories]]&lt;/div&gt;</summary>
		<author><name>Asharm67</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024&amp;diff=158088</id>
		<title>CSC/ECE 517 Fall 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024&amp;diff=158088"/>
		<updated>2024-10-30T01:38:56Z</updated>

		<summary type="html">&lt;p&gt;Asharm67: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[CSC/ECE 517 Fall 2024 - E2450. Refactor assignments_controller.rb&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2452. Refactor review_mapping_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2453. Refactor review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2454. Refactor student_task.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2456. Refactor teams_user.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2455. Refactor sign_up_sheet_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2458. User management and users table]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2459. View for results of bidding]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2460 Mentor-Meeting Management]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2461. UI for Courses]]&lt;br /&gt;
* [https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2462._UI_for_Questionnaires CSC/ECE 517 Fall 2024 - E2462. UI for Questionnaire.rb]&lt;br /&gt;
* [https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2463_Implement_Front_End_for_Student_Task_List CSC/ECE 517 Fall 2024 - E2463. UI for Student Task List]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2464 UI for Project Topics (was: Sign_up_Topics)]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2465. UI for Institutions and Notification]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2466. UI for Impersonate User]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2467. UI for View Submissions]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2468. Reimplement due_date]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2469. Reimplement grades/view_team]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2470. Reimplement grades_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2471. Reimplement logger]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2475. Reimplement student_task view]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2478. Reimplement the Question hierarchy as Item hierarchy]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2480. Implement testing for new Bookmarks Controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2482. Reimplement heatgrid for reviews]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2481 Reimplement response_map.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - G2401 Refactor Graphql API endpoint for contribution metrics]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - G2402 Refactor Graphql API endpoint for repositories]]&lt;/div&gt;</summary>
		<author><name>Asharm67</name></author>
	</entry>
</feed>