<?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=Asivaga</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=Asivaga"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Asivaga"/>
	<updated>2026-08-20T04:02:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1934_-_Grading_Audit_Trail&amp;diff=124524</id>
		<title>E1934 - Grading Audit Trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1934_-_Grading_Audit_Trail&amp;diff=124524"/>
		<updated>2019-04-26T20:12:42Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: /* Files to be Modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Introduction'''==&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
After an instructor gave a grade to an assignment, there is no way to track who gave the grade.&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored: &lt;br /&gt;
:1. When a grade is assigned by an instructor, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
:2. Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information needs to be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
Currently, there are two places need to add grading audit trail: &lt;br /&gt;
:1. '''Review grade''': Log in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Review Report&lt;br /&gt;
:2. '''Submission grade''': Log in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View submissions&lt;br /&gt;
&lt;br /&gt;
=='''Proposed Solution'''==&lt;br /&gt;
&lt;br /&gt;
===Design===&lt;br /&gt;
We plan to create a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
We will use MVC design to create a model, a controller, and a view for both of '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes contains instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
We will also need to modify grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
===Expected View===&lt;br /&gt;
&lt;br /&gt;
==== The list submission page with the new &amp;quot;grade history&amp;quot; option====&lt;br /&gt;
[[Image: E1869-Screenshot-1.jpg|50]]&lt;br /&gt;
&lt;br /&gt;
==== The review report page with the new &amp;quot;grade history&amp;quot; option====&lt;br /&gt;
[[File:E1869-Screenshot-2.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Grade history for a given team====&lt;br /&gt;
[[File:E1869-Screenshot-3.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Diagram===&lt;br /&gt;
[[File:E1869_Grading_Audit_Trails_UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Testing Plan'''==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test if SubmissionGradeHistory.create is being called when a submission grade is changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test if ReviewGradeHistory.create is being called when a submission grade is changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test if GradeHistory.where is being called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
===Code Changes===&lt;br /&gt;
&lt;br /&gt;
==Files to be Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/reports/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
==Files to be Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=='''Reference'''==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/CSC/E1869_GRADING_AUDIT_TRAIL Previous Project Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Main_Page Expertiza_wiki]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza Github]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1934_-_Grading_Audit_Trail&amp;diff=124522</id>
		<title>E1934 - Grading Audit Trail</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1934_-_Grading_Audit_Trail&amp;diff=124522"/>
		<updated>2019-04-26T20:12:02Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: /* Previous Work */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Introduction'''==&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
After an instructor gave a grade to an assignment, there is no way to track who gave the grade.&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored: &lt;br /&gt;
:1. When a grade is assigned by an instructor, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
:2. Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information needs to be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
Currently, there are two places need to add grading audit trail: &lt;br /&gt;
:1. '''Review grade''': Log in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Review Report&lt;br /&gt;
:2. '''Submission grade''': Log in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View submissions&lt;br /&gt;
&lt;br /&gt;
=='''Proposed Solution'''==&lt;br /&gt;
&lt;br /&gt;
===Design===&lt;br /&gt;
We plan to create a database called grading_history in the system which stores elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
We will use MVC design to create a model, a controller, and a view for both of '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes contains instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
We will also need to modify grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
===Expected View===&lt;br /&gt;
&lt;br /&gt;
==== The list submission page with the new &amp;quot;grade history&amp;quot; option====&lt;br /&gt;
[[Image: E1869-Screenshot-1.jpg|50]]&lt;br /&gt;
&lt;br /&gt;
==== The review report page with the new &amp;quot;grade history&amp;quot; option====&lt;br /&gt;
[[File:E1869-Screenshot-2.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Grade history for a given team====&lt;br /&gt;
[[File:E1869-Screenshot-3.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Diagram===&lt;br /&gt;
[[File:E1869_Grading_Audit_Trails_UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Testing Plan'''==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test if SubmissionGradeHistory.create is being called when a submission grade is changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test if ReviewGradeHistory.create is being called when a submission grade is changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test if GradeHistory.where is being called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
===Code Changes===&lt;br /&gt;
&lt;br /&gt;
==Files to be Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
==Files to be Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validating Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=='''Reference'''==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/CSC/E1869_GRADING_AUDIT_TRAIL Previous Project Documentation]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Main_Page Expertiza_wiki]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza Github]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1934_-_Grading_Audit_Trial&amp;diff=123453</id>
		<title>E1934 - Grading Audit Trial</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1934_-_Grading_Audit_Trial&amp;diff=123453"/>
		<updated>2019-04-07T23:58:43Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: /* Files Modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Introduction'''==&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
After an instructor gave a grade to an assignment, there is no way to track who gave the grade.&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored: &lt;br /&gt;
:1. When a grade is assigned by an instructor, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
:2. Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information needs to be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
Currently, there are two places need to add grading audit trail: &lt;br /&gt;
:1. '''Review grade''': Log in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Review Report&lt;br /&gt;
:2. '''Submission grade''': Log in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View submissions&lt;br /&gt;
&lt;br /&gt;
=='''Proposed Solution'''==&lt;br /&gt;
&lt;br /&gt;
===Design===&lt;br /&gt;
We will create a database called grading_history in the system contains elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
We will use MVC design to create a model, a controller, and a view for both of '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes contains instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
We also need to modified grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
===Expected View===&lt;br /&gt;
&lt;br /&gt;
==== The list submission page with the new &amp;quot;grade history&amp;quot; option====&lt;br /&gt;
[[Image: E1869-Screenshot-1.jpg|50]]&lt;br /&gt;
&lt;br /&gt;
==== The review report page with the new &amp;quot;grade history&amp;quot; option====&lt;br /&gt;
[[File:E1869-Screenshot-2.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Grade history for a given team====&lt;br /&gt;
[[File:E1869-Screenshot-3.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Diagram===&lt;br /&gt;
[[File:E1869_Grading_Audit_Trails_UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Testing Plan'''==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test if SubmissionGradeHistory.create is being called when a submission grade is changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test if ReviewGradeHistory.create is being called when a submission grade is changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test if GradeHistory.where is being called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
=='''Actual Implementation'''==&lt;br /&gt;
===Actual View===&lt;br /&gt;
== The list submission page with the new &amp;quot;grade history&amp;quot; option==&lt;br /&gt;
[[File:E1869-Actual-1.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Review Report page with the new &amp;quot;grade history&amp;quot; option==&lt;br /&gt;
[[File:E1869-Actual-3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Grade history page for a given team(submission grade history)==&lt;br /&gt;
[[File:E1869-Actual-2.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Grade history for a given student(review grade history)==&lt;br /&gt;
[[File:E1869-Actual-4.png]]&lt;br /&gt;
&lt;br /&gt;
===Code Changes===&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb &lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validaing Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=='''Reference'''==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Main_Page Expertiza_wiki]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza Github]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1934_-_Grading_Audit_Trial&amp;diff=123452</id>
		<title>E1934 - Grading Audit Trial</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1934_-_Grading_Audit_Trial&amp;diff=123452"/>
		<updated>2019-04-07T23:58:21Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: /* Files Added */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Introduction'''==&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
After an instructor gave a grade to an assignment, there is no way to track who gave the grade.&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored: &lt;br /&gt;
:1. When a grade is assigned by an instructor, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
:2. Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information needs to be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
Currently, there are two places need to add grading audit trail: &lt;br /&gt;
:1. '''Review grade''': Log in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Review Report&lt;br /&gt;
:2. '''Submission grade''': Log in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View submissions&lt;br /&gt;
&lt;br /&gt;
=='''Proposed Solution'''==&lt;br /&gt;
&lt;br /&gt;
===Design===&lt;br /&gt;
We will create a database called grading_history in the system contains elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
We will use MVC design to create a model, a controller, and a view for both of '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes contains instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
We also need to modified grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
===Expected View===&lt;br /&gt;
&lt;br /&gt;
==== The list submission page with the new &amp;quot;grade history&amp;quot; option====&lt;br /&gt;
[[Image: E1869-Screenshot-1.jpg|50]]&lt;br /&gt;
&lt;br /&gt;
==== The review report page with the new &amp;quot;grade history&amp;quot; option====&lt;br /&gt;
[[File:E1869-Screenshot-2.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Grade history for a given team====&lt;br /&gt;
[[File:E1869-Screenshot-3.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Diagram===&lt;br /&gt;
[[File:E1869_Grading_Audit_Trails_UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Testing Plan'''==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test if SubmissionGradeHistory.create is being called when a submission grade is changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test if ReviewGradeHistory.create is being called when a submission grade is changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test if GradeHistory.where is being called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
=='''Actual Implementation'''==&lt;br /&gt;
===Actual View===&lt;br /&gt;
== The list submission page with the new &amp;quot;grade history&amp;quot; option==&lt;br /&gt;
[[File:E1869-Actual-1.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Review Report page with the new &amp;quot;grade history&amp;quot; option==&lt;br /&gt;
[[File:E1869-Actual-3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Grade history page for a given team(submission grade history)==&lt;br /&gt;
[[File:E1869-Actual-2.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Grade history for a given student(review grade history)==&lt;br /&gt;
[[File:E1869-Actual-4.png]]&lt;br /&gt;
&lt;br /&gt;
===Code Changes===&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb https://bit.ly/2Cg9WzR&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb https://bit.ly/2QywzZc&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb https://bit.ly/2UHNRkO&lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb https://bit.ly/2GfTqUj&lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validaing Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=='''Reference'''==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Main_Page Expertiza_wiki]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza Github]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1934_-_Grading_Audit_Trial&amp;diff=123439</id>
		<title>E1934 - Grading Audit Trial</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1934_-_Grading_Audit_Trial&amp;diff=123439"/>
		<updated>2019-04-07T22:45:38Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: /* Testing Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Introduction'''==&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
After an instructor gave a grade to an assignment, there is no way to track who gave the grade.&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored: &lt;br /&gt;
:1. When a grade is assigned by an instructor, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
:2. Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information needs to be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
Currently, there are two places need to add grading audit trail: &lt;br /&gt;
:1. '''Review grade''': Log in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Review Report&lt;br /&gt;
:2. '''Submission grade''': Log in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View submissions&lt;br /&gt;
&lt;br /&gt;
=='''Proposed Solution'''==&lt;br /&gt;
&lt;br /&gt;
===Design===&lt;br /&gt;
We will create a database called grading_history in the system contains elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
We will use MVC design to create a model, a controller, and a view for both of '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes contains instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
We also need to modified grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
===Expected View===&lt;br /&gt;
&lt;br /&gt;
==== The list submission page with the new &amp;quot;grade history&amp;quot; option====&lt;br /&gt;
[[Image: E1869-Screenshot-1.jpg|50]]&lt;br /&gt;
&lt;br /&gt;
==== The review report page with the new &amp;quot;grade history&amp;quot; option====&lt;br /&gt;
[[File:E1869-Screenshot-2.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Grade history for a given team====&lt;br /&gt;
[[File:E1869-Screenshot-3.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Diagram===&lt;br /&gt;
[[File:E1869_Grading_Audit_Trails_UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Testing Plan'''==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test if SubmissionGradeHistory.create is being called when a submission grade is changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
2. Test if ReviewGradeHistory.create is being called when a submission grade is changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb &lt;br /&gt;
&lt;br /&gt;
3. Test if GradeHistory.where is being called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb&lt;br /&gt;
&lt;br /&gt;
=='''Actual Implementation'''==&lt;br /&gt;
===Actual View===&lt;br /&gt;
== The list submission page with the new &amp;quot;grade history&amp;quot; option==&lt;br /&gt;
[[File:E1869-Actual-1.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Review Report page with the new &amp;quot;grade history&amp;quot; option==&lt;br /&gt;
[[File:E1869-Actual-3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Grade history page for a given team(submission grade history)==&lt;br /&gt;
[[File:E1869-Actual-2.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Grade history for a given student(review grade history)==&lt;br /&gt;
[[File:E1869-Actual-4.png]]&lt;br /&gt;
&lt;br /&gt;
===Code Changes===&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb https://bit.ly/2Cg9WzR&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb https://bit.ly/2QywzZc&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb https://bit.ly/2UHNRkO&lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb https://bit.ly/2GfTqUj&lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb https://bit.ly/2RY5xa6&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validaing Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb https://bit.ly/2PHKNRY&lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb https://bit.ly/2SPNR0e &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb https://bit.ly/2S5EI3J&lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb https://bit.ly/2rDiZF1&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=='''Reference'''==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Main_Page Expertiza_wiki]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza Github]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1934_-_Grading_Audit_Trial&amp;diff=123224</id>
		<title>E1934 - Grading Audit Trial</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1934_-_Grading_Audit_Trial&amp;diff=123224"/>
		<updated>2019-04-05T21:05:52Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: Created page with &amp;quot;=='''Introduction'''==  ===Problem Statement=== After an instructor gave a grade to an assignment, there is no way to track who gave the grade. A grading audit trail must be crea...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Introduction'''==&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
After an instructor gave a grade to an assignment, there is no way to track who gave the grade.&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored: &lt;br /&gt;
:1. When a grade is assigned by an instructor, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
:2. Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information needs to be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
Currently, there are two places need to add grading audit trail: &lt;br /&gt;
:1. '''Review grade''': Log in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Review Report&lt;br /&gt;
:2. '''Submission grade''': Log in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View submissions&lt;br /&gt;
&lt;br /&gt;
=='''Proposed Solution'''==&lt;br /&gt;
&lt;br /&gt;
===Design===&lt;br /&gt;
We will create a database called grading_history in the system contains elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
We will use MVC design to create a model, a controller, and a view for both of '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes contains instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
We also need to modified grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
===Expected View===&lt;br /&gt;
&lt;br /&gt;
==== The list submission page with the new &amp;quot;grade history&amp;quot; option====&lt;br /&gt;
[[Image: E1869-Screenshot-1.jpg|50]]&lt;br /&gt;
&lt;br /&gt;
==== The review report page with the new &amp;quot;grade history&amp;quot; option====&lt;br /&gt;
[[File:E1869-Screenshot-2.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Grade history for a given team====&lt;br /&gt;
[[File:E1869-Screenshot-3.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Diagram===&lt;br /&gt;
[[File:E1869_Grading_Audit_Trails_UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Testing Plan'''==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test if SubmissionGradeHistory.create is being called when a submission grade is changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb https://bit.ly/2EpJaGS&lt;br /&gt;
&lt;br /&gt;
2. Test if ReviewGradeHistory.create is being called when a submission grade is changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb https://bit.ly/2LjM4OF&lt;br /&gt;
&lt;br /&gt;
3. Test if GradeHistory.where is being called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb https://bit.ly/2PFLknz&lt;br /&gt;
&lt;br /&gt;
=='''Actual Implementation'''==&lt;br /&gt;
===Actual View===&lt;br /&gt;
== The list submission page with the new &amp;quot;grade history&amp;quot; option==&lt;br /&gt;
[[File:E1869-Actual-1.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Review Report page with the new &amp;quot;grade history&amp;quot; option==&lt;br /&gt;
[[File:E1869-Actual-3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Grade history page for a given team(submission grade history)==&lt;br /&gt;
[[File:E1869-Actual-2.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Grade history for a given student(review grade history)==&lt;br /&gt;
[[File:E1869-Actual-4.png]]&lt;br /&gt;
&lt;br /&gt;
===Code Changes===&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb https://bit.ly/2Cg9WzR&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb https://bit.ly/2QywzZc&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb https://bit.ly/2UHNRkO&lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb https://bit.ly/2GfTqUj&lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb https://bit.ly/2RY5xa6&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validaing Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb https://bit.ly/2PHKNRY&lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb https://bit.ly/2SPNR0e &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb https://bit.ly/2S5EI3J&lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb https://bit.ly/2rDiZF1&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=='''Reference'''==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Main_Page Expertiza_wiki]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza Github]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2019&amp;diff=123223</id>
		<title>CSC/ECE 517 Spring 2019</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2019&amp;diff=123223"/>
		<updated>2019-04-05T21:05:44Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[CSC/ECE 517 Spring 2019 - Project E1905. Refactor questionnaires_controller.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2019 - Project E1916. Fix Code Climate issues in controllers with names beginning with A through N]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2019 - Project E1906. Refactor stage deadlines in Assignment.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2019 - Project M1901 Implement missing WebAudio automation support]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2019 - Project E1917. Fix Code Climate issues in controllers with names beginning with P through Z]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2019 - Project E1921. Write tests for popup controller.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2019 - M1902 Refactor bluetooth support for better maintainability]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2019 - E1922. Write tests for assessment360 controller.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2019 - Project E1907 Refactor response controller]]&lt;br /&gt;
*[[CSC/ECE_517_Spring_2019_-_Project_E1903._Create_quiz_questionnaires_controller.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Spring_2019_-_Project_E1913. Refactor_review_mapping_helper.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Spring_2019_-_E1919_CodeClimate_Issues]]&lt;br /&gt;
*[[CSC/ECE_517_Spring_2019_-_Project_E1912. Export_Tagged_Comments]]&lt;br /&gt;
*[[CSC/ECE_517_Spring_2019/E1927_Let_Course_Staff_as_Well_as_Students_Do_Reviews]]&lt;br /&gt;
*[[E1911_Refactor_Criterion]]&lt;br /&gt;
*[[E1934 - Grading Audit Trial]]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Grading_Audit&amp;diff=123220</id>
		<title>Grading Audit</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Grading_Audit&amp;diff=123220"/>
		<updated>2019-04-05T21:03:52Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: Created page with &amp;quot;=='''Introduction'''==  ===Problem Statement=== After an instructor gave a grade to an assignment, there is no way to track who gave the grade. A grading audit trail must be crea...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Introduction'''==&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
After an instructor gave a grade to an assignment, there is no way to track who gave the grade.&lt;br /&gt;
A grading audit trail must be created and the following information needs to be stored: &lt;br /&gt;
:1. When a grade is assigned by an instructor, there needs to be an indication of who did it and when it was done. &lt;br /&gt;
:2. Comments previously provided by other instructors must also be preserved.&lt;br /&gt;
&lt;br /&gt;
This information needs to be stored every time an instructor edits a grade/comment and clicks the save button.&lt;br /&gt;
&lt;br /&gt;
Currently, there are two places need to add grading audit trail: &lt;br /&gt;
:1. '''Review grade''': Log in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View Review Report&lt;br /&gt;
:2. '''Submission grade''': Log in as instructor -&amp;gt; Manage -&amp;gt; Assignments -&amp;gt; View submissions&lt;br /&gt;
&lt;br /&gt;
=='''Proposed Solution'''==&lt;br /&gt;
&lt;br /&gt;
===Design===&lt;br /&gt;
We will create a database called grading_history in the system contains elements of instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
&lt;br /&gt;
We will use MVC design to create a model, a controller, and a view for both of '''Review Grade''' and '''Submission Grade'''.&lt;br /&gt;
&lt;br /&gt;
:Model: grading_history.rb. Has a list of attributes contains instructor id, assignment id, grade type, student id, grade, comment, and timestamp.&lt;br /&gt;
:Controller: grading_history_controller.rb. Saves a new entry into the database every time a review grade or submission grade is saved&lt;br /&gt;
:View: index_html.erb. Displays current submission or review's grading history. An existing example of this is a submission record in the system.&lt;br /&gt;
&lt;br /&gt;
We also need to modified grades controller, so that every time, a grade is submitted or edited, grading_history_controller.rb will call a method to create an entry saves into the database.&lt;br /&gt;
&lt;br /&gt;
===Expected View===&lt;br /&gt;
&lt;br /&gt;
==== The list submission page with the new &amp;quot;grade history&amp;quot; option====&lt;br /&gt;
[[Image: E1869-Screenshot-1.jpg|50]]&lt;br /&gt;
&lt;br /&gt;
==== The review report page with the new &amp;quot;grade history&amp;quot; option====&lt;br /&gt;
[[File:E1869-Screenshot-2.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Grade history for a given team====&lt;br /&gt;
[[File:E1869-Screenshot-3.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Diagram===&lt;br /&gt;
[[File:E1869_Grading_Audit_Trails_UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''Testing Plan'''==&lt;br /&gt;
&lt;br /&gt;
Functional testing:&lt;br /&gt;
&lt;br /&gt;
1. Test if SubmissionGradeHistory.create is being called when a submission grade is changed. &lt;br /&gt;
   spec/controllers/grades_controller_spec.rb https://bit.ly/2EpJaGS&lt;br /&gt;
&lt;br /&gt;
2. Test if ReviewGradeHistory.create is being called when a submission grade is changed. &lt;br /&gt;
   spec/controllers/review_mapping_controller_spec.rb https://bit.ly/2LjM4OF&lt;br /&gt;
&lt;br /&gt;
3. Test if GradeHistory.where is being called when grading history button is clicked.&lt;br /&gt;
   spec/controllers/grading_histories_controller_test.rb https://bit.ly/2PFLknz&lt;br /&gt;
&lt;br /&gt;
=='''Actual Implementation'''==&lt;br /&gt;
===Actual View===&lt;br /&gt;
== The list submission page with the new &amp;quot;grade history&amp;quot; option==&lt;br /&gt;
[[File:E1869-Actual-1.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Review Report page with the new &amp;quot;grade history&amp;quot; option==&lt;br /&gt;
[[File:E1869-Actual-3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Grade history page for a given team(submission grade history)==&lt;br /&gt;
[[File:E1869-Actual-2.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Grade history for a given student(review grade history)==&lt;br /&gt;
[[File:E1869-Actual-4.png]]&lt;br /&gt;
&lt;br /&gt;
===Code Changes===&lt;br /&gt;
&lt;br /&gt;
==Files Modified==&lt;br /&gt;
*app/controllers/grades_controller.rb https://bit.ly/2Cg9WzR&lt;br /&gt;
'''&lt;br /&gt;
     Creates a Grading History Record for every Submission grade edited by the instructor for a Team. &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/controllers/review_mapping_controller.rb https://bit.ly/2QywzZc&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
     Creates a Grading History Record for every Review grade edited by the instructor for a Student.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/assignments/list_submissions.html.erb https://bit.ly/2UHNRkO&lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* app/views/review_mapping/_review_report.html.erb https://bit.ly/2GfTqUj&lt;br /&gt;
'''&lt;br /&gt;
     Add code to support view changes for Grade Record&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
==Files Added==&lt;br /&gt;
&lt;br /&gt;
*app/controllers/grading_histories_controller.rb https://bit.ly/2RY5xa6&lt;br /&gt;
'''&lt;br /&gt;
     Calls the grading history view after validaing Submission and Review Type.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/grading_history.rb https://bit.ly/2PHKNRY&lt;br /&gt;
'''&lt;br /&gt;
     Model for Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/review_grading_history.rb https://bit.ly/2SPNR0e &lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Review Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/models/submission_grading_history.rb https://bit.ly/2S5EI3J&lt;br /&gt;
'''&lt;br /&gt;
     Model containing specifics of Submission Grading History. Inherits Grading History.&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*app/views/grading_history/index_html.erb https://bit.ly/2rDiZF1&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
     This is a view for grading audit trail, it will display all grading histories of a submission/review&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
=='''Reference'''==&lt;br /&gt;
[https://expertiza.ncsu.edu/ Expertiza]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Main_Page Expertiza_wiki]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation Expertiza Documentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza Github]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2019&amp;diff=123218</id>
		<title>CSC/ECE 517 Spring 2019</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2019&amp;diff=123218"/>
		<updated>2019-04-05T21:03:17Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[CSC/ECE 517 Spring 2019 - Project E1905. Refactor questionnaires_controller.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2019 - Project E1916. Fix Code Climate issues in controllers with names beginning with A through N]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2019 - Project E1906. Refactor stage deadlines in Assignment.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2019 - Project M1901 Implement missing WebAudio automation support]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2019 - Project E1917. Fix Code Climate issues in controllers with names beginning with P through Z]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2019 - Project E1921. Write tests for popup controller.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2019 - M1902 Refactor bluetooth support for better maintainability]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2019 - E1922. Write tests for assessment360 controller.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2019 - Project E1907 Refactor response controller]]&lt;br /&gt;
*[[CSC/ECE_517_Spring_2019_-_Project_E1903._Create_quiz_questionnaires_controller.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Spring_2019_-_Project_E1913. Refactor_review_mapping_helper.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Spring_2019_-_E1919_CodeClimate_Issues]]&lt;br /&gt;
*[[CSC/ECE_517_Spring_2019_-_Project_E1912. Export_Tagged_Comments]]&lt;br /&gt;
*[[CSC/ECE_517_Spring_2019/E1927_Let_Course_Staff_as_Well_as_Students_Do_Reviews]]&lt;br /&gt;
*[[E1911_Refactor_Criterion]]&lt;br /&gt;
*[[Grading Audit]]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=123167</id>
		<title>E1902 ahp project</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=123167"/>
		<updated>2019-04-02T17:06:03Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: /* Additional Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using Ruby on Rails framework.Expertiza allows the instructor to create new assignments and customize new or existing assignments.The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)[1].Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;When students' accounts are created by importing a CSV file on the Users page, they receive e-mails with their user-ID and password. But if an account is created by adding them as participants to an assignment when they don't already have an account, e-mail is not sent. Students should receive e-mails upon account creation, regardless of how their account is created.  So this involves adding a call to the e-mailer … or, perhaps, moving an email call from the Users controller to the point where an account is actually created.&lt;br /&gt;
&amp;lt;li&amp;gt; Second, evidently if a submission is revised after review, the system e-mails the reviewer saying to revise the review. This is just fine ... except if the last round of review is in progress.The message telling reviewers to revise their reviews should not be sent after the last review deadline has passed.  It would also be nice to fix the message so it tells which review (Review 1, Review 2, etc.) has been revised, and gives the reviewer a link directly to it.&lt;br /&gt;
&amp;lt;li&amp;gt;Deadline reminders should include a link on where to go to perform the needed function.&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/models/assignment_participant.rb&lt;br /&gt;
* app/models/assignment.rb&lt;br /&gt;
* app/models/course_participant.rb&lt;br /&gt;
* app/controllers/submitted_content_controller.rb&lt;br /&gt;
* app/mailers/delayed_mailer.rb&lt;br /&gt;
* lib/tasks/background_email_reminder.rake&lt;br /&gt;
* spec/models/assignment_particpant_spec.rb&lt;br /&gt;
&lt;br /&gt;
==Implementation approach==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1) Email sent when user is added as a participant to assignment :''' &lt;br /&gt;
&lt;br /&gt;
When students' accounts are created by importing a CSV file on the Users page,they receive e-mails but not when user was added as a participant to the assignment. We added a method in the assignment_participant.rb file (model) to send mails when a participant is added to an assignment on the assignment page by importing a CSV file. We have also added a method in the course_participant.rb file(model), to send the mail when a Course participant is added by importing a CSV file. Both functionalities are implemented  using the method from the MailerHelper class i.e send_mail_to_user().&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2) Sending email to reviewer when new submission is availble:''' &lt;br /&gt;
&lt;br /&gt;
Added functionality to send email to the reviewer when new submission is available by making changes in the submitted_content_controller and assignment_participant model.The method handled boundary constraints like checking whether the round was valid and disabling email notification after the last round of review.&lt;br /&gt;
&lt;br /&gt;
Code to check if it was the valid round&lt;br /&gt;
&lt;br /&gt;
In the assignment_participant.rb,&lt;br /&gt;
Firstly, fetched the topic_id from the SignedUpTeam class and got the next due date using the DueDate model&lt;br /&gt;
Finally compared the round of the Due date with the number of review rounds of the assignments, to verify if its the final round.&lt;br /&gt;
&lt;br /&gt;
Extra functionality of specifying the current review round and providing the direct link to reviewer in the mail itself also implemented in the submitted_content controller using the ReviewResponseMap and Response class.&lt;br /&gt;
&lt;br /&gt;
In the submitted_content_controller.rb,&lt;br /&gt;
We mapped the reviewer_id and reviewee_id, fetched from participants, using the ReviewResponseMap class.&lt;br /&gt;
For all such mappings retrieved, we are fetching the last response id, which is then passed as the URL suffix to redirect the reviewer to the appropriate page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3) Including a specific link for the  deadline reminders email functionality for reviewers  :''' &lt;br /&gt;
&lt;br /&gt;
Added a review_reminder_email method and mail_reviewers method in the delayed_mailer.rb file which implemented the functionality for sending deadline reminder mails which includes a link on where to go and perform the specific task.&lt;br /&gt;
Prepared a hash named email_list using the email and participant_id, for each participant who is a reviewer.&lt;br /&gt;
Using this hash, we are calling the review_reminder_email function.&lt;br /&gt;
In this function, based on the due date for the deadline_type(i.e reviewer), we fetch the participant id of the same and add it as the suffix in the URL to be visited by the reviewer.&lt;br /&gt;
Also, the logic of the copy of mail to the instructor is also taken care.&lt;br /&gt;
Notice that the link in the instructor's email will contain the '?id=' field of the last participant fetched.&lt;br /&gt;
&lt;br /&gt;
In the background_email_reminder.rake file,&lt;br /&gt;
Earlier only the emails for the participants were fetched, but now we are fetching the hash containing the email and response_id. The response_id field was fetched as per the below order in the code-&lt;br /&gt;
participants.review_mappings -&amp;gt; allresponsemaps -&amp;gt; eachresponsemap -&amp;gt; response.&lt;br /&gt;
For the reviewer assign_type, we have defined a separate method send_reminder_emails(), wherein we pass the response_id of the email_list hash, and add it as a suffix in the URL which will be accessed by the reviewer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: All the mails except the ones for the reviewer which are sent to mailinator are sent to expertiza.development@gmail.com ,as this is already set in the development environment.&lt;br /&gt;
&lt;br /&gt;
==Testing== &lt;br /&gt;
&lt;br /&gt;
We have used Rspec for testing the email functionalities.Using the test driven development(TDD) approach, we have added an Rspec test which checks whether the mail is delivered to the expected receiver upon creation of the account for the student. We have created a new assignment_particpant_ spec file for the above purpose.The spec uses double and stub features of rspec gem to fake user login. Since the smtp setting are set to test mode all mails go to expertiza.development@gmail.com and not the actual user.Hence when an email is sent the ActionMailer::Base.deliveries list gets updated.The last element in the deliveries list will be the email that was sent when the import method was invoked. Then using expect object we verify whether the email was correctly sent by checking the subject, from and to field.&lt;br /&gt;
&lt;br /&gt;
==Additional Links==&lt;br /&gt;
&lt;br /&gt;
*Git pull link: https://github.com/expertiza/expertiza/pull/1385&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[https://relishapp.com/rspec Rspec Documentation]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
[mailto:asivaga@ncsu.edu Arjun Sivagaminathan Mathan Kumar]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:hbbadiya@ncsu.edu Harshit Badiyani]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:panumul@ncsu.edu Pranav Reddy Anumula]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=122722</id>
		<title>E1902 ahp project</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=122722"/>
		<updated>2019-03-31T16:44:05Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using Ruby on Rails framework.Expertiza allows the instructor to create new assignments and customize new or existing assignments.The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)[1].Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;When students' accounts are created by importing a CSV file on the Users page, they receive e-mails with their user-ID and password. But if an account is created by adding them as participants to an assignment when they don't already have an account, e-mail is not sent. Students should receive e-mails upon account creation, regardless of how their account is created.  So this involves adding a call to the e-mailer … or, perhaps, moving an email call from the Users controller to the point where an account is actually created.&lt;br /&gt;
&amp;lt;li&amp;gt; Second, evidently if a submission is revised after review, the system e-mails the reviewer saying to revise the review. This is just fine ... except if the last round of review is in progress.The message telling reviewers to revise their reviews should not be sent after the last review deadline has passed.  It would also be nice to fix the message so it tells which review (Review 1, Review 2, etc.) has been revised, and gives the reviewer a link directly to it.&lt;br /&gt;
&amp;lt;li&amp;gt;Deadline reminders should include a link on where to go to perform the needed function.&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/models/assignment_participant.rb&lt;br /&gt;
* app/models/assignment.rb&lt;br /&gt;
* app/models/course_participant.rb&lt;br /&gt;
* app/controllers/submitted_content_controller.rb&lt;br /&gt;
* app/mailers/delayed_mailer.rb&lt;br /&gt;
* lib/tasks/background_email_reminder.rake&lt;br /&gt;
* spec/models/assignment_particpant_spec.rb&lt;br /&gt;
&lt;br /&gt;
==Implementation approach==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1) Email sent when user is added as a participant to assignment :''' &lt;br /&gt;
&lt;br /&gt;
When students' accounts are created by importing a CSV file on the Users page,they receive e-mails but not when user was added as a participant to the assignment. We added a method in the assignment_participant.rb file (model) to send mails when a participant is added to an assignment on the assignment page by importing a CSV file. We have also added a method in the course_participant.rb file(model), to send the mail when a Course participant is added by importing a CSV file. Both functionalities are implemented  using the method from the MailerHelper class i.e send_mail_to_user().&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2) Sending email to reviewer when new submission is availble:''' &lt;br /&gt;
&lt;br /&gt;
Added functionality to send email to the reviewer when new submission is available by making changes in the submitted_content_controller and assignment_participant model.The method handled boundary constraints like checking whether the round was valid and disabling email notification after the last round of review.&lt;br /&gt;
&lt;br /&gt;
Code to check if it was the valid round&lt;br /&gt;
&lt;br /&gt;
In the assignment_participant.rb,&lt;br /&gt;
Firstly, fetched the topic_id from the SignedUpTeam class and got the next due date using the DueDate model&lt;br /&gt;
Finally compared the round of the Due date with the number of review rounds of the assignments, to verify if its the final round.&lt;br /&gt;
&lt;br /&gt;
Extra functionality of specifying the current review round and providing the direct link to reviewer in the mail itself also implemented in the submitted_content controller using the ReviewResponseMap and Response class.&lt;br /&gt;
&lt;br /&gt;
In the submitted_content_controller.rb,&lt;br /&gt;
We mapped the reviewer_id and reviewee_id, fetched from participants, using the ReviewResponseMap class.&lt;br /&gt;
For all such mappings retrieved, we are fetching the last response id, which is then passed as the URL suffix to redirect the reviewer to the appropriate page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3) Including a specific link for the  deadline reminders email functionality for reviewers  :''' &lt;br /&gt;
&lt;br /&gt;
Added a review_reminder_email method and mail_reviewers method in the delayed_mailer.rb file which implemented the functionality for sending deadline reminder mails which includes a link on where to go and perform the specific task.&lt;br /&gt;
Prepared a hash named email_list using the email and participant_id, for each participant who is a reviewer.&lt;br /&gt;
Using this hash, we are calling the review_reminder_email function.&lt;br /&gt;
In this function, based on the due date for the deadline_type(i.e reviewer), we fetch the participant id of the same and add it as the suffix in the URL to be visited by the reviewer.&lt;br /&gt;
Also, the logic of the copy of mail to the instructor is also taken care.&lt;br /&gt;
Notice that the link in the instructor's email will contain the '?id=' field of the last participant fetched.&lt;br /&gt;
&lt;br /&gt;
In the background_email_reminder.rake file,&lt;br /&gt;
Earlier only the emails for the participants were fetched, but now we are fetching the hash containing the email and response_id. The response_id field was fetched as per the below order in the code-&lt;br /&gt;
participants.review_mappings -&amp;gt; allresponsemaps -&amp;gt; eachresponsemap -&amp;gt; response.&lt;br /&gt;
For the reviewer assign_type, we have defined a separate method send_reminder_emails(), wherein we pass the response_id of the email_list hash, and add it as a suffix in the URL which will be accessed by the reviewer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: All the mails except the ones for the reviewer which are sent to mailinator are sent to expertiza.development@gmail.com ,as this is already set in the development environment.&lt;br /&gt;
&lt;br /&gt;
==Testing== &lt;br /&gt;
&lt;br /&gt;
We have used Rspec for testing the email functionalities.Using the test driven development(TDD) approach, we have added an Rspec test which checks whether the mail is delivered to the expected receiver upon creation of the account for the student. We have created a new assignment_particpant_ spec file for the above purpose.The spec uses double and stub features of rspec gem to fake user login. Since the smtp setting are set to test mode all mails go to expertiza.development@gmail.com and not the actual user.Hence when an email is sent the ActionMailer::Base.deliveries list gets updated.The last element in the deliveries list will be the email that was sent when the import method was invoked. Then using expect object we verify whether the email was correctly sent by checking the subject, from and to field.&lt;br /&gt;
&lt;br /&gt;
==Additional Links==&lt;br /&gt;
&lt;br /&gt;
*Git pull link: https://github.com/expertiza/expertiza/pull/1385&lt;br /&gt;
*Heroku deployment: yet to be done&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[https://relishapp.com/rspec Rspec Documentation]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
[mailto:asivaga@ncsu.edu Arjun Sivagaminathan Mathan Kumar]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:hbbadiya@ncsu.edu Harshit Badiyani]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:panumul@ncsu.edu Pranav Reddy Anumula]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=122721</id>
		<title>E1902 ahp project</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=122721"/>
		<updated>2019-03-31T16:41:32Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: /* Implementation approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using Ruby on Rails framework.Expertiza allows the instructor to create new assignments and customize new or existing assignments.The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)[1].Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;When students' accounts are created by importing a CSV file on the Users page, they receive e-mails with their user-ID and password. But if an account is created by adding them as participants to an assignment when they don't already have an account, e-mail is not sent. Students should receive e-mails upon account creation, regardless of how their account is created.  So this involves adding a call to the e-mailer … or, perhaps, moving an email call from the Users controller to the point where an account is actually created.&lt;br /&gt;
&amp;lt;li&amp;gt; Second, evidently if a submission is revised after review, the system e-mails the reviewer saying to revise the review. This is just fine ... except if the last round of review is in progress.The message telling reviewers to revise their reviews should not be sent after the last review deadline has passed.  It would also be nice to fix the message so it tells which review (Review 1, Review 2, etc.) has been revised, and gives the reviewer a link directly to it.&lt;br /&gt;
&amp;lt;li&amp;gt;Deadline reminders should include a link on where to go to perform the needed function.&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/models/assignment_participant.rb&lt;br /&gt;
* app/models/assignment.rb&lt;br /&gt;
* app/models/course_participant.rb&lt;br /&gt;
* app/controllers/submitted_content_controller.rb&lt;br /&gt;
* app/mailers/delayed_mailer.rb&lt;br /&gt;
* lib/tasks/background_email_reminder.rake&lt;br /&gt;
* spec/models/assignment_particpant_spec.rb&lt;br /&gt;
&lt;br /&gt;
==Implementation approach==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1) Email sent when user is added as a participant to assignment :''' &lt;br /&gt;
&lt;br /&gt;
When students' accounts are created by importing a CSV file on the Users page,they receive e-mails but not when user was added as a participant to the assignment. We added a method in the assignment_participant.rb file (model) to send mails when a participant is added to an assignment on the assignment page by importing a CSV file. We have also added a method in the course_participant.rb file(model), to send the mail when a Course participant is added by importing a CSV file. Both functionalities are implemented  using the method from the MailerHelper class i.e send_mail_to_user().&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2) Sending email to reviewer when new submission is availble:''' &lt;br /&gt;
&lt;br /&gt;
Added functionality to send email to the reviewer when new submission is available by making changes in the submitted_content_controller and assignment_participant model.The method handled boundary constraints like checking whether the round was valid and disabling email notification after the last round of review.&lt;br /&gt;
&lt;br /&gt;
Code to check if it was the valid round&lt;br /&gt;
&lt;br /&gt;
In the assignment_participant.rb,&lt;br /&gt;
Firstly, fetched the topic_id from the SignedUpTeam class and got the next due date using the DueDate model&lt;br /&gt;
Finally compared the round of the Due date with the number of review rounds of the assignments, to verify if its the final round.&lt;br /&gt;
&lt;br /&gt;
Extra functionality of specifying the current review round and providing the direct link to reviewer in the mail itself also implemented in the submitted_content controller using the ReviewResponseMap and Response class.&lt;br /&gt;
&lt;br /&gt;
In the submitted_content_controller.rb,&lt;br /&gt;
We mapped the reviewer_id and reviewee_id, fetched from participants, using the ReviewResponseMap class.&lt;br /&gt;
For all such mappings retrieved, we are fetching the last response id, which is then passed as the URL suffix to redirect the reviewer to the appropriate page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3) Including a specific link for the  deadline reminders email functionality for reviewers  :''' &lt;br /&gt;
&lt;br /&gt;
Added a review_reminder_email method and mail_reviewers method in the delayed_mailer.rb file which implemented the functionality for sending deadline reminder mails which includes a link on where to go and perform the specific task.&lt;br /&gt;
Prepared a hash named email_list using the email and participant_id, for each participant who is a reviewer.&lt;br /&gt;
Using this hash, we are calling the review_reminder_email function.&lt;br /&gt;
In this function, based on the due date for the deadline_type(i.e reviewer), we fetch the participant id of the same and add it as the suffix in the URL to be visited by the reviewer.&lt;br /&gt;
Also, the logic of the copy of mail to the instructor is also taken care.&lt;br /&gt;
Notice that the link in the instructor's email will contain the '?id=' field of the last participant fetched.&lt;br /&gt;
&lt;br /&gt;
In the background_email_reminder.rake file,&lt;br /&gt;
Earlier only the emails for the participants were fetched, but now we are fetching the hash containing the email and response_id. The response_id field was fetched as per the below order in the code-&lt;br /&gt;
participants.review_mappings -&amp;gt; allresponsemaps -&amp;gt; eachresponsemap -&amp;gt; response.&lt;br /&gt;
For the reviewer assign_type, we have defined a separate method send_reminder_emails(), wherein we pass the response_id of the email_list hash, and add it as a suffix in the URL which will be accessed by the reviewer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: All the mails except the ones for the reviewer which are sent to mailinator are sent to expertiza.development@gmail.com ,as this is already set in the development environment.&lt;br /&gt;
&lt;br /&gt;
==Testing== &lt;br /&gt;
&lt;br /&gt;
Yet to be done&lt;br /&gt;
&lt;br /&gt;
We have used Rspec for testing the email functionalities.Using the test driven development(TDD) approach, we have added an Rspec test which checks whether the mail is delivered to the expected receiver upon creation of the account for the student.&lt;br /&gt;
&lt;br /&gt;
==Additional Links==&lt;br /&gt;
&lt;br /&gt;
*Git pull link: https://github.com/expertiza/expertiza/pull/1385&lt;br /&gt;
*Heroku deployment: yet to be done&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[https://relishapp.com/rspec Rspec Documentation]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
[mailto:asivaga@ncsu.edu Arjun Sivagaminathan Mathan Kumar]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:hbbadiya@ncsu.edu Harshit Badiyani]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:panumul@ncsu.edu Pranav Reddy Anumula]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=122538</id>
		<title>E1902 ahp project</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=122538"/>
		<updated>2019-03-26T23:09:39Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: /* Implementation approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using Ruby on Rails framework.Expertiza allows the instructor to create new assignments and customize new or existing assignments.The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)[1].Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;When students' accounts are created by importing a CSV file on the Users page, they receive e-mails with their user-ID and password. But if an account is created by adding them as participants to an assignment when they don't already have an account, e-mail is not sent. Students should receive e-mails upon account creation, regardless of how their account is created.  So this involves adding a call to the e-mailer … or, perhaps, moving an email call from the Users controller to the point where an account is actually created.&lt;br /&gt;
&amp;lt;li&amp;gt; Second, evidently if a submission is revised after review, the system e-mails the reviewer saying to revise the review. This is just fine ... except if the last round of review is in progress.The message telling reviewers to revise their reviews should not be sent after the last review deadline has passed.  It would also be nice to fix the message so it tells which review (Review 1, Review 2, etc.) has been revised, and gives the reviewer a link directly to it.&lt;br /&gt;
&amp;lt;li&amp;gt;Deadline reminders should include a link on where to go to perform the needed function.&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/models/assignment_participant.rb&lt;br /&gt;
* app/models/assignment.rb&lt;br /&gt;
* app/models/course_participant.rb&lt;br /&gt;
* app/controllers/submitted_content_controller.rb&lt;br /&gt;
* app/mailers/delayed_mailer.rb&lt;br /&gt;
* lib/tasks/background_email_reminder.rake&lt;br /&gt;
* spec/models/assignment_particpant_spec.rb&lt;br /&gt;
&lt;br /&gt;
==Implementation approach==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1) Email sent when user is added as a participant to assignment :''' - Completed&lt;br /&gt;
&lt;br /&gt;
When students' accounts are created by importing a CSV file on the Users page,they receive e-mails but not when user was added as a participant to the assignment. We added a method in the assignment_participant.rb file (model) to send mails when a participant is added to an assignment on the assignment page by importing a CSV file. We have also added a method in the course_participant.rb file(model), to send the mail when a Course participant is added by importing a CSV file. Both functionalities are implemented  using the method from the MailerHelper class i.e send_mail_to_user().&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2) Sending email to reviewer when new submission is availble:''' Halfway&lt;br /&gt;
&lt;br /&gt;
Added functionality to send email to the reviewer when new submission is available by making changes in the submitted_content_controller and assignment_participant model.The method handled boundary constraints like checking whether the round was valid and disabling email notification after the last round of review.&lt;br /&gt;
&lt;br /&gt;
Code to check if it was the valid round&lt;br /&gt;
&lt;br /&gt;
In the assignment_participant.rb,&lt;br /&gt;
Firstly, fetched the topic_id from the SignedUpTeam class and got the next due date using the DueDate model&lt;br /&gt;
Finally compared the round of the Due date with the number of review rounds of the assignments, to verify if its the final round.&lt;br /&gt;
&lt;br /&gt;
Extra functionality of specifying the current review round and providing the direct link to reviewer in the mail itself also implemented in the submitted_content controller using the ReviewResponseMap and Response class.&lt;br /&gt;
&lt;br /&gt;
In the submitted_content_controller.rb,&lt;br /&gt;
We mapped the reviewer_id and reviewee_id, fetched from participants, using the ReviewResponseMap class.&lt;br /&gt;
For all such mappings retrieved, we are fetching the last response id, which is then passed as the URL suffix to redirect the reviewer to the appropriate page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3) Including a specific link for the  deadline reminders email functionality for reviewers  :''' - Halfway&lt;br /&gt;
&lt;br /&gt;
Added a review_reminder_email method and mail_reviewers method in the delayed_mailer.rb file which implemented the functionality for sending deadline reminder mails which includes a link on where to go and perform the specific task.&lt;br /&gt;
Prepared a hash named email_list using the email and participant_id, for each participant who is a reviewer.&lt;br /&gt;
Using this hash, we are calling the review_reminder_email function.&lt;br /&gt;
In this function, based on the due date for the deadline_type(i.e reviewer), we fetch the participant id of the same and add it as the suffix in the URL to be visited by the reviewer.&lt;br /&gt;
Also, the logic of the copy of mail to the instructor is also taken care.&lt;br /&gt;
Notice that the link in the instructor's email will contain the '?id=' field of the last participant fetched.&lt;br /&gt;
&lt;br /&gt;
In the background_email_reminder.rake file,&lt;br /&gt;
Earlier only the emails for the participants were fetched, but now we are fetching the hash containing the email and response_id. The response_id field was fetched as per the below order in the code-&lt;br /&gt;
participants.review_mappings -&amp;gt; allresponsemaps -&amp;gt; eachresponsemap -&amp;gt; response.&lt;br /&gt;
For the reviewer assign_type, we have defined a separate method send_reminder_emails(), wherein we pass the response_id of the email_list hash, and add it as a suffix in the URL which will be accessed by the reviewer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: All the mails except the ones for the reviewer which are sent to mailinator are sent to expertiza.development@gmail.com ,as this is already set in the development environment.&lt;br /&gt;
&lt;br /&gt;
==Testing== &lt;br /&gt;
&lt;br /&gt;
Yet to be done&lt;br /&gt;
&lt;br /&gt;
We have used Rspec for testing the email functionalities.Using the test driven development(TDD) approach, we have added an Rspec test which checks whether the mail is delivered to the expected receiver upon creation of the account for the student.&lt;br /&gt;
&lt;br /&gt;
==Additional Links==&lt;br /&gt;
&lt;br /&gt;
*Git pull link: https://github.com/expertiza/expertiza/pull/1385&lt;br /&gt;
*Heroku deployment: yet to be done&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[https://relishapp.com/rspec Rspec Documentation]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
[mailto:asivaga@ncsu.edu Arjun Sivagaminathan Mathan Kumar]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:hbbadiya@ncsu.edu Harshit Badiyani]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:panumul@ncsu.edu Pranav Reddy Anumula]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=122537</id>
		<title>E1902 ahp project</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=122537"/>
		<updated>2019-03-26T23:08:58Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: /* Implementation approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using Ruby on Rails framework.Expertiza allows the instructor to create new assignments and customize new or existing assignments.The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)[1].Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;When students' accounts are created by importing a CSV file on the Users page, they receive e-mails with their user-ID and password. But if an account is created by adding them as participants to an assignment when they don't already have an account, e-mail is not sent. Students should receive e-mails upon account creation, regardless of how their account is created.  So this involves adding a call to the e-mailer … or, perhaps, moving an email call from the Users controller to the point where an account is actually created.&lt;br /&gt;
&amp;lt;li&amp;gt; Second, evidently if a submission is revised after review, the system e-mails the reviewer saying to revise the review. This is just fine ... except if the last round of review is in progress.The message telling reviewers to revise their reviews should not be sent after the last review deadline has passed.  It would also be nice to fix the message so it tells which review (Review 1, Review 2, etc.) has been revised, and gives the reviewer a link directly to it.&lt;br /&gt;
&amp;lt;li&amp;gt;Deadline reminders should include a link on where to go to perform the needed function.&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/models/assignment_participant.rb&lt;br /&gt;
* app/models/assignment.rb&lt;br /&gt;
* app/models/course_participant.rb&lt;br /&gt;
* app/controllers/submitted_content_controller.rb&lt;br /&gt;
* app/mailers/delayed_mailer.rb&lt;br /&gt;
* lib/tasks/background_email_reminder.rake&lt;br /&gt;
* spec/models/assignment_particpant_spec.rb&lt;br /&gt;
&lt;br /&gt;
==Implementation approach==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1) Email sent when user is added as a participant to assignment :''' - Completed&lt;br /&gt;
&lt;br /&gt;
When students' accounts are created by importing a CSV file on the Users page,they receive e-mails but not when user was added as a participant to the assignment. We added a method in the assignment_participant.rb file (model) to send mails when a participant is added to an assignment on the assignment page by importing a CSV file. We have also added a method in the course_participant.rb file(model), to send the mail when a Course participant is added by importing a CSV file. Both functionalities are implemented  using the method from the MailerHelper class i.e send_mail_to_user().&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2) Sending email to reviewer when new submission is availble:''' Halfway&lt;br /&gt;
&lt;br /&gt;
Added functionality to send email to the reviewer when new submission is available by making changes in the submitted_content_controller and assignment_participant model.The method handled boundary constraints like checking whether the round was valid and disabling email notification after the last round of review.&lt;br /&gt;
&lt;br /&gt;
Code to check if it was the valid round&lt;br /&gt;
&lt;br /&gt;
In the assignment_participant.rb,&lt;br /&gt;
Firstly, fetched the topic_id from the SignedUpTeam class and got the next due date using the DueDate model&lt;br /&gt;
Finally compared the round of the Due date with the number of review rounds of the assignments, to verify if its the final round.&lt;br /&gt;
&lt;br /&gt;
Extra functionality of specifying the current review round and providing the direct link to reviewer in the mail itself also implemented in the submitted_content controller using the ReviewResponseMap and Response class.&lt;br /&gt;
&lt;br /&gt;
In the submitted_content_controller.rb,&lt;br /&gt;
We mapped the reviewer_id and reviewee_id, fetched from participants, using the ReviewResponseMap class.&lt;br /&gt;
For all such mappings retrieved, we are fetching the last response id, which is then passed as the URL suffix to redirect the reviewer to the appropriate page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3) Including a specific link for the  deadline reminders email functionality for reviewers  :''' - Halfway&lt;br /&gt;
&lt;br /&gt;
Added a review_reminder_email method and mail_reviewers method in the delayed_mailer.rb file which implemented the functionality for sending deadline reminder mails which includes a link on where to go and perform the specific task.&lt;br /&gt;
Prepared a hash named email_list using the email and participant_id, for each participant who is a reviewer.&lt;br /&gt;
Using this hash, we are calling the review_reminder_email function.&lt;br /&gt;
In this function, based on the due date for the deadline_type(i.e reviewer), we fetch the participant id of the same and add it as the suffix in the URL to be visited by the reviewer.&lt;br /&gt;
Also, the logic of the copy of mail to the instructor is also taken care.&lt;br /&gt;
Notice that the link in the instructor's email will contain the '?id=' field of the last participant fetched.&lt;br /&gt;
&lt;br /&gt;
In the background_email_reminder.rake file,&lt;br /&gt;
Earlier only the emails for the participants were fetched, but now we are fetching the hash containing the email and response_id. The response_id field was fetched as per the below order in the code-&lt;br /&gt;
participants.review_mappings -&amp;gt; allresponsemaps -&amp;gt; eachresponsemap -&amp;gt; response.&lt;br /&gt;
For the reviewer assign_type, we have defined a separate method send_reminder_emails(), wherein we pass the response_id of the email_list hash, and add it as a suffix in the URL which will be accessed by the reviewer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: All the mails except the ones for the reviewer which are sent to mailinator are sent to expertiza.development@gmail.com ,as this is already set in the development environment.&lt;br /&gt;
&lt;br /&gt;
==Testing== Yet to be done&lt;br /&gt;
&lt;br /&gt;
We have used Rspec for testing the email functionalities.Using the test driven development(TDD) approach, we have added an Rspec test which checks whether the mail is delivered to the expected receiver upon creation of the account for the student.&lt;br /&gt;
&lt;br /&gt;
==Additional Links==&lt;br /&gt;
&lt;br /&gt;
*Git pull link: https://github.com/expertiza/expertiza/pull/1385&lt;br /&gt;
*Heroku deployment: yet to be done&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[https://relishapp.com/rspec Rspec Documentation]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
[mailto:asivaga@ncsu.edu Arjun Sivagaminathan Mathan Kumar]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:hbbadiya@ncsu.edu Harshit Badiyani]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:panumul@ncsu.edu Pranav Reddy Anumula]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=122407</id>
		<title>E1902 ahp project</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=122407"/>
		<updated>2019-03-26T01:15:03Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: /* Implementation approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using Ruby on Rails framework.Expertiza allows the instructor to create new assignments and customize new or existing assignments.The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)[1].Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;When students' accounts are created by importing a CSV file on the Users page, they receive e-mails with their user-ID and password. But if an account is created by adding them as participants to an assignment when they don't already have an account, e-mail is not sent. Students should receive e-mails upon account creation, regardless of how their account is created.  So this involves adding a call to the e-mailer … or, perhaps, moving an email call from the Users controller to the point where an account is actually created.&lt;br /&gt;
&amp;lt;li&amp;gt; Second, evidently if a submission is revised after review, the system e-mails the reviewer saying to revise the review. This is just fine ... except if the last round of review is in progress.The message telling reviewers to revise their reviews should not be sent after the last review deadline has passed.  It would also be nice to fix the message so it tells which review (Review 1, Review 2, etc.) has been revised, and gives the reviewer a link directly to it.&lt;br /&gt;
&amp;lt;li&amp;gt;Deadline reminders should include a link on where to go to perform the needed function.&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/models/assignment_participant.rb&lt;br /&gt;
* app/models/assignment.rb&lt;br /&gt;
* app/models/course_participant.rb&lt;br /&gt;
* app/controllers/submitted_content_controller.rb&lt;br /&gt;
* app/mailers/delayed_mailer.rb&lt;br /&gt;
* lib/tasks/background_email_reminder.rake&lt;br /&gt;
* spec/models/assignment_particpant_spec.rb&lt;br /&gt;
&lt;br /&gt;
==Implementation approach==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1) Email sent when user is added as a participant to assignment :''' - Completed&lt;br /&gt;
&lt;br /&gt;
When students' accounts are created by importing a CSV file on the Users page,they receive e-mails but not when user was added as a participant to the assignment. We added a method in the assignment_participant.rb file (model) to send mails when a participant is added to an assignment on the assignment page by importing a CSV file. We have also added a method in the course_participant.rb file(model), to send the mail when a Course participant is added by importing a CSV file. Both functionalities are implemented  using the method from the MailerHelper class i.e send_mail_to_user().&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2) Sending email to reviewer when new submission is availble:''' Halfway&lt;br /&gt;
&lt;br /&gt;
Added functionality to send email to the reviewer when new submission is available by making changes in the submitted_content_controller and assignment_participant model.The method handled boundary constraints like checking whether the round was valid and disabling email notification after the last round of review.&lt;br /&gt;
&lt;br /&gt;
Code to check if it was the valid round&lt;br /&gt;
&lt;br /&gt;
In the assignment_participant.rb,&lt;br /&gt;
Firstly, fetched the topic_id from the SignedUpTeam class and got the next due date using the DueDate model&lt;br /&gt;
Finally compared the round of the Due date with the number of review rounds of the assignments, to verify if its the final round.&lt;br /&gt;
&lt;br /&gt;
Extra functionality of specifying the current review round and providing the direct link to reviewer in the mail itself also implemented in the submitted_content controller using the ReviewResponseMap and Response class.&lt;br /&gt;
&lt;br /&gt;
In the submitted_content_controller.rb,&lt;br /&gt;
We mapped the reviewer_id and reviewee_id, fetched from participants, using the ReviewResponseMap class.&lt;br /&gt;
For all such mappings retrieved, we are fetching the last response id, which is then passed as the URL suffix to redirect the reviewer to the appropriate page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3) Including a specific link for the  deadline reminders email functionality for reviewers  :''' - Halfway&lt;br /&gt;
&lt;br /&gt;
Added a review_reminder_email method and mail_reviewers method in the delayed_mailer.rb file which implemented the functionality for sending deadline reminder mails which includes a link on where to go and perform the specific task.&lt;br /&gt;
Prepared a hash named email_list using the email and participant_id, for each participant who is a reviewer.&lt;br /&gt;
Using this hash, we are calling the review_reminder_email function.&lt;br /&gt;
In this function, based on the due date for the deadline_type(i.e reviewer), we fetch the participant id of the same and add it as the suffix in the URL to be visited by the reviewer.&lt;br /&gt;
Also, the logic of the copy of mail to the instructor is also taken care.&lt;br /&gt;
Notice that the link in the instructor's email will contain the '?id=' field of the last participant fetched.&lt;br /&gt;
&lt;br /&gt;
In the background_email_reminder.rake file,&lt;br /&gt;
Earlier only the emails for the participants were fetched, but now we are fetching the hash containing the email and response_id. The response_id field was fetched as per the below order in the code-&lt;br /&gt;
participants.review_mappings -&amp;gt; allresponsemaps -&amp;gt; eachresponsemap -&amp;gt; response.&lt;br /&gt;
For the reviewer assign_type, we have defined a separate method send_reminder_emails(), wherein we pass the response_id of the email_list hash, and add it as a suffix in the URL which will be accessed by the reviewer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: All the mails except the ones for the reviewer which are sent to mailinator are sent to expertiza.development@gmail.com ,as this is already set in the development environment.&lt;br /&gt;
&lt;br /&gt;
==Additional Links==&lt;br /&gt;
&lt;br /&gt;
*Git pull link: https://github.com/expertiza/expertiza/pull/1385&lt;br /&gt;
*Heroku deployment: yet to be done&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[https://relishapp.com/rspec Rspec Documentation]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
[mailto:asivaga@ncsu.edu Arjun Sivagaminathan Mathan Kumar]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:hbbadiya@ncsu.edu Harshit Badiyani]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:panumul@ncsu.edu Pranav Reddy Anumula]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=122406</id>
		<title>E1902 ahp project</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=122406"/>
		<updated>2019-03-26T01:14:15Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: /* Implementation approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using Ruby on Rails framework.Expertiza allows the instructor to create new assignments and customize new or existing assignments.The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)[1].Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;When students' accounts are created by importing a CSV file on the Users page, they receive e-mails with their user-ID and password. But if an account is created by adding them as participants to an assignment when they don't already have an account, e-mail is not sent. Students should receive e-mails upon account creation, regardless of how their account is created.  So this involves adding a call to the e-mailer … or, perhaps, moving an email call from the Users controller to the point where an account is actually created.&lt;br /&gt;
&amp;lt;li&amp;gt; Second, evidently if a submission is revised after review, the system e-mails the reviewer saying to revise the review. This is just fine ... except if the last round of review is in progress.The message telling reviewers to revise their reviews should not be sent after the last review deadline has passed.  It would also be nice to fix the message so it tells which review (Review 1, Review 2, etc.) has been revised, and gives the reviewer a link directly to it.&lt;br /&gt;
&amp;lt;li&amp;gt;Deadline reminders should include a link on where to go to perform the needed function.&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/models/assignment_participant.rb&lt;br /&gt;
* app/models/assignment.rb&lt;br /&gt;
* app/models/course_participant.rb&lt;br /&gt;
* app/controllers/submitted_content_controller.rb&lt;br /&gt;
* app/mailers/delayed_mailer.rb&lt;br /&gt;
* lib/tasks/background_email_reminder.rake&lt;br /&gt;
* spec/models/assignment_particpant_spec.rb&lt;br /&gt;
&lt;br /&gt;
==Implementation approach==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1) Email sent when user is added as a participant to assignment :''' - Completed&lt;br /&gt;
&lt;br /&gt;
When students' accounts are created by importing a CSV file on the Users page,they receive e-mails but not when user was added as a participant to the assignment. We added a method in the assignment_participant.rb file (model) to send mails when a participant is added to an assignment on the assignment page by importing a CSV file. We have also added a method in the course_participant.rb file(model), to send the mail when a Course participant is added by importing a CSV file. Both functionalities are implemented  using the method from the MailerHelper class i.e send_mail_to_user().&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/c17bb25827e43940cc9f253c04ee7343878298df&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2) Sending email to reviewer when new submission is availble:''' Halfway&lt;br /&gt;
&lt;br /&gt;
Added functionality to send email to the reviewer when new submission is available by making changes in the submitted_content_controller and assignment_participant model.The method handled boundary constraints like checking whether the round was valid and disabling email notification after the last round of review.&lt;br /&gt;
&lt;br /&gt;
Code to check if it was the valid round&lt;br /&gt;
&lt;br /&gt;
In the assignment_participant.rb,&lt;br /&gt;
Firstly, fetched the topic_id from the SignedUpTeam class and got the next due date using the DueDate model&lt;br /&gt;
Finally compared the round of the Due date with the number of review rounds of the assignments, to verify if its the final round.&lt;br /&gt;
&lt;br /&gt;
Extra functionality of specifying the current review round and providing the direct link to reviewer in the mail itself also implemented in the submitted_content controller using the ReviewResponseMap and Response class.&lt;br /&gt;
&lt;br /&gt;
In the submitted_content_controller.rb,&lt;br /&gt;
We mapped the reviewer_id and reviewee_id, fetched from participants, using the ReviewResponseMap class.&lt;br /&gt;
For all such mappings retrieved, we are fetching the last response id, which is then passed as the URL suffix to redirect the reviewer to the appropriate page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3) Including a specific link for the  deadline reminders email functionality for reviewers  :''' - Halfway&lt;br /&gt;
&lt;br /&gt;
Added a review_reminder_email method and mail_reviewers method in the delayed_mailer.rb file which implemented the functionality for sending deadline reminder mails which includes a link on where to go and perform the specific task.&lt;br /&gt;
Prepared a hash named email_list using the email and participant_id, for each participant who is a reviewer.&lt;br /&gt;
Using this hash, we are calling the review_reminder_email function.&lt;br /&gt;
In this function, based on the due date for the deadline_type(i.e reviewer), we fetch the participant id of the same and add it as the suffix in the URL to be visited by the reviewer.&lt;br /&gt;
Also, the logic of the copy of mail to the instructor is also taken care.&lt;br /&gt;
Notice that the link in the instructor's email will contain the '?id=' field of the last participant fetched.&lt;br /&gt;
&lt;br /&gt;
In the background_email_reminder.rake file,&lt;br /&gt;
Earlier only the emails for the participants were fetched, but now we are fetching the hash containing the email and response_id. The response_id field was fetched as per the below order in the code-&lt;br /&gt;
participants.review_mappings -&amp;gt; allresponsemaps -&amp;gt; eachresponsemap -&amp;gt; response.&lt;br /&gt;
For the reviewer assign_type, we have defined a separate method send_reminder_emails(), wherein we pass the response_id of the email_list hash, and add it as a suffix in the URL which will be accessed by the reviewer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: All the mails except the ones for the reviewer which are sent to mailinator are sent to expertiza.development@gmail.com ,as this is already set in the development environment.&lt;br /&gt;
&lt;br /&gt;
==Additional Links==&lt;br /&gt;
&lt;br /&gt;
*Git pull link: https://github.com/expertiza/expertiza/pull/1385&lt;br /&gt;
*Heroku deployment: yet to be done&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[https://relishapp.com/rspec Rspec Documentation]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
[mailto:asivaga@ncsu.edu Arjun Sivagaminathan Mathan Kumar]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:hbbadiya@ncsu.edu Harshit Badiyani]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:panumul@ncsu.edu Pranav Reddy Anumula]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=122396</id>
		<title>E1902 ahp project</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=122396"/>
		<updated>2019-03-26T01:08:52Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using Ruby on Rails framework.Expertiza allows the instructor to create new assignments and customize new or existing assignments.The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)[1].Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;When students' accounts are created by importing a CSV file on the Users page, they receive e-mails with their user-ID and password. But if an account is created by adding them as participants to an assignment when they don't already have an account, e-mail is not sent. Students should receive e-mails upon account creation, regardless of how their account is created.  So this involves adding a call to the e-mailer … or, perhaps, moving an email call from the Users controller to the point where an account is actually created.&lt;br /&gt;
&amp;lt;li&amp;gt; Second, evidently if a submission is revised after review, the system e-mails the reviewer saying to revise the review. This is just fine ... except if the last round of review is in progress.The message telling reviewers to revise their reviews should not be sent after the last review deadline has passed.  It would also be nice to fix the message so it tells which review (Review 1, Review 2, etc.) has been revised, and gives the reviewer a link directly to it.&lt;br /&gt;
&amp;lt;li&amp;gt;Deadline reminders should include a link on where to go to perform the needed function.&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/models/assignment_participant.rb&lt;br /&gt;
* app/models/assignment.rb&lt;br /&gt;
* app/models/course_participant.rb&lt;br /&gt;
* app/controllers/submitted_content_controller.rb&lt;br /&gt;
* app/mailers/delayed_mailer.rb&lt;br /&gt;
* lib/tasks/background_email_reminder.rake&lt;br /&gt;
* spec/models/assignment_particpant_spec.rb&lt;br /&gt;
&lt;br /&gt;
==Implementation approach==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1) Email sent when user is added as a participant to assignment :'''&lt;br /&gt;
&lt;br /&gt;
When students' accounts are created by importing a CSV file on the Users page,they receive e-mails but not when user was added as a participant to the assignment. We added a method in the assignment_participant.rb file (model) to send mails when a participant is added to an assignment on the assignment page by importing a CSV file. We have also added a method in the course_participant.rb file(model), to send the mail when a Course participant is added by importing a CSV file. Both functionalities are implemented  using the method from the MailerHelper class i.e send_mail_to_user().&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/c17bb25827e43940cc9f253c04ee7343878298df&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2) Sending email to reviewer when new submission is availble:'''&lt;br /&gt;
&lt;br /&gt;
Added functionality to send email to the reviewer when new submission is available by making changes in the submitted_content_controller and assignment_participant model.The method handled boundary constraints like checking whether the round was valid and disabling email notification after the last round of review.&lt;br /&gt;
&lt;br /&gt;
Code to check if it was the valid round&lt;br /&gt;
&lt;br /&gt;
In the assignment_participant.rb,&lt;br /&gt;
Firstly, fetched the topic_id from the SignedUpTeam class and got the next due date using the DueDate model&lt;br /&gt;
Finally compared the round of the Due date with the number of review rounds of the assignments, to verify if its the final round.&lt;br /&gt;
&lt;br /&gt;
Extra functionality of specifying the current review round and providing the direct link to reviewer in the mail itself also implemented in the submitted_content controller using the ReviewResponseMap and Response class.&lt;br /&gt;
&lt;br /&gt;
In the submitted_content_controller.rb,&lt;br /&gt;
We mapped the reviewer_id and reviewee_id, fetched from participants, using the ReviewResponseMap class.&lt;br /&gt;
For all such mappings retrieved, we are fetching the last response id, which is then passed as the URL suffix to redirect the reviewer to the appropriate page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3) Including a specific link for the  deadline reminders email functionality for reviewers  :'''&lt;br /&gt;
&lt;br /&gt;
Added a review_reminder_email method and mail_reviewers method in the delayed_mailer.rb file which implemented the functionality for sending deadline reminder mails which includes a link on where to go and perform the specific task.&lt;br /&gt;
Prepared a hash named email_list using the email and participant_id, for each participant who is a reviewer.&lt;br /&gt;
Using this hash, we are calling the review_reminder_email function.&lt;br /&gt;
In this function, based on the due date for the deadline_type(i.e reviewer), we fetch the participant id of the same and add it as the suffix in the URL to be visited by the reviewer.&lt;br /&gt;
Also, the logic of the copy of mail to the instructor is also taken care.&lt;br /&gt;
Notice that the link in the instructor's email will contain the '?id=' field of the last participant fetched.&lt;br /&gt;
&lt;br /&gt;
In the background_email_reminder.rake file,&lt;br /&gt;
Earlier only the emails for the participants were fetched, but now we are fetching the hash containing the email and response_id. The response_id field was fetched as per the below order in the code-&lt;br /&gt;
participants.review_mappings -&amp;gt; allresponsemaps -&amp;gt; eachresponsemap -&amp;gt; response.&lt;br /&gt;
For the reviewer assign_type, we have defined a separate method send_reminder_emails(), wherein we pass the response_id of the email_list hash, and add it as a suffix in the URL which will be accessed by the reviewer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: All the mails except the ones for the reviewer which are sent to mailinator are sent to expertiza.development@gmail.com ,as this is already set in the development environment.&lt;br /&gt;
&lt;br /&gt;
==Additional Links==&lt;br /&gt;
&lt;br /&gt;
*Git pull link: https://github.com/expertiza/expertiza/pull/1385&lt;br /&gt;
*Heroku deployment: yet to be done&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[https://relishapp.com/rspec Rspec Documentation]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
[mailto:asivaga@ncsu.edu Arjun Sivagaminathan Mathan Kumar]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:hbbadiya@ncsu.edu Harshit Badiyani]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:panumul@ncsu.edu Pranav Reddy Anumula]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=122147</id>
		<title>E1902 ahp project</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=122147"/>
		<updated>2019-03-25T18:58:07Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: /* Additional Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using Ruby on Rails framework.Expertiza allows the instructor to create new assignments and customize new or existing assignments.The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)[1].Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;When students' accounts are created by importing a CSV file on the Users page, they receive e-mails with their user-ID and password. But if an account is created by adding them as participants to an assignment when they don't already have an account, e-mail is not sent. Students should receive e-mails upon account creation, regardless of how their account is created.  So this involves adding a call to the e-mailer … or, perhaps, moving an email call from the Users controller to the point where an account is actually created.&lt;br /&gt;
&amp;lt;li&amp;gt; Second, evidently if a submission is revised after review, the system e-mails the reviewer saying to revise the review. This is just fine ... except if the last round of review is in progress.The message telling reviewers to revise their reviews should not be sent after the last review deadline has passed.  It would also be nice to fix the message so it tells which review (Review 1, Review 2, etc.) has been revised, and gives the reviewer a link directly to it.&lt;br /&gt;
&amp;lt;li&amp;gt;Deadline reminders should include a link on where to go to perform the needed function.&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/models/assignment_participant.rb&lt;br /&gt;
* app/models/assignment.rb&lt;br /&gt;
* app/models/course_participant.rb&lt;br /&gt;
* app/controllers/submitted_content_controller.rb&lt;br /&gt;
* app/mailers/delayed_mailer.rb&lt;br /&gt;
* lib/tasks/background_email_reminder.rake&lt;br /&gt;
* spec/models/assignment_particpant_spec.rb&lt;br /&gt;
&lt;br /&gt;
==Implementation approach==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1) Email sent when user is added as a participant to assignment :'''&lt;br /&gt;
&lt;br /&gt;
When students' accounts are created by importing a CSV file on the Users page,they receive e-mails but not when user was added as a participant to the assignment. We added a method in the assignment_participant.rb file (model) to send mails when a participant is added to an assignment on the assignment page by importing a CSV file. We have also added a method in the course_participant.rb file(model), to send the mail when a Course participant is added by importing a CSV file. Both functionalities are implemented  using the method from the MailerHelper class i.e send_mail_to_user().&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/c17bb25827e43940cc9f253c04ee7343878298df&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2) Sending email to reviewer when new submission is availble:'''&lt;br /&gt;
&lt;br /&gt;
Added functionality to send email to the reviewer when new submission is available by making changes in the submitted_content_controller and assignment_participant model.The method handled boundary constraints like checking whether the round was valid and disabling email notification after the last round of review.&lt;br /&gt;
&lt;br /&gt;
Code to check if it was the valid round&lt;br /&gt;
&lt;br /&gt;
In the assignment_participant.rb,&lt;br /&gt;
Firstly, fetched the topic_id from the SignedUpTeam class and got the next due date using the DueDate model&lt;br /&gt;
Finally compared the round of the Due date with the number of review rounds of the assignments, to verify if its the final round.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/e09761b7d8746f26485f264c7fd7936b8d956326#diff-ab934619c8e13cc78f27fbc38461a25b&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Extra functionality of specifying the current review round and providing the direct link to reviewer in the mail itself also implemented in the submitted_content controller using the ReviewResponseMap and Response class.&lt;br /&gt;
&lt;br /&gt;
In the submitted_content_controller.rb,&lt;br /&gt;
We mapped the reviewer_id and reviewee_id, fetched from participants, using the ReviewResponseMap class.&lt;br /&gt;
For all such mappings retrieved, we are fetching the last response id, which is then passed as the URL suffix to redirect the reviewer to the appropriate page.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/e9de954591975724e3dc549144185c00c7e5b0dd#diff-33d668958529875af7029d78e37aff60&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3) Including a specific link for the  deadline reminders email functionality for reviewers  :'''&lt;br /&gt;
&lt;br /&gt;
Added a review_reminder_email method and mail_reviewers method in the delayed_mailer.rb file which implemented the functionality for sending deadline reminder mails which includes a link on where to go and perform the specific task.&lt;br /&gt;
Prepared a hash named email_list using the email and participant_id, for each participant who is a reviewer.&lt;br /&gt;
Using this hash, we are calling the review_reminder_email function.&lt;br /&gt;
In this function, based on the due date for the deadline_type(i.e reviewer), we fetch the participant id of the same and add it as the suffix in the URL to be visited by the reviewer.&lt;br /&gt;
Also, the logic of the copy of mail to the instructor is also taken care.&lt;br /&gt;
Notice that the link in the instructor's email will contain the '?id=' field of the last participant fetched.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/95476252c1e44f7262ba76993414bdb3ab76c64a#diff-9d59b3dd49f673876917117e94433d4e&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the background_email_reminder.rake file,&lt;br /&gt;
Earlier only the emails for the participants were fetched, but now we are fetching the hash containing the email and response_id. The response_id field was fetched as per the below order in the code-&lt;br /&gt;
participants.review_mappings -&amp;gt; allresponsemaps -&amp;gt; eachresponsemap -&amp;gt; response.&lt;br /&gt;
For the reviewer assign_type, we have defined a separate method send_reminder_emails(), wherein we pass the response_id of the email_list hash, and add it as a suffix in the URL which will be accessed by the reviewer.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/95476252c1e44f7262ba76993414bdb3ab76c64a#diff-a0169176ac373c3a8222d8cba5acdac0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: All the mails except the ones for the reviewer which are sent to mailinator are sent to expertiza.development@gmail.com ,as this is already set in the development environment.&lt;br /&gt;
&lt;br /&gt;
==Additional Links==&lt;br /&gt;
&lt;br /&gt;
*Git pull link: https://github.com/expertiza/expertiza/pull/1385&lt;br /&gt;
*Heroku deployment: yet to be done&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[https://relishapp.com/rspec Rspec Documentation]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
[mailto:asivaga@ncsu.edu Arjun Sivagaminathan Mathan Kumar]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:hbbadiya@ncsu.edu Harshit Badiyani]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:panumul@ncsu.edu Pranav Reddy Anumula]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=122145</id>
		<title>E1902 ahp project</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=122145"/>
		<updated>2019-03-25T18:56:38Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using Ruby on Rails framework.Expertiza allows the instructor to create new assignments and customize new or existing assignments.The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)[1].Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;When students' accounts are created by importing a CSV file on the Users page, they receive e-mails with their user-ID and password. But if an account is created by adding them as participants to an assignment when they don't already have an account, e-mail is not sent. Students should receive e-mails upon account creation, regardless of how their account is created.  So this involves adding a call to the e-mailer … or, perhaps, moving an email call from the Users controller to the point where an account is actually created.&lt;br /&gt;
&amp;lt;li&amp;gt; Second, evidently if a submission is revised after review, the system e-mails the reviewer saying to revise the review. This is just fine ... except if the last round of review is in progress.The message telling reviewers to revise their reviews should not be sent after the last review deadline has passed.  It would also be nice to fix the message so it tells which review (Review 1, Review 2, etc.) has been revised, and gives the reviewer a link directly to it.&lt;br /&gt;
&amp;lt;li&amp;gt;Deadline reminders should include a link on where to go to perform the needed function.&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/models/assignment_participant.rb&lt;br /&gt;
* app/models/assignment.rb&lt;br /&gt;
* app/models/course_participant.rb&lt;br /&gt;
* app/controllers/submitted_content_controller.rb&lt;br /&gt;
* app/mailers/delayed_mailer.rb&lt;br /&gt;
* lib/tasks/background_email_reminder.rake&lt;br /&gt;
* spec/models/assignment_particpant_spec.rb&lt;br /&gt;
&lt;br /&gt;
==Implementation approach==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1) Email sent when user is added as a participant to assignment :'''&lt;br /&gt;
&lt;br /&gt;
When students' accounts are created by importing a CSV file on the Users page,they receive e-mails but not when user was added as a participant to the assignment. We added a method in the assignment_participant.rb file (model) to send mails when a participant is added to an assignment on the assignment page by importing a CSV file. We have also added a method in the course_participant.rb file(model), to send the mail when a Course participant is added by importing a CSV file. Both functionalities are implemented  using the method from the MailerHelper class i.e send_mail_to_user().&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/c17bb25827e43940cc9f253c04ee7343878298df&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2) Sending email to reviewer when new submission is availble:'''&lt;br /&gt;
&lt;br /&gt;
Added functionality to send email to the reviewer when new submission is available by making changes in the submitted_content_controller and assignment_participant model.The method handled boundary constraints like checking whether the round was valid and disabling email notification after the last round of review.&lt;br /&gt;
&lt;br /&gt;
Code to check if it was the valid round&lt;br /&gt;
&lt;br /&gt;
In the assignment_participant.rb,&lt;br /&gt;
Firstly, fetched the topic_id from the SignedUpTeam class and got the next due date using the DueDate model&lt;br /&gt;
Finally compared the round of the Due date with the number of review rounds of the assignments, to verify if its the final round.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/e09761b7d8746f26485f264c7fd7936b8d956326#diff-ab934619c8e13cc78f27fbc38461a25b&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Extra functionality of specifying the current review round and providing the direct link to reviewer in the mail itself also implemented in the submitted_content controller using the ReviewResponseMap and Response class.&lt;br /&gt;
&lt;br /&gt;
In the submitted_content_controller.rb,&lt;br /&gt;
We mapped the reviewer_id and reviewee_id, fetched from participants, using the ReviewResponseMap class.&lt;br /&gt;
For all such mappings retrieved, we are fetching the last response id, which is then passed as the URL suffix to redirect the reviewer to the appropriate page.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/e9de954591975724e3dc549144185c00c7e5b0dd#diff-33d668958529875af7029d78e37aff60&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3) Including a specific link for the  deadline reminders email functionality for reviewers  :'''&lt;br /&gt;
&lt;br /&gt;
Added a review_reminder_email method and mail_reviewers method in the delayed_mailer.rb file which implemented the functionality for sending deadline reminder mails which includes a link on where to go and perform the specific task.&lt;br /&gt;
Prepared a hash named email_list using the email and participant_id, for each participant who is a reviewer.&lt;br /&gt;
Using this hash, we are calling the review_reminder_email function.&lt;br /&gt;
In this function, based on the due date for the deadline_type(i.e reviewer), we fetch the participant id of the same and add it as the suffix in the URL to be visited by the reviewer.&lt;br /&gt;
Also, the logic of the copy of mail to the instructor is also taken care.&lt;br /&gt;
Notice that the link in the instructor's email will contain the '?id=' field of the last participant fetched.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/95476252c1e44f7262ba76993414bdb3ab76c64a#diff-9d59b3dd49f673876917117e94433d4e&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the background_email_reminder.rake file,&lt;br /&gt;
Earlier only the emails for the participants were fetched, but now we are fetching the hash containing the email and response_id. The response_id field was fetched as per the below order in the code-&lt;br /&gt;
participants.review_mappings -&amp;gt; allresponsemaps -&amp;gt; eachresponsemap -&amp;gt; response.&lt;br /&gt;
For the reviewer assign_type, we have defined a separate method send_reminder_emails(), wherein we pass the response_id of the email_list hash, and add it as a suffix in the URL which will be accessed by the reviewer.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/95476252c1e44f7262ba76993414bdb3ab76c64a#diff-a0169176ac373c3a8222d8cba5acdac0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: All the mails except the ones for the reviewer which are sent to mailinator are sent to expertiza.development@gmail.com ,as this is already set in the development environment.&lt;br /&gt;
&lt;br /&gt;
==Additional Links==&lt;br /&gt;
&lt;br /&gt;
*Git pull link: https://github.com/expertiza/expertiza/pull/1253&lt;br /&gt;
*VCL deployment: http://152.46.18.165:8080/ &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[https://relishapp.com/rspec Rspec Documentation]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
[mailto:asivaga@ncsu.edu Arjun Sivagaminathan Mathan Kumar]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:hbbadiya@ncsu.edu Harshit Badiyani]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:panumul@ncsu.edu Pranav Reddy Anumula]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=121776</id>
		<title>E1902 ahp project</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=121776"/>
		<updated>2019-03-23T15:29:16Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using Ruby on Rails framework.Expertiza allows the instructor to create new assignments and customize new or existing assignments.The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)[1].Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;When students' accounts are created by importing a CSV file on the Users page, they receive e-mails with their user-ID and password. But if an account is created by adding them as participants to an assignment when they don't already have an account, e-mail is not sent. Students should receive e-mails upon account creation, regardless of how their account is created.  So this involves adding a call to the e-mailer … or, perhaps, moving an email call from the Users controller to the point where an account is actually created.&lt;br /&gt;
&amp;lt;li&amp;gt; Second, evidently if a submission is revised after review, the system e-mails the reviewer saying to revise the review. This is just fine ... except if the last round of review is in progress.The message telling reviewers to revise their reviews should not be sent after the last review deadline has passed.  It would also be nice to fix the message so it tells which review (Review 1, Review 2, etc.) has been revised, and gives the reviewer a link directly to it.&lt;br /&gt;
&amp;lt;li&amp;gt;Deadline reminders should include a link on where to go to perform the needed function.&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/models/assignment_participant.rb&lt;br /&gt;
* app/models/assignment.rb&lt;br /&gt;
* app/models/course_participant.rb&lt;br /&gt;
* app/controllers/submitted_content_controller.rb&lt;br /&gt;
* app/mailers/delayed_mailer.rb&lt;br /&gt;
* lib/tasks/background_email_reminder.rake&lt;br /&gt;
* spec/models/assignment_particpant_spec.rb&lt;br /&gt;
&lt;br /&gt;
==Implementation approach==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1) Email sent when user is added as a participant to assignment :'''&lt;br /&gt;
&lt;br /&gt;
When students' accounts are created by importing a CSV file on the Users page,they receive e-mails but not when user was added as a participant to the assignment. We added a method in the assignment_participant.rb file (model) to send mails when a participant is added to an assignment on the assignment page by importing a CSV file. We have also added a method in the course_participant.rb file(model), to send the mail when a Course participant is added by importing a CSV file. Both functionalities are implemented  using the method from the MailerHelper class i.e send_mail_to_user().&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/c17bb25827e43940cc9f253c04ee7343878298df&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2) Sending email to reviewer when new submission is availble:'''&lt;br /&gt;
&lt;br /&gt;
Added functionality to send email to the reviewer when new submission is available by making changes in the submitted_content_controller and assignment_participant model.The method handled boundary constraints like checking whether the round was valid and disabling email notification after the last round of review.&lt;br /&gt;
&lt;br /&gt;
Code to check if it was the valid round&lt;br /&gt;
&lt;br /&gt;
In the assignment_participant.rb,&lt;br /&gt;
Firstly, fetched the topic_id from the SignedUpTeam class and got the next due date using the DueDate model&lt;br /&gt;
Finally compared the round of the Due date with the number of review rounds of the assignments, to verify if its the final round.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/e09761b7d8746f26485f264c7fd7936b8d956326#diff-ab934619c8e13cc78f27fbc38461a25b&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Extra functionality of specifying the current review round and providing the direct link to reviewer in the mail itself also implemented in the submitted_content controller using the ReviewResponseMap and Response class.&lt;br /&gt;
&lt;br /&gt;
In the submitted_content_controller.rb,&lt;br /&gt;
We mapped the reviewer_id and reviewee_id, fetched from participants, using the ReviewResponseMap class.&lt;br /&gt;
For all such mappings retrieved, we are fetching the last response id, which is then passed as the URL suffix to redirect the reviewer to the appropriate page.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/e9de954591975724e3dc549144185c00c7e5b0dd#diff-33d668958529875af7029d78e37aff60&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3) Including a specific link for the  deadline reminders email functionality for reviewers  :'''&lt;br /&gt;
&lt;br /&gt;
Added a review_reminder_email method and mail_reviewers method in the delayed_mailer.rb file which implemented the functionality for sending deadline reminder mails which includes a link on where to go and perform the specific task.&lt;br /&gt;
Prepared a hash named email_list using the email and participant_id, for each participant who is a reviewer.&lt;br /&gt;
Using this hash, we are calling the review_reminder_email function.&lt;br /&gt;
In this function, based on the due date for the deadline_type(i.e reviewer), we fetch the participant id of the same and add it as the suffix in the URL to be visited by the reviewer.&lt;br /&gt;
Also, the logic of the copy of mail to the instructor is also taken care.&lt;br /&gt;
Notice that the link in the instructor's email will contain the '?id=' field of the last participant fetched.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/95476252c1e44f7262ba76993414bdb3ab76c64a#diff-9d59b3dd49f673876917117e94433d4e&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the background_email_reminder.rake file,&lt;br /&gt;
Earlier only the emails for the participants were fetched, but now we are fetching the hash containing the email and response_id. The response_id field was fetched as per the below order in the code-&lt;br /&gt;
participants.review_mappings -&amp;gt; allresponsemaps -&amp;gt; eachresponsemap -&amp;gt; response.&lt;br /&gt;
For the reviewer assign_type, we have defined a separate method send_reminder_emails(), wherein we pass the response_id of the email_list hash, and add it as a suffix in the URL which will be accessed by the reviewer.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/95476252c1e44f7262ba76993414bdb3ab76c64a#diff-a0169176ac373c3a8222d8cba5acdac0&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
We have used Rspec for testing the email functionalities.Using the test driven development(TDD) approach, we have added an Rspec test which checks whether the mail is delivered to the expected receiver upon creation of the account for the student.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
We have created a new assignment_particpant_ spec file for the above purpose.The spec uses double and stub features of rspec gem to fake user login.&lt;br /&gt;
Since the smtp setting are set to test mode all mails go to expertiza.development@gmail.com and not the actual user.Hence when an email is sent the&lt;br /&gt;
ActionMailer::Base.deliveries list gets updated.The last element in the deliveries list will be the email that was sent when the import method was invoked.&lt;br /&gt;
Then using expect object we verify whether the email was correctly sent by checking the subject, from and to field.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/3c17dd70fcdc39e0600ad01a5953bb8adf007ffd#diff-33bbfe50bc35527232a815c6492d8fb4&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
NOTE: All the mails except the ones for the reviewer which are sent to mailinator are sent to expertiza.development@gmail.com ,as this is already set in the development environment.&lt;br /&gt;
&lt;br /&gt;
==Additional Links==&lt;br /&gt;
&lt;br /&gt;
*Git pull link: https://github.com/expertiza/expertiza/pull/1253&lt;br /&gt;
*VCL deployment: http://152.46.18.165:8080/ &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[https://relishapp.com/rspec Rspec Documentation]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
[mailto:asivaga@ncsu.edu Arjun Sivagaminathan Mathan Kumar]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:hbbadiya@ncsu.edu Harshit Badiyani]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:panumul@ncsu.edu Pranav Reddy Anumula]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=121681</id>
		<title>E1902 ahp project</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=121681"/>
		<updated>2019-03-18T21:49:00Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using Ruby on Rails framework.Expertiza allows the instructor to create new assignments and customize new or existing assignments.The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)[1].Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;When students' accounts are created by importing a CSV file on the Users page, they receive e-mails with their user-ID and password. But if an account is created by adding them as participants to an assignment when they don't already have an account, e-mail is not sent. Students should receive e-mails upon account creation, regardless of how their account is created.  So this involves adding a call to the e-mailer … or, perhaps, moving an email call from the Users controller to the point where an account is actually created.&lt;br /&gt;
&amp;lt;li&amp;gt; Second, evidently if a submission is revised after review, the system e-mails the reviewer saying to revise the review. This is just fine ... except if the last round of review is in progress.The message telling reviewers to revise their reviews should not be sent after the last review deadline has passed.  It would also be nice to fix the message so it tells which review (Review 1, Review 2, etc.) has been revised, and gives the reviewer a link directly to it.&lt;br /&gt;
&amp;lt;li&amp;gt;Deadline reminders should include a link on where to go to perform the needed function.&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/models/assignment_participant.rb&lt;br /&gt;
* app/models/assignment.rb&lt;br /&gt;
* app/models/course_participant.rb&lt;br /&gt;
* app/controllers/submitted_content_controller.rb&lt;br /&gt;
* app/mailers/delayed_mailer.rb&lt;br /&gt;
* lib/tasks/background_email_reminder.rake&lt;br /&gt;
* spec/models/assignment_particpant_spec.rb&lt;br /&gt;
&lt;br /&gt;
==Implementation approach==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1) Email sent when user is added as a participant to assignment :'''&lt;br /&gt;
&lt;br /&gt;
When students' accounts are created by importing a CSV file on the Users page,they receive e-mails but not when user was added as a participant to the assignment. We added a method in the assignment_participant.rb file (model) to send mails when a participant is added to an assignment on the assignment page by importing a CSV file. We have also added a method in the course_participant.rb file(model), to send the mail when a Course participant is added by importing a CSV file. Both functionalities are implemented  using the method from the MailerHelper class i.e send_mail_to_user().&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/c17bb25827e43940cc9f253c04ee7343878298df&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2) Sending email to reviewer when new submission is availble:'''&lt;br /&gt;
&lt;br /&gt;
Added functionality to send email to the reviewer when new submission is available by making changes in the submitted_content_controller and assignment_participant model.The method handled boundary constraints like checking whether the round was valid and disabling email notification after the last round of review.&lt;br /&gt;
&lt;br /&gt;
Code to check if it was the valid round&lt;br /&gt;
&lt;br /&gt;
In the assignment_participant.rb,&lt;br /&gt;
Firstly, fetched the topic_id from the SignedUpTeam class and got the next due date using the DueDate model&lt;br /&gt;
Finally compared the round of the Due date with the number of review rounds of the assignments, to verify if its the final round.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/e09761b7d8746f26485f264c7fd7936b8d956326#diff-ab934619c8e13cc78f27fbc38461a25b&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Extra functionality of specifying the current review round and providing the direct link to reviewer in the mail itself also implemented in the submitted_content controller using the ReviewResponseMap and Response class.&lt;br /&gt;
&lt;br /&gt;
In the submitted_content_controller.rb,&lt;br /&gt;
We mapped the reviewer_id and reviewee_id, fetched from participants, using the ReviewResponseMap class.&lt;br /&gt;
For all such mappings retrieved, we are fetching the last response id, which is then passed as the URL suffix to redirect the reviewer to the appropriate page.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/e9de954591975724e3dc549144185c00c7e5b0dd#diff-33d668958529875af7029d78e37aff60&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3) Including a specific link for the  deadline reminders email functionality for reviewers  :'''&lt;br /&gt;
&lt;br /&gt;
Added a review_reminder_email method and mail_reviewers method in the delayed_mailer.rb file which implemented the functionality for sending deadline reminder mails which includes a link on where to go and perform the specific task.&lt;br /&gt;
Prepared a hash named email_list using the email and participant_id, for each participant who is a reviewer.&lt;br /&gt;
Using this hash, we are calling the review_reminder_email function.&lt;br /&gt;
In this function, based on the due date for the deadline_type(i.e reviewer), we fetch the participant id of the same and add it as the suffix in the URL to be visited by the reviewer.&lt;br /&gt;
Also, the logic of the copy of mail to the instructor is also taken care.&lt;br /&gt;
Notice that the link in the instructor's email will contain the '?id=' field of the last participant fetched.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/95476252c1e44f7262ba76993414bdb3ab76c64a#diff-9d59b3dd49f673876917117e94433d4e&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the background_email_reminder.rake file,&lt;br /&gt;
Earlier only the emails for the participants were fetched, but now we are fetching the hash containing the email and response_id. The response_id field was fetched as per the below order in the code-&lt;br /&gt;
participants.review_mappings -&amp;gt; allresponsemaps -&amp;gt; eachresponsemap -&amp;gt; response.&lt;br /&gt;
For the reviewer assign_type, we have defined a separate method send_reminder_emails(), wherein we pass the response_id of the email_list hash, and add it as a suffix in the URL which will be accessed by the reviewer.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/95476252c1e44f7262ba76993414bdb3ab76c64a#diff-a0169176ac373c3a8222d8cba5acdac0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Bonus Functionality Implemented below:-'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4) Including a specific link for the  deadline reminders email functionality for submissions  :'''&lt;br /&gt;
&lt;br /&gt;
Added a submission_reminder_email method in the delayed_mailer.rb file which implemented the functionality for sending deadline reminder mails which includes a link on where to go and perform the submission.&lt;br /&gt;
Prepared a hash named emails in the function find_team_members_email using the email and team_member_id, for each participant who is a team member.&lt;br /&gt;
Using this hash, we are calling the review_reminder_email function.&lt;br /&gt;
In this function, based on the due date for the deadline_type(i.e submission), we fetch the participant_id of the same and add it as the suffix in the URL to be visited by the team member.&lt;br /&gt;
&lt;br /&gt;
https://github.com/pratik-abhyankar/expertiza/commit/0a2af1a67eea4717e0e10974fba0df134aa67bf1#diff-9d59b3dd49f673876917117e94433d4e&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the background_email_reminder.rake file,&lt;br /&gt;
for the assign_type=&amp;quot;submission&amp;quot;, we fetch the assign.id which is to be passed as the suffix to the url to be sent in the mail for submission reminder.&lt;br /&gt;
The team members can click on this link in the email and get redirected to the submission page of the particular asssignment.&lt;br /&gt;
&lt;br /&gt;
https://github.com/pratik-abhyankar/expertiza/commit/0a2af1a67eea4717e0e10974fba0df134aa67bf1#diff-a0169176ac373c3a8222d8cba5acdac0&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
We have used Rspec for testing the email functionalities.Using the test driven development(TDD) approach, we have added an Rspec test which checks whether the mail is delivered to the expected receiver upon creation of the account for the student.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
We have created a new assignment_particpant_ spec file for the above purpose.The spec uses double and stub features of rspec gem to fake user login.&lt;br /&gt;
Since the smtp setting are set to test mode all mails go to expertiza.development@gmail.com and not the actual user.Hence when an email is sent the&lt;br /&gt;
ActionMailer::Base.deliveries list gets updated.The last element in the deliveries list will be the email that was sent when the import method was invoked.&lt;br /&gt;
Then using expect object we verify whether the email was correctly sent by checking the subject, from and to field.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/3c17dd70fcdc39e0600ad01a5953bb8adf007ffd#diff-33bbfe50bc35527232a815c6492d8fb4&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
NOTE: All the mails except the ones for the reviewer which are sent to mailinator are sent to expertiza.development@gmail.com ,as this is already set in the development environment.&lt;br /&gt;
&lt;br /&gt;
==Additional Links==&lt;br /&gt;
&lt;br /&gt;
*Git pull link: https://github.com/expertiza/expertiza/pull/1253&lt;br /&gt;
*VCL deployment: http://152.46.18.165:8080/ &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[https://relishapp.com/rspec Rspec Documentation]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
[mailto:asivaga@ncsu.edu Arjun Sivagaminathan Mathan Kumar]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:hbbadiya@ncsu.edu Harshit Badiyani]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:panumul@ncsu.edu Pranav Reddy Anumula]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=121680</id>
		<title>E1902 ahp project</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1902_ahp_project&amp;diff=121680"/>
		<updated>2019-03-18T21:46:02Z</updated>

		<summary type="html">&lt;p&gt;Asivaga: Created page with &amp;quot;This page provides a description of the Expertiza based OSS project. __TOC__  ==About Expertiza==  [http://expertiza.ncsu.edu/ Expertiza] is an open source project developed usin...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a description of the Expertiza based OSS project.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==About Expertiza==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project developed using Ruby on Rails framework.Expertiza allows the instructor to create new assignments and customize new or existing assignments.The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)[1].Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
==Problem Statement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;When students' accounts are created by importing a CSV file on the Users page, they receive e-mails with their user-ID and password. But if an account is created by adding them as participants to an assignment when they don't already have an account, e-mail is not sent. Students should receive e-mails upon account creation, regardless of how their account is created.  So this involves adding a call to the e-mailer … or, perhaps, moving an email call from the Users controller to the point where an account is actually created.&lt;br /&gt;
&amp;lt;li&amp;gt; Second, evidently if a submission is revised after review, the system e-mails the reviewer saying to revise the review. This is just fine ... except if the last round of review is in progress.The message telling reviewers to revise their reviews should not be sent after the last review deadline has passed.  It would also be nice to fix the message so it tells which review (Review 1, Review 2, etc.) has been revised, and gives the reviewer a link directly to it.&lt;br /&gt;
&amp;lt;li&amp;gt;Deadline reminders should include a link on where to go to perform the needed function.&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/models/assignment_participant.rb&lt;br /&gt;
* app/models/assignment.rb&lt;br /&gt;
* app/models/course_participant.rb&lt;br /&gt;
* app/controllers/submitted_content_controller.rb&lt;br /&gt;
* app/mailers/delayed_mailer.rb&lt;br /&gt;
* lib/tasks/background_email_reminder.rake&lt;br /&gt;
* spec/models/assignment_particpant_spec.rb&lt;br /&gt;
&lt;br /&gt;
==Implementation approach==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1) Email sent when user is added as a participant to assignment :'''&lt;br /&gt;
&lt;br /&gt;
When students' accounts are created by importing a CSV file on the Users page,they receive e-mails but not when user was added as a participant to the assignment. We added a method in the assignment_participant.rb file (model) to send mails when a participant is added to an assignment on the assignment page by importing a CSV file. We have also added a method in the course_participant.rb file(model), to send the mail when a Course participant is added by importing a CSV file. Both functionalities are implemented  using the method from the MailerHelper class i.e send_mail_to_user().&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/c17bb25827e43940cc9f253c04ee7343878298df&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2) Sending email to reviewer when new submission is availble:'''&lt;br /&gt;
&lt;br /&gt;
Added functionality to send email to the reviewer when new submission is available by making changes in the submitted_content_controller and assignment_participant model.The method handled boundary constraints like checking whether the round was valid and disabling email notification after the last round of review.&lt;br /&gt;
&lt;br /&gt;
Code to check if it was the valid round&lt;br /&gt;
&lt;br /&gt;
In the assignment_participant.rb,&lt;br /&gt;
Firstly, fetched the topic_id from the SignedUpTeam class and got the next due date using the DueDate model&lt;br /&gt;
Finally compared the round of the Due date with the number of review rounds of the assignments, to verify if its the final round.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/e09761b7d8746f26485f264c7fd7936b8d956326#diff-ab934619c8e13cc78f27fbc38461a25b&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Extra functionality of specifying the current review round and providing the direct link to reviewer in the mail itself also implemented in the submitted_content controller using the ReviewResponseMap and Response class.&lt;br /&gt;
&lt;br /&gt;
In the submitted_content_controller.rb,&lt;br /&gt;
We mapped the reviewer_id and reviewee_id, fetched from participants, using the ReviewResponseMap class.&lt;br /&gt;
For all such mappings retrieved, we are fetching the last response id, which is then passed as the URL suffix to redirect the reviewer to the appropriate page.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/e9de954591975724e3dc549144185c00c7e5b0dd#diff-33d668958529875af7029d78e37aff60&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3) Including a specific link for the  deadline reminders email functionality for reviewers  :'''&lt;br /&gt;
&lt;br /&gt;
Added a review_reminder_email method and mail_reviewers method in the delayed_mailer.rb file which implemented the functionality for sending deadline reminder mails which includes a link on where to go and perform the specific task.&lt;br /&gt;
Prepared a hash named email_list using the email and participant_id, for each participant who is a reviewer.&lt;br /&gt;
Using this hash, we are calling the review_reminder_email function.&lt;br /&gt;
In this function, based on the due date for the deadline_type(i.e reviewer), we fetch the participant id of the same and add it as the suffix in the URL to be visited by the reviewer.&lt;br /&gt;
Also, the logic of the copy of mail to the instructor is also taken care.&lt;br /&gt;
Notice that the link in the instructor's email will contain the '?id=' field of the last participant fetched.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/95476252c1e44f7262ba76993414bdb3ab76c64a#diff-9d59b3dd49f673876917117e94433d4e&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the background_email_reminder.rake file,&lt;br /&gt;
Earlier only the emails for the participants were fetched, but now we are fetching the hash containing the email and response_id. The response_id field was fetched as per the below order in the code-&lt;br /&gt;
participants.review_mappings -&amp;gt; allresponsemaps -&amp;gt; eachresponsemap -&amp;gt; response.&lt;br /&gt;
For the reviewer assign_type, we have defined a separate method send_reminder_emails(), wherein we pass the response_id of the email_list hash, and add it as a suffix in the URL which will be accessed by the reviewer.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/95476252c1e44f7262ba76993414bdb3ab76c64a#diff-a0169176ac373c3a8222d8cba5acdac0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Bonus Functionality Implemented below:-'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''4) Including a specific link for the  deadline reminders email functionality for submissions  :'''&lt;br /&gt;
&lt;br /&gt;
Added a submission_reminder_email method in the delayed_mailer.rb file which implemented the functionality for sending deadline reminder mails which includes a link on where to go and perform the submission.&lt;br /&gt;
Prepared a hash named emails in the function find_team_members_email using the email and team_member_id, for each participant who is a team member.&lt;br /&gt;
Using this hash, we are calling the review_reminder_email function.&lt;br /&gt;
In this function, based on the due date for the deadline_type(i.e submission), we fetch the participant_id of the same and add it as the suffix in the URL to be visited by the team member.&lt;br /&gt;
&lt;br /&gt;
https://github.com/pratik-abhyankar/expertiza/commit/0a2af1a67eea4717e0e10974fba0df134aa67bf1#diff-9d59b3dd49f673876917117e94433d4e&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the background_email_reminder.rake file,&lt;br /&gt;
for the assign_type=&amp;quot;submission&amp;quot;, we fetch the assign.id which is to be passed as the suffix to the url to be sent in the mail for submission reminder.&lt;br /&gt;
The team members can click on this link in the email and get redirected to the submission page of the particular asssignment.&lt;br /&gt;
&lt;br /&gt;
https://github.com/pratik-abhyankar/expertiza/commit/0a2af1a67eea4717e0e10974fba0df134aa67bf1#diff-a0169176ac373c3a8222d8cba5acdac0&lt;br /&gt;
&lt;br /&gt;
==Testing==&lt;br /&gt;
&lt;br /&gt;
We have used Rspec for testing the email functionalities.Using the test driven development(TDD) approach, we have added an Rspec test which checks whether the mail is delivered to the expected receiver upon creation of the account for the student.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
We have created a new assignment_particpant_ spec file for the above purpose.The spec uses double and stub features of rspec gem to fake user login.&lt;br /&gt;
Since the smtp setting are set to test mode all mails go to expertiza.development@gmail.com and not the actual user.Hence when an email is sent the&lt;br /&gt;
ActionMailer::Base.deliveries list gets updated.The last element in the deliveries list will be the email that was sent when the import method was invoked.&lt;br /&gt;
Then using expect object we verify whether the email was correctly sent by checking the subject, from and to field.&lt;br /&gt;
&lt;br /&gt;
https://github.com/expertiza/expertiza/commit/3c17dd70fcdc39e0600ad01a5953bb8adf007ffd#diff-33bbfe50bc35527232a815c6492d8fb4&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
NOTE: All the mails except the ones for the reviewer which are sent to mailinator are sent to expertiza.development@gmail.com ,as this is already set in the development environment.&lt;br /&gt;
&lt;br /&gt;
==Additional Links==&lt;br /&gt;
&lt;br /&gt;
*Git pull link: https://github.com/expertiza/expertiza/pull/1253&lt;br /&gt;
*VCL deployment: http://152.46.18.165:8080/ &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[https://relishapp.com/rspec Rspec Documentation]&lt;br /&gt;
&lt;br /&gt;
==Team==&lt;br /&gt;
[mailto:ahshah4@ncsu.edu Aditya Shah]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:ananava@ncsu.edu Ankit Nanavaty]&amp;lt;br&amp;gt;&lt;br /&gt;
[mailto:paabhyan@ncsu.edu Pratik Abhyankar]&lt;/div&gt;</summary>
		<author><name>Asivaga</name></author>
	</entry>
</feed>