<?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=Cbaruah</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=Cbaruah"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Cbaruah"/>
	<updated>2026-08-23T17:03:05Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1698._Instructor/student_control_of_anonymity_%2B_group-based_reviewing&amp;diff=105415</id>
		<title>CSC/ECE 517 Fall 2016/E1698. Instructor/student control of anonymity + group-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1698._Instructor/student_control_of_anonymity_%2B_group-based_reviewing&amp;diff=105415"/>
		<updated>2016-11-11T19:17:28Z</updated>

		<summary type="html">&lt;p&gt;Cbaruah: /* ScreenShots of pages to be modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
==Purpose==&lt;br /&gt;
'''Scenario:'''  An instructor using Expertiza wants to do an experiment comparing anonymous review with identified (non-anonymous) review.  And in general, there is quite a bit of research interest in the implications of anonymity in student interactions.  In this experiment, &lt;br /&gt;
&lt;br /&gt;
Approx ½ the class will conduct two rounds of formative reviews in small groups (4-5 students/group). The groups will stay the same for both rounds. The students in the groups should be able to see who they are reviewing and who is reviewing them.&lt;br /&gt;
For the non-anonymous groups, I'd like the students to be able to request group members, so I would want to be able to have some control, perhaps with an option to use random assignment to groups if they had no preference for group members.&lt;br /&gt;
Approx ½ the class will conduct two rounds of formative reviews anonymously (using the normal method we used this fall)&lt;br /&gt;
&lt;br /&gt;
'''What needs to be done''':  The Review Strategy tab of assignment creation needs have a new checkbox for anonymous reviews, which would be checked by default.  If it is checked, student views would be the same as at present.  If it is not checked, students would see their reviewers and grades in the same way as the instructor now sees them; thus, instead of seeing “Reviewer 1”, “Reviewer 2”, the student might see, “Anthony Adams”, “Bessie Brown”, etc.&lt;br /&gt;
&lt;br /&gt;
The code for displaying names obviously already exists, because it is used in the instructor views.  Implement the changes in an elegant way; for example, instead of checking multiple times in the view to determine whether the reviewer’s (or author’s) real name is to be displayed, try to send a message to a model class that will “do the right thing.”  This may involve creating separate model classes for anonymous and identified review, so that messages could be sent polymorphically.  It’s hard for me to know, without studying the code, whether this would simplify the code or clutter it, but please give some thought to what is the clearest and most robust way to code both anonymous &amp;amp; identified reviews, from the student’s and the instructor’s perspective.&lt;br /&gt;
&lt;br /&gt;
The other piece of the project is to enable review within groups, which means that every student in a group will review every other student in the group (but no students outside the group).  This can be configured on the Review Strategy tab when the review strategy is set to “Instructor-Selected”.  Under the “Set number of reviews done by each student” box, there could be another one, “Review done in groups of [ ] students”, where “[ ]” is a small text box.  There should also be an information button describing how group-based review works.&lt;br /&gt;
&lt;br /&gt;
==Scope==&lt;br /&gt;
The project provides instructor a functionality to make assignment reviews to be anonymous or non-anonymous. In addition, instructors have authority to create and assign review groups (students assigned same review group will review each others work) randomly.This scenario will be valid for individual assignments only. Also, anonymity is taken care from the perspective of reviewer as well as the reviewee. In case of non-anonymous groups, students may have the option to invite other students to join their group provided group size is not exceeding the maximum limit.&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a peer review system which provides incremental learning from the class. This project has been developed together by faculty and students using [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create, edit and delete assignments, create new assignment topics, assign them to a particular class or selected students, have students work on teams and then review each other's assignments at the end. For the students, they can signup for topics, form teams, and submit their projects and assignments. &lt;br /&gt;
Students then review the work done by other students and give suggestions to improve. Teams after reviews are allotted scores and they can refer to the peer comments to further improve their work. It also supports submission of different file types as well as URLs for assignments.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
&lt;br /&gt;
'''Assignment Creation:'''&lt;br /&gt;
&lt;br /&gt;
Providing a checkbox in &amp;quot;review strategy tab&amp;quot; to mark an assignment to have anonymous or non-anonymous reviews. By default, every assignment will be having anonymous reviews but an instructor can change it by unchecking the checkbox.&lt;br /&gt;
&lt;br /&gt;
'''Group Formation:'''&lt;br /&gt;
&lt;br /&gt;
The instructor has the authority to create and assign groups randomly. In this case, students can not drop the group they have been assigned and only an instructor can change their group if needed. &lt;br /&gt;
In case, a group has not been assigned by an instructor, students will have the functionality to invite other students to join their group. This functionality is analogous to the invite members to join their team. &lt;br /&gt;
Students in the same group can review work of their group members only.&lt;br /&gt;
&lt;br /&gt;
For this, we will be creating a separate model for groups and will store all the group information into the corresponding database table. In order to follow the DRY principle, we will try to integrate the group code with the code written for teams. &lt;br /&gt;
&lt;br /&gt;
'''Non Anonymous Reviews'''&lt;br /&gt;
&lt;br /&gt;
In the case of non-anonymous reviews, students will be able to see the names of all the group members who have graded their individual work. In addition, students can also see whose work they are going to grade so that the non-anonymity is maintained from both sides.&lt;br /&gt;
&lt;br /&gt;
=Files to be Considered=&lt;br /&gt;
*reveiw_mapping_controller.rb&lt;br /&gt;
&lt;br /&gt;
*teams_controller.rb&lt;br /&gt;
&lt;br /&gt;
*team.rb&lt;br /&gt;
&lt;br /&gt;
*views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&lt;br /&gt;
*views/grades/_reviews.html.erb&lt;br /&gt;
&lt;br /&gt;
=Key People=&lt;br /&gt;
===Developers===&lt;br /&gt;
*Bhavesh Kasliwal&lt;br /&gt;
*Bhavya Bansal&lt;br /&gt;
*Chinmoy Baruah&lt;br /&gt;
*Rishabh Sinha&lt;br /&gt;
&lt;br /&gt;
===Mentor===&lt;br /&gt;
*Ed Gehringer&lt;/div&gt;</summary>
		<author><name>Cbaruah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:ViewToBeChanged1.png&amp;diff=105414</id>
		<title>File:ViewToBeChanged1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:ViewToBeChanged1.png&amp;diff=105414"/>
		<updated>2016-11-11T19:09:00Z</updated>

		<summary type="html">&lt;p&gt;Cbaruah: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cbaruah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1698._Instructor/student_control_of_anonymity_%2B_group-based_reviewing&amp;diff=105395</id>
		<title>CSC/ECE 517 Fall 2016/E1698. Instructor/student control of anonymity + group-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1698._Instructor/student_control_of_anonymity_%2B_group-based_reviewing&amp;diff=105395"/>
		<updated>2016-11-11T05:43:12Z</updated>

		<summary type="html">&lt;p&gt;Cbaruah: /* ScreenShots of pages to be modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
==Purpose==&lt;br /&gt;
'''Scenario:'''  An instructor using Expertiza wants to do an experiment comparing anonymous review with identified (non-anonymous) review.  And in general, there is quite a bit of research interest in the implications of anonymity in student interactions.  In this experiment, &lt;br /&gt;
&lt;br /&gt;
Approx ½ the class will conduct two rounds of formative reviews in small groups (4-5 students/group). The groups will stay the same for both rounds. The students in the groups should be able to see who they are reviewing and who is reviewing them.&lt;br /&gt;
For the non-anonymous groups, I'd like the students to be able to request group members, so I would want to be able to have some control, perhaps with an option to use random assignment to groups if they had no preference for group members.&lt;br /&gt;
Approx ½ the class will conduct two rounds of formative reviews anonymously (using the normal method we used this fall)&lt;br /&gt;
&lt;br /&gt;
'''What needs to be done''':  The Review Strategy tab of assignment creation needs have a new checkbox for anonymous reviews, which would be checked by default.  If it is checked, student views would be the same as at present.  If it is not checked, students would see their reviewers and grades in the same way as the instructor now sees them; thus, instead of seeing “Reviewer 1”, “Reviewer 2”, the student might see, “Anthony Adams”, “Bessie Brown”, etc.&lt;br /&gt;
&lt;br /&gt;
The code for displaying names obviously already exists, because it is used in the instructor views.  Implement the changes in an elegant way; for example, instead of checking multiple times in the view to determine whether the reviewer’s (or author’s) real name is to be displayed, try to send a message to a model class that will “do the right thing.”  This may involve creating separate model classes for anonymous and identified review, so that messages could be sent polymorphically.  It’s hard for me to know, without studying the code, whether this would simplify the code or clutter it, but please give some thought to what is the clearest and most robust way to code both anonymous &amp;amp; identified reviews, from the student’s and the instructor’s perspective.&lt;br /&gt;
&lt;br /&gt;
The other piece of the project is to enable review within groups, which means that every student in a group will review every other student in the group (but no students outside the group).  This can be configured on the Review Strategy tab when the review strategy is set to “Instructor-Selected”.  Under the “Set number of reviews done by each student” box, there could be another one, “Review done in groups of [ ] students”, where “[ ]” is a small text box.  There should also be an information button describing how group-based review works.&lt;br /&gt;
&lt;br /&gt;
==Scope==&lt;br /&gt;
The project provides instructor a functionality to make assignment reviews to be anonymous or non-anonymous. In addition, instructors have authority to create and assign review groups (students assigned same review group will review each others work) randomly.This scenario will be valid for individual assignments only. Also, anonymity is taken care from the perspective of reviewer as well as the reviewee. In case of non-anonymous groups, students may have the option to invite other students to join their group provided group size is not exceeding the maximum limit.&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a peer review system which provides incremental learning from the class. This project has been developed together by faculty and students using [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create, edit and delete assignments, create new assignment topics, assign them to a particular class or selected students, have students work on teams and then review each other's assignments at the end. For the students, they can signup for topics, form teams, and submit their projects and assignments. &lt;br /&gt;
Students then review the work done by other students and give suggestions to improve. Teams after reviews are allotted scores and they can refer to the peer comments to further improve their work. It also supports submission of different file types as well as URLs for assignments.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
&lt;br /&gt;
'''Assignment Creation:'''&lt;br /&gt;
&lt;br /&gt;
Providing a checkbox in &amp;quot;review strategy tab&amp;quot; to mark an assignment to have anonymous or non-anonymous reviews. By default, every assignment will be having anonymous reviews but an instructor can change it by unchecking the checkbox.&lt;br /&gt;
&lt;br /&gt;
'''Group Formation:'''&lt;br /&gt;
&lt;br /&gt;
The instructor has the authority to create and assign groups randomly. In this case, students can not drop the group they have been assigned and only an instructor can change their group if needed. &lt;br /&gt;
In case, a group has not been assigned by an instructor, students will have the functionality to invite other students to join their group. This functionality is analogous to the invite members to join their team. &lt;br /&gt;
Students in the same group can review work of their group members only.&lt;br /&gt;
&lt;br /&gt;
For this, we will be creating a separate model for groups and will store all the group information into the corresponding database table. In order to follow the DRY principle, we will try to integrate the group code with the code written for teams. &lt;br /&gt;
&lt;br /&gt;
'''Non Anonymous Reviews'''&lt;br /&gt;
&lt;br /&gt;
In the case of non-anonymous reviews, students will be able to see the names of all the group members who have graded their individual work. In addition, students can also see whose work they are going to grade so that the non-anonymity is maintained from both sides.&lt;br /&gt;
&lt;br /&gt;
=Files to be Considered=&lt;br /&gt;
*reveiw_mapping_controller.rb&lt;br /&gt;
&lt;br /&gt;
*teams_controller.rb&lt;br /&gt;
&lt;br /&gt;
*team.rb&lt;br /&gt;
&lt;br /&gt;
*views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&lt;br /&gt;
*views/grades/_reviews.html.erb&lt;br /&gt;
&lt;br /&gt;
=ScreenShots of pages to be modified=&lt;br /&gt;
[[File:InstructorPage.jpg]]&lt;br /&gt;
&lt;br /&gt;
=Key People=&lt;br /&gt;
===Developers===&lt;br /&gt;
*Bhavesh Kasliwal&lt;br /&gt;
*Bhavya Bansal&lt;br /&gt;
*Chinmoy Baruah&lt;br /&gt;
*Rishabh Sinha&lt;br /&gt;
&lt;br /&gt;
===Mentor===&lt;br /&gt;
*Ed Gehringer&lt;/div&gt;</summary>
		<author><name>Cbaruah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1698._Instructor/student_control_of_anonymity_%2B_group-based_reviewing&amp;diff=105394</id>
		<title>CSC/ECE 517 Fall 2016/E1698. Instructor/student control of anonymity + group-based reviewing</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1698._Instructor/student_control_of_anonymity_%2B_group-based_reviewing&amp;diff=105394"/>
		<updated>2016-11-11T05:39:37Z</updated>

		<summary type="html">&lt;p&gt;Cbaruah: Screenshots&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
==Purpose==&lt;br /&gt;
'''Scenario:'''  An instructor using Expertiza wants to do an experiment comparing anonymous review with identified (non-anonymous) review.  And in general, there is quite a bit of research interest in the implications of anonymity in student interactions.  In this experiment, &lt;br /&gt;
&lt;br /&gt;
Approx ½ the class will conduct two rounds of formative reviews in small groups (4-5 students/group). The groups will stay the same for both rounds. The students in the groups should be able to see who they are reviewing and who is reviewing them.&lt;br /&gt;
For the non-anonymous groups, I'd like the students to be able to request group members, so I would want to be able to have some control, perhaps with an option to use random assignment to groups if they had no preference for group members.&lt;br /&gt;
Approx ½ the class will conduct two rounds of formative reviews anonymously (using the normal method we used this fall)&lt;br /&gt;
&lt;br /&gt;
'''What needs to be done''':  The Review Strategy tab of assignment creation needs have a new checkbox for anonymous reviews, which would be checked by default.  If it is checked, student views would be the same as at present.  If it is not checked, students would see their reviewers and grades in the same way as the instructor now sees them; thus, instead of seeing “Reviewer 1”, “Reviewer 2”, the student might see, “Anthony Adams”, “Bessie Brown”, etc.&lt;br /&gt;
&lt;br /&gt;
The code for displaying names obviously already exists, because it is used in the instructor views.  Implement the changes in an elegant way; for example, instead of checking multiple times in the view to determine whether the reviewer’s (or author’s) real name is to be displayed, try to send a message to a model class that will “do the right thing.”  This may involve creating separate model classes for anonymous and identified review, so that messages could be sent polymorphically.  It’s hard for me to know, without studying the code, whether this would simplify the code or clutter it, but please give some thought to what is the clearest and most robust way to code both anonymous &amp;amp; identified reviews, from the student’s and the instructor’s perspective.&lt;br /&gt;
&lt;br /&gt;
The other piece of the project is to enable review within groups, which means that every student in a group will review every other student in the group (but no students outside the group).  This can be configured on the Review Strategy tab when the review strategy is set to “Instructor-Selected”.  Under the “Set number of reviews done by each student” box, there could be another one, “Review done in groups of [ ] students”, where “[ ]” is a small text box.  There should also be an information button describing how group-based review works.&lt;br /&gt;
&lt;br /&gt;
==Scope==&lt;br /&gt;
The project provides instructor a functionality to make assignment reviews to be anonymous or non-anonymous. In addition, instructors have authority to create and assign review groups (students assigned same review group will review each others work) randomly.This scenario will be valid for individual assignments only. Also, anonymity is taken care from the perspective of reviewer as well as the reviewee. In case of non-anonymous groups, students may have the option to invite other students to join their group provided group size is not exceeding the maximum limit.&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is a peer review system which provides incremental learning from the class. This project has been developed together by faculty and students using [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create, edit and delete assignments, create new assignment topics, assign them to a particular class or selected students, have students work on teams and then review each other's assignments at the end. For the students, they can signup for topics, form teams, and submit their projects and assignments. &lt;br /&gt;
Students then review the work done by other students and give suggestions to improve. Teams after reviews are allotted scores and they can refer to the peer comments to further improve their work. It also supports submission of different file types as well as URLs for assignments.&lt;br /&gt;
&lt;br /&gt;
=Design=&lt;br /&gt;
&lt;br /&gt;
'''Assignment Creation:'''&lt;br /&gt;
&lt;br /&gt;
Providing a checkbox in &amp;quot;review strategy tab&amp;quot; to mark an assignment to have anonymous or non-anonymous reviews. By default, every assignment will be having anonymous reviews but an instructor can change it by unchecking the checkbox.&lt;br /&gt;
&lt;br /&gt;
'''Group Formation:'''&lt;br /&gt;
&lt;br /&gt;
The instructor has the authority to create and assign groups randomly. In this case, students can not drop the group they have been assigned and only an instructor can change their group if needed. &lt;br /&gt;
In case, a group has not been assigned by an instructor, students will have the functionality to invite other students to join their group. This functionality is analogous to the invite members to join their team. &lt;br /&gt;
Students in the same group can review work of their group members only.&lt;br /&gt;
&lt;br /&gt;
For this, we will be creating a separate model for groups and will store all the group information into the corresponding database table. In order to follow the DRY principle, we will try to integrate the group code with the code written for teams. &lt;br /&gt;
&lt;br /&gt;
'''Non Anonymous Reviews'''&lt;br /&gt;
&lt;br /&gt;
In the case of non-anonymous reviews, students will be able to see the names of all the group members who have graded their individual work. In addition, students can also see whose work they are going to grade so that the non-anonymity is maintained from both sides.&lt;br /&gt;
&lt;br /&gt;
=Files to be Considered=&lt;br /&gt;
*reveiw_mapping_controller.rb&lt;br /&gt;
&lt;br /&gt;
*teams_controller.rb&lt;br /&gt;
&lt;br /&gt;
*team.rb&lt;br /&gt;
&lt;br /&gt;
*views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&lt;br /&gt;
*views/grades/_reviews.html.erb&lt;br /&gt;
&lt;br /&gt;
=ScreenShots of pages to be modified=&lt;br /&gt;
[[File:/home/chinmoy/Pictures/InstructorPage]]&lt;br /&gt;
&lt;br /&gt;
=Key People=&lt;br /&gt;
===Developers===&lt;br /&gt;
*Bhavesh Kasliwal&lt;br /&gt;
*Bhavya Bansal&lt;br /&gt;
*Chinmoy Baruah&lt;br /&gt;
*Rishabh Sinha&lt;br /&gt;
&lt;br /&gt;
===Mentor===&lt;br /&gt;
*Ed Gehringer&lt;/div&gt;</summary>
		<author><name>Cbaruah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=104205</id>
		<title>User:Cbaruah</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=104205"/>
		<updated>2016-11-03T05:11:00Z</updated>

		<summary type="html">&lt;p&gt;Cbaruah: about join_team_request_controller&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= CSC/ECE 517 Fall 2016 E1655/OSS Improve e-mail notification =&lt;br /&gt;
&lt;br /&gt;
===Peer Review Information===&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are as follows:&lt;br /&gt;
&lt;br /&gt;
* Instructor Login: Username: instructor6 , password: password&lt;br /&gt;
* Student Login: Username: student5432 , password: password&lt;br /&gt;
&lt;br /&gt;
We would request you to create at least 3-4 users more to test all the functionality pertaining to this project.&lt;br /&gt;
This is because teams can be created and all the functionality with respect to email notifications can be tested.&lt;br /&gt;
&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open-source project based on Ruby on Rails framework. Expertiza allows the instructor to create and customize new or existing assignments and courses. It also allows the instructor to create a list of topics the students can sign up for, add users, add reviewers, add teams. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other student's submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
Mailers in Expertiza have their association with many other components like Users, Courses, Reviews, Participants and Invitations. The Mailer Helper in specific invokes methods which perform mailer related functions like sending email to newly created user, sending email to reviewer etc.&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
&lt;br /&gt;
This project in particular intends that the students collaborate and work on making enhancements to the code base by applying the concepts of Rails, RSpec, DRY code,Test driven development etc. This provides an opportunity for students to contribute to an open source project and learn further about software deployment etc.&lt;br /&gt;
&lt;br /&gt;
Currently, the mailer notifies the students on their account creation and to the reviewer when a submission of work is done. The scope of this project is to improve the present email notifications and also plug gaps in some implementations.&lt;br /&gt;
&lt;br /&gt;
===Current Implementation===&lt;br /&gt;
&lt;br /&gt;
1. 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. So, this issue is fixed by implementing the functionality of sending e-mail when account creation is done in this case. Now, e-mail is getting triggered to the concerned user whenever their account is created regardless of how their account is created. The listed files were manipulated for updating this functionality.&lt;br /&gt;
# controllers/import_file_controller.rb &lt;br /&gt;
# helpers/import_file_helper &lt;br /&gt;
&lt;br /&gt;
2. Evidently, if a file is revised after review, the system e-mails the reviewer saying to revise the review. The method to implement this was in place but wasn't working. This issue is fixed. Note that the e-mail is only triggered for a file submission and there is no mailer functionality in place for URL submission. Also, after the last round of review is completed, e-mail is no longer is getting triggered as desired. The listed files were updated or created to get the functionality working.&lt;br /&gt;
# controllers/submitted_content_controller&lt;br /&gt;
# helpers/mailer_helper&lt;br /&gt;
# app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
# app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
&lt;br /&gt;
3. The message body of the e-mail now includes the round of the review stage for which the review is provided along with a link to the site. Files changed are same as mentioned in second point.&lt;br /&gt;
&lt;br /&gt;
4.1 E-mail is triggered to an invitee whenever a participant sends out an invitation to another participant to join a team. The listed files were updated or created to get the functionality working.&lt;br /&gt;
# controllers/invitation_controller&lt;br /&gt;
# helpers/participants_helper&lt;br /&gt;
# app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
# app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
&lt;br /&gt;
4.2 Whenever the invitee accepts the invitation, the student who issued the invitation gets a mail stating that the invitee has accepted his/her invitation. The controller and helper class are same as mentioned in the 4th point. New views are created for this functionality&lt;br /&gt;
# app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
# app/views/mailer/partials/_team_accept_invite_plain.html.erb &lt;br /&gt;
&lt;br /&gt;
5. Mail is also getting triggered when a student responds to a teammate advertisement. The controller and helper class changed are same as mentioned in the 4th point. New views are created for this functionality.&lt;br /&gt;
# controllers/join_team_request_controller&lt;br /&gt;
# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
&lt;br /&gt;
===Files modified in current project===&lt;br /&gt;
====Classes====&lt;br /&gt;
* controllers/import_file_controller&lt;br /&gt;
* controllers/submitted_content_controller&lt;br /&gt;
* controllers/invitation_controller&lt;br /&gt;
* helpers/import_file_helper&lt;br /&gt;
* helpers/participants_helper&lt;br /&gt;
* helpers/mailer_helper&lt;br /&gt;
&lt;br /&gt;
====About import_file_controller====&lt;br /&gt;
&lt;br /&gt;
This controller derives from the Application Controller. It states the functionality of importing any kind of file like csv, xls, doc into the application. It defines the import function which takes the 'session' and 'params' as output and provides success message on successful import. It also provides the functionality of specifying the delimiter in the file which is being imported. The ImportFile method defined in the controller reads the file row by row based on the model concerned.&lt;br /&gt;
&lt;br /&gt;
====About submitted_content_controller====&lt;br /&gt;
&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD operations on submitting the file or hyperlink for assignment. It provides functionality to download, create folder and delete folder after submission. It provides the functionality for submitting links and submitting hyperlinks separately.&lt;br /&gt;
&lt;br /&gt;
    prepared_mail = MailerHelper.send_sync_message(User.find(participant.user_id), &amp;quot;A new submission is available&amp;quot;, &amp;quot;file_submission&amp;quot;, &amp;quot;file  submission&amp;quot;, Assignment.find(participant.parent_id).name)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
&lt;br /&gt;
==== About invitation_controller ====&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD as well as other basic operations when an invitation is sent by an user to any participant to join their team. It provides the functionality to send and accept invitations as well as to reject invitations and leave team.&lt;br /&gt;
&lt;br /&gt;
 # To send mail request to invitees to join team&lt;br /&gt;
 prepared_mail = MailerHelper.send_sync_message(user, &amp;quot;Invitation to join team&amp;quot;, &amp;quot;team_join_invite&amp;quot;, &amp;quot;invitation to join&amp;quot;, student.name)&lt;br /&gt;
 prepared_mail.deliver&lt;br /&gt;
&lt;br /&gt;
==== About join_team_request_controller ====&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD as well as other basic operations when an invitation is sent by an user to any participant to join their team. It provides the functionality to send and accept invitations as well as to reject invitations and leave team.&lt;br /&gt;
&lt;br /&gt;
 # To send mail for advertisment&lt;br /&gt;
 prepared_mail = MailerHelper.send_sync_message(user, &amp;quot;Response for Team Advertisement&amp;quot;, &amp;quot;response_to_advertisement&amp;quot;, &amp;quot;request to join team&amp;quot;, participant.name)&lt;br /&gt;
 prepared_mail.deliver&lt;br /&gt;
&lt;br /&gt;
==== About import_file_helper ====&lt;br /&gt;
This is a helper file for the '''import_file_controller''' class which stores the attributes from the controller class as well as creates new users when user are created by importing a CSV file.&lt;br /&gt;
&lt;br /&gt;
 def self.create_new_user(attributes, session)&lt;br /&gt;
    user = User.new(attributes)&lt;br /&gt;
    user.parent_id = (session[:user]).id&lt;br /&gt;
    user.timezonepref = User.find(user.parent_id).timezonepref&lt;br /&gt;
    user.save!&lt;br /&gt;
    prepared_mail = MailerHelper.send_mail_to_user(user, &amp;quot;Your Expertiza account and password have been created.&amp;quot;, &amp;quot;user_welcome&amp;quot;, user.password)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
    user&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==== About participants_helper ====&lt;br /&gt;
This is a helper file for the '''participants_controller''' class. It provides some of the basic functionalities that is required to create participants that are added to expertiza.&lt;br /&gt;
&lt;br /&gt;
   def self.create_new_user(attrs, session)&lt;br /&gt;
    user = User.new&lt;br /&gt;
    user.update_attributes attrs&lt;br /&gt;
    user.parent_id = (session[:user]).id&lt;br /&gt;
    user.save&lt;br /&gt;
    password = @user.reset_password&lt;br /&gt;
    prepared_mail = MailerHelper.send_mail_to_user(@user, &amp;quot;Your Expertiza account and password have been created.&amp;quot;, &amp;quot;user_welcome&amp;quot;, password)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
    flash[:success] = &amp;quot;A new password has been sent to new user's e-mail address.&amp;quot;&lt;br /&gt;
    user&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==== About mailer_helper ====&lt;br /&gt;
This helper file is for the '''mailer''' class. Its creates the structure of the mail body that is needed by the mailer class to send mails. It also holds all the attributes that are required to send a mail.&lt;br /&gt;
&lt;br /&gt;
 def self.send_sync_message(user, subject, partial_name, type, obj_name)&lt;br /&gt;
    Mailer.sync_message ({&lt;br /&gt;
      to: user.email,&lt;br /&gt;
      subject: subject,&lt;br /&gt;
      body: {&lt;br /&gt;
        type: type,&lt;br /&gt;
        obj_name: obj_name,&lt;br /&gt;
        user: user,&lt;br /&gt;
        first_name: ApplicationHelper.get_user_first_name(user),&lt;br /&gt;
        partial_name: partial_name&lt;br /&gt;
      }&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
=== Files created in current project ===&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_plain.html.erb&lt;br /&gt;
&lt;br /&gt;
===Testing Details===&lt;br /&gt;
&lt;br /&gt;
==== UI testing of participant  addition via CSV file and e-mail delivery check ====&lt;br /&gt;
* Login as instructor. Create a new course and assignment.&lt;br /&gt;
* Add new participant not having expertiza account to an assignment using a import file option.&lt;br /&gt;
* An e-mail is triggered for participant who do not have an expertiza account.&lt;br /&gt;
&lt;br /&gt;
==== UI testing of file submission ====&lt;br /&gt;
* Login as student. Go to assignment and open your work page.&lt;br /&gt;
* Upload a new file submission. If the submission is made in review stage, an e-mail is sent to a reviewer saying a new submission is available for a particular review round. Thus, the reviewer will be able to see the review round number.&lt;br /&gt;
&lt;br /&gt;
==== UI testing for sending/accepting invitation to join team ====&lt;br /&gt;
* Login as student. Go to assignment and open your team page.&lt;br /&gt;
* Search for a student with whom you want to team up and click on send invite. An e-mail is getting triggered to that student saying a new invite has been sent.&lt;br /&gt;
* When the other student accepts it, another e-mail is triggered back to the invitee saying the invite has been accepted.&lt;br /&gt;
&lt;br /&gt;
==== UI testing for response to an advertisement ====&lt;br /&gt;
* Login as student. Go to assignment page.&lt;br /&gt;
* Go to your team and create an advertisement for this assignment.&lt;br /&gt;
* Login as some other student who is the participant of the same assignment. Go to assignment page and open sign up sheet.&lt;br /&gt;
* For the topic assigned to the student who created advertisement, an icon will appear in advertisement tab. &lt;br /&gt;
* Clicking on this icon will redirect the student to page where student can request to join the team of students who created advertisement.&lt;br /&gt;
* On click of request button, an e-mail of this response to the advertisement will be sent to the students who created advertisement.&lt;br /&gt;
&lt;br /&gt;
===Scope for Future Improvement===&lt;br /&gt;
* An e-mail is being triggered only when a file is submitted for revision. But on the submission of a link, no such e-mail is sent. So, this is one of the areas which can be improved in the future.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
https://github.com/cbaruah/expertiza.git&lt;br /&gt;
&lt;br /&gt;
https://expertiza.ncsu.edu&lt;br /&gt;
&lt;br /&gt;
http://research.csc.ncsu.edu/efg/expertiza&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg YouTube channel]&lt;br /&gt;
&lt;br /&gt;
[https://hub.docker.com/r/winbobob/expertiza-fall2016/ How to install and run image file in docker]&lt;/div&gt;</summary>
		<author><name>Cbaruah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=104204</id>
		<title>User:Cbaruah</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=104204"/>
		<updated>2016-11-03T05:05:57Z</updated>

		<summary type="html">&lt;p&gt;Cbaruah: /* Current Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= CSC/ECE 517 Fall 2016 E1655/OSS Improve e-mail notification =&lt;br /&gt;
&lt;br /&gt;
===Peer Review Information===&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are as follows:&lt;br /&gt;
&lt;br /&gt;
* Instructor Login: Username: instructor6 , password: password&lt;br /&gt;
* Student Login: Username: student5432 , password: password&lt;br /&gt;
&lt;br /&gt;
We would request you to create at least 3-4 users more to test all the functionality pertaining to this project.&lt;br /&gt;
This is because teams can be created and all the functionality with respect to email notifications can be tested.&lt;br /&gt;
&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open-source project based on Ruby on Rails framework. Expertiza allows the instructor to create and customize new or existing assignments and courses. It also allows the instructor to create a list of topics the students can sign up for, add users, add reviewers, add teams. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other student's submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
Mailers in Expertiza have their association with many other components like Users, Courses, Reviews, Participants and Invitations. The Mailer Helper in specific invokes methods which perform mailer related functions like sending email to newly created user, sending email to reviewer etc.&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
&lt;br /&gt;
This project in particular intends that the students collaborate and work on making enhancements to the code base by applying the concepts of Rails, RSpec, DRY code,Test driven development etc. This provides an opportunity for students to contribute to an open source project and learn further about software deployment etc.&lt;br /&gt;
&lt;br /&gt;
Currently, the mailer notifies the students on their account creation and to the reviewer when a submission of work is done. The scope of this project is to improve the present email notifications and also plug gaps in some implementations.&lt;br /&gt;
&lt;br /&gt;
===Current Implementation===&lt;br /&gt;
&lt;br /&gt;
1. 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. So, this issue is fixed by implementing the functionality of sending e-mail when account creation is done in this case. Now, e-mail is getting triggered to the concerned user whenever their account is created regardless of how their account is created. The listed files were manipulated for updating this functionality.&lt;br /&gt;
# controllers/import_file_controller.rb &lt;br /&gt;
# helpers/import_file_helper &lt;br /&gt;
&lt;br /&gt;
2. Evidently, if a file is revised after review, the system e-mails the reviewer saying to revise the review. The method to implement this was in place but wasn't working. This issue is fixed. Note that the e-mail is only triggered for a file submission and there is no mailer functionality in place for URL submission. Also, after the last round of review is completed, e-mail is no longer is getting triggered as desired. The listed files were updated or created to get the functionality working.&lt;br /&gt;
# controllers/submitted_content_controller&lt;br /&gt;
# helpers/mailer_helper&lt;br /&gt;
# app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
# app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
&lt;br /&gt;
3. The message body of the e-mail now includes the round of the review stage for which the review is provided along with a link to the site. Files changed are same as mentioned in second point.&lt;br /&gt;
&lt;br /&gt;
4.1 E-mail is triggered to an invitee whenever a participant sends out an invitation to another participant to join a team. The listed files were updated or created to get the functionality working.&lt;br /&gt;
# controllers/invitation_controller&lt;br /&gt;
# helpers/participants_helper&lt;br /&gt;
# app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
# app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
&lt;br /&gt;
4.2 Whenever the invitee accepts the invitation, the student who issued the invitation gets a mail stating that the invitee has accepted his/her invitation. The controller and helper class are same as mentioned in the 4th point. New views are created for this functionality&lt;br /&gt;
# app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
# app/views/mailer/partials/_team_accept_invite_plain.html.erb &lt;br /&gt;
&lt;br /&gt;
5. Mail is also getting triggered when a student responds to a teammate advertisement. The controller and helper class changed are same as mentioned in the 4th point. New views are created for this functionality.&lt;br /&gt;
# controllers/join_team_request_controller&lt;br /&gt;
# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
&lt;br /&gt;
===Files modified in current project===&lt;br /&gt;
====Classes====&lt;br /&gt;
* controllers/import_file_controller&lt;br /&gt;
* controllers/submitted_content_controller&lt;br /&gt;
* controllers/invitation_controller&lt;br /&gt;
* helpers/import_file_helper&lt;br /&gt;
* helpers/participants_helper&lt;br /&gt;
* helpers/mailer_helper&lt;br /&gt;
&lt;br /&gt;
====About import_file_controller====&lt;br /&gt;
&lt;br /&gt;
This controller derives from the Application Controller. It states the functionality of importing any kind of file like csv, xls, doc into the application. It defines the import function which takes the 'session' and 'params' as output and provides success message on successful import. It also provides the functionality of specifying the delimiter in the file which is being imported. The ImportFile method defined in the controller reads the file row by row based on the model concerned.&lt;br /&gt;
&lt;br /&gt;
====About submitted_content_controller====&lt;br /&gt;
&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD operations on submitting the file or hyperlink for assignment. It provides functionality to download, create folder and delete folder after submission. It provides the functionality for submitting links and submitting hyperlinks separately.&lt;br /&gt;
&lt;br /&gt;
    prepared_mail = MailerHelper.send_sync_message(User.find(participant.user_id), &amp;quot;A new submission is available&amp;quot;, &amp;quot;file_submission&amp;quot;, &amp;quot;file  submission&amp;quot;, Assignment.find(participant.parent_id).name)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
&lt;br /&gt;
==== About invitation_controller ====&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD as well as other basic operations when an invitation is sent by an user to any participant to join their team. It provides the functionality to send and accept invitations as well as to reject invitations and leave team.&lt;br /&gt;
&lt;br /&gt;
 # To send mail request to invitees to join team&lt;br /&gt;
 prepared_mail = MailerHelper.send_sync_message(user, &amp;quot;Invitation to join team&amp;quot;, &amp;quot;team_join_invite&amp;quot;, &amp;quot;invitation to join&amp;quot;, student.name)&lt;br /&gt;
 prepared_mail.deliver&lt;br /&gt;
&lt;br /&gt;
==== About import_file_helper ====&lt;br /&gt;
This is a helper file for the '''import_file_controller''' class which stores the attributes from the controller class as well as creates new users when user are created by importing a CSV file.&lt;br /&gt;
&lt;br /&gt;
 def self.create_new_user(attributes, session)&lt;br /&gt;
    user = User.new(attributes)&lt;br /&gt;
    user.parent_id = (session[:user]).id&lt;br /&gt;
    user.timezonepref = User.find(user.parent_id).timezonepref&lt;br /&gt;
    user.save!&lt;br /&gt;
    prepared_mail = MailerHelper.send_mail_to_user(user, &amp;quot;Your Expertiza account and password have been created.&amp;quot;, &amp;quot;user_welcome&amp;quot;, user.password)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
    user&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==== About participants_helper ====&lt;br /&gt;
This is a helper file for the '''participants_controller''' class. It provides some of the basic functionalities that is required to create participants that are added to expertiza.&lt;br /&gt;
&lt;br /&gt;
   def self.create_new_user(attrs, session)&lt;br /&gt;
    user = User.new&lt;br /&gt;
    user.update_attributes attrs&lt;br /&gt;
    user.parent_id = (session[:user]).id&lt;br /&gt;
    user.save&lt;br /&gt;
    password = @user.reset_password&lt;br /&gt;
    prepared_mail = MailerHelper.send_mail_to_user(@user, &amp;quot;Your Expertiza account and password have been created.&amp;quot;, &amp;quot;user_welcome&amp;quot;, password)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
    flash[:success] = &amp;quot;A new password has been sent to new user's e-mail address.&amp;quot;&lt;br /&gt;
    user&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==== About mailer_helper ====&lt;br /&gt;
This helper file is for the '''mailer''' class. Its creates the structure of the mail body that is needed by the mailer class to send mails. It also holds all the attributes that are required to send a mail.&lt;br /&gt;
&lt;br /&gt;
 def self.send_sync_message(user, subject, partial_name, type, obj_name)&lt;br /&gt;
    Mailer.sync_message ({&lt;br /&gt;
      to: user.email,&lt;br /&gt;
      subject: subject,&lt;br /&gt;
      body: {&lt;br /&gt;
        type: type,&lt;br /&gt;
        obj_name: obj_name,&lt;br /&gt;
        user: user,&lt;br /&gt;
        first_name: ApplicationHelper.get_user_first_name(user),&lt;br /&gt;
        partial_name: partial_name&lt;br /&gt;
      }&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
=== Files created in current project ===&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_plain.html.erb&lt;br /&gt;
&lt;br /&gt;
===Testing Details===&lt;br /&gt;
&lt;br /&gt;
==== UI testing of participant  addition via CSV file and e-mail delivery check ====&lt;br /&gt;
* Login as instructor. Create a new course and assignment.&lt;br /&gt;
* Add new participant not having expertiza account to an assignment using a import file option.&lt;br /&gt;
* An e-mail is triggered for participant who do not have an expertiza account.&lt;br /&gt;
&lt;br /&gt;
==== UI testing of file submission ====&lt;br /&gt;
* Login as student. Go to assignment and open your work page.&lt;br /&gt;
* Upload a new file submission. If the submission is made in review stage, an e-mail is sent to a reviewer saying a new submission is available for a particular review round. Thus, the reviewer will be able to see the review round number.&lt;br /&gt;
&lt;br /&gt;
==== UI testing for sending/accepting invitation to join team ====&lt;br /&gt;
* Login as student. Go to assignment and open your team page.&lt;br /&gt;
* Search for a student with whom you want to team up and click on send invite. An e-mail is getting triggered to that student saying a new invite has been sent.&lt;br /&gt;
* When the other student accepts it, another e-mail is triggered back to the invitee saying the invite has been accepted.&lt;br /&gt;
&lt;br /&gt;
==== UI testing for response to an advertisement ====&lt;br /&gt;
* Login as student. Go to assignment page.&lt;br /&gt;
* Go to your team and create an advertisement for this assignment.&lt;br /&gt;
* Login as some other student who is the participant of the same assignment. Go to assignment page and open sign up sheet.&lt;br /&gt;
* For the topic assigned to the student who created advertisement, an icon will appear in advertisement tab. &lt;br /&gt;
* Clicking on this icon will redirect the student to page where student can request to join the team of students who created advertisement.&lt;br /&gt;
* On click of request button, an e-mail of this response to the advertisement will be sent to the students who created advertisement.&lt;br /&gt;
&lt;br /&gt;
===Scope for Future Improvement===&lt;br /&gt;
* An e-mail is being triggered only when a file is submitted for revision. But on the submission of a link, no such e-mail is sent. So, this is one of the areas which can be improved in the future.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
https://github.com/cbaruah/expertiza.git&lt;br /&gt;
&lt;br /&gt;
https://expertiza.ncsu.edu&lt;br /&gt;
&lt;br /&gt;
http://research.csc.ncsu.edu/efg/expertiza&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg YouTube channel]&lt;br /&gt;
&lt;br /&gt;
[https://hub.docker.com/r/winbobob/expertiza-fall2016/ How to install and run image file in docker]&lt;/div&gt;</summary>
		<author><name>Cbaruah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=104203</id>
		<title>User:Cbaruah</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=104203"/>
		<updated>2016-11-03T05:02:57Z</updated>

		<summary type="html">&lt;p&gt;Cbaruah: /* About invitation_controller */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= CSC/ECE 517 Fall 2016 E1655/OSS Improve e-mail notification =&lt;br /&gt;
&lt;br /&gt;
===Peer Review Information===&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are as follows:&lt;br /&gt;
&lt;br /&gt;
* Instructor Login: Username: instructor6 , password: password&lt;br /&gt;
* Student Login: Username: student5432 , password: password&lt;br /&gt;
&lt;br /&gt;
We would request you to create at least 3-4 users more to test all the functionality pertaining to this project.&lt;br /&gt;
This is because teams can be created and all the functionality with respect to email notifications can be tested.&lt;br /&gt;
&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open-source project based on Ruby on Rails framework. Expertiza allows the instructor to create and customize new or existing assignments and courses. It also allows the instructor to create a list of topics the students can sign up for, add users, add reviewers, add teams. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other student's submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
Mailers in Expertiza have their association with many other components like Users, Courses, Reviews, Participants and Invitations. The Mailer Helper in specific invokes methods which perform mailer related functions like sending email to newly created user, sending email to reviewer etc.&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
&lt;br /&gt;
This project in particular intends that the students collaborate and work on making enhancements to the code base by applying the concepts of Rails, RSpec, DRY code,Test driven development etc. This provides an opportunity for students to contribute to an open source project and learn further about software deployment etc.&lt;br /&gt;
&lt;br /&gt;
Currently, the mailer notifies the students on their account creation and to the reviewer when a submission of work is done. The scope of this project is to improve the present email notifications and also plug gaps in some implementations.&lt;br /&gt;
&lt;br /&gt;
===Current Implementation===&lt;br /&gt;
&lt;br /&gt;
1. 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. So, this issue is fixed by implementing the functionality of sending e-mail when account creation is done in this case. Now, e-mail is getting triggered to the concerned user whenever their account is created regardless of how their account is created. The listed files were manipulated for updating this functionality.&lt;br /&gt;
# controllers/import_file_controller.rb &lt;br /&gt;
# helpers/import_file_helper &lt;br /&gt;
&lt;br /&gt;
2. Evidently, if a file is revised after review, the system e-mails the reviewer saying to revise the review. The method to implement this was in place but wasn't working. This issue is fixed. Note that the e-mail is only triggered for a file submission and there is no mailer functionality in place for URL submission. Also, after the last round of review is completed, e-mail is no longer is getting triggered as desired. The listed files were updated or created to get the functionality working.&lt;br /&gt;
# controllers/submitted_content_controller&lt;br /&gt;
# helpers/mailer_helper&lt;br /&gt;
# app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
# app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
&lt;br /&gt;
3. The message body of the e-mail now includes the round of the review stage for which the review is provided along with a link to the site. Files changed are same as mentioned in second point.&lt;br /&gt;
&lt;br /&gt;
4.1 E-mail is triggered to an invitee whenever a participant sends out an invitation to another participant to join a team. The listed files were updated or created to get the functionality working.&lt;br /&gt;
# controllers/invitation_controller&lt;br /&gt;
# helpers/participants_helper&lt;br /&gt;
# app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
# app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
&lt;br /&gt;
4.2 Whenever the invitee accepts the invitation, the student who issued the invitation gets a mail stating that the invitee has accepted his/her invitation. The controller and helper class are same as mentioned in the 4th point. New views are created for this functionality&lt;br /&gt;
# app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
# app/views/mailer/partials/_team_accept_invite_plain.html.erb &lt;br /&gt;
&lt;br /&gt;
5. Mail is also getting triggered when a student responds to a teammate advertisement. The controller and helper class changed are same as mentioned in the 4th point. New views are created for this functionality.&lt;br /&gt;
# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
&lt;br /&gt;
===Files modified in current project===&lt;br /&gt;
====Classes====&lt;br /&gt;
* controllers/import_file_controller&lt;br /&gt;
* controllers/submitted_content_controller&lt;br /&gt;
* controllers/invitation_controller&lt;br /&gt;
* helpers/import_file_helper&lt;br /&gt;
* helpers/participants_helper&lt;br /&gt;
* helpers/mailer_helper&lt;br /&gt;
&lt;br /&gt;
====About import_file_controller====&lt;br /&gt;
&lt;br /&gt;
This controller derives from the Application Controller. It states the functionality of importing any kind of file like csv, xls, doc into the application. It defines the import function which takes the 'session' and 'params' as output and provides success message on successful import. It also provides the functionality of specifying the delimiter in the file which is being imported. The ImportFile method defined in the controller reads the file row by row based on the model concerned.&lt;br /&gt;
&lt;br /&gt;
====About submitted_content_controller====&lt;br /&gt;
&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD operations on submitting the file or hyperlink for assignment. It provides functionality to download, create folder and delete folder after submission. It provides the functionality for submitting links and submitting hyperlinks separately.&lt;br /&gt;
&lt;br /&gt;
    prepared_mail = MailerHelper.send_sync_message(User.find(participant.user_id), &amp;quot;A new submission is available&amp;quot;, &amp;quot;file_submission&amp;quot;, &amp;quot;file  submission&amp;quot;, Assignment.find(participant.parent_id).name)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
&lt;br /&gt;
==== About invitation_controller ====&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD as well as other basic operations when an invitation is sent by an user to any participant to join their team. It provides the functionality to send and accept invitations as well as to reject invitations and leave team.&lt;br /&gt;
&lt;br /&gt;
 # To send mail request to invitees to join team&lt;br /&gt;
 prepared_mail = MailerHelper.send_sync_message(user, &amp;quot;Invitation to join team&amp;quot;, &amp;quot;team_join_invite&amp;quot;, &amp;quot;invitation to join&amp;quot;, student.name)&lt;br /&gt;
 prepared_mail.deliver&lt;br /&gt;
&lt;br /&gt;
==== About import_file_helper ====&lt;br /&gt;
This is a helper file for the '''import_file_controller''' class which stores the attributes from the controller class as well as creates new users when user are created by importing a CSV file.&lt;br /&gt;
&lt;br /&gt;
 def self.create_new_user(attributes, session)&lt;br /&gt;
    user = User.new(attributes)&lt;br /&gt;
    user.parent_id = (session[:user]).id&lt;br /&gt;
    user.timezonepref = User.find(user.parent_id).timezonepref&lt;br /&gt;
    user.save!&lt;br /&gt;
    prepared_mail = MailerHelper.send_mail_to_user(user, &amp;quot;Your Expertiza account and password have been created.&amp;quot;, &amp;quot;user_welcome&amp;quot;, user.password)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
    user&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==== About participants_helper ====&lt;br /&gt;
This is a helper file for the '''participants_controller''' class. It provides some of the basic functionalities that is required to create participants that are added to expertiza.&lt;br /&gt;
&lt;br /&gt;
   def self.create_new_user(attrs, session)&lt;br /&gt;
    user = User.new&lt;br /&gt;
    user.update_attributes attrs&lt;br /&gt;
    user.parent_id = (session[:user]).id&lt;br /&gt;
    user.save&lt;br /&gt;
    password = @user.reset_password&lt;br /&gt;
    prepared_mail = MailerHelper.send_mail_to_user(@user, &amp;quot;Your Expertiza account and password have been created.&amp;quot;, &amp;quot;user_welcome&amp;quot;, password)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
    flash[:success] = &amp;quot;A new password has been sent to new user's e-mail address.&amp;quot;&lt;br /&gt;
    user&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==== About mailer_helper ====&lt;br /&gt;
This helper file is for the '''mailer''' class. Its creates the structure of the mail body that is needed by the mailer class to send mails. It also holds all the attributes that are required to send a mail.&lt;br /&gt;
&lt;br /&gt;
 def self.send_sync_message(user, subject, partial_name, type, obj_name)&lt;br /&gt;
    Mailer.sync_message ({&lt;br /&gt;
      to: user.email,&lt;br /&gt;
      subject: subject,&lt;br /&gt;
      body: {&lt;br /&gt;
        type: type,&lt;br /&gt;
        obj_name: obj_name,&lt;br /&gt;
        user: user,&lt;br /&gt;
        first_name: ApplicationHelper.get_user_first_name(user),&lt;br /&gt;
        partial_name: partial_name&lt;br /&gt;
      }&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
=== Files created in current project ===&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_plain.html.erb&lt;br /&gt;
&lt;br /&gt;
===Testing Details===&lt;br /&gt;
&lt;br /&gt;
==== UI testing of participant  addition via CSV file and e-mail delivery check ====&lt;br /&gt;
* Login as instructor. Create a new course and assignment.&lt;br /&gt;
* Add new participant not having expertiza account to an assignment using a import file option.&lt;br /&gt;
* An e-mail is triggered for participant who do not have an expertiza account.&lt;br /&gt;
&lt;br /&gt;
==== UI testing of file submission ====&lt;br /&gt;
* Login as student. Go to assignment and open your work page.&lt;br /&gt;
* Upload a new file submission. If the submission is made in review stage, an e-mail is sent to a reviewer saying a new submission is available for a particular review round. Thus, the reviewer will be able to see the review round number.&lt;br /&gt;
&lt;br /&gt;
==== UI testing for sending/accepting invitation to join team ====&lt;br /&gt;
* Login as student. Go to assignment and open your team page.&lt;br /&gt;
* Search for a student with whom you want to team up and click on send invite. An e-mail is getting triggered to that student saying a new invite has been sent.&lt;br /&gt;
* When the other student accepts it, another e-mail is triggered back to the invitee saying the invite has been accepted.&lt;br /&gt;
&lt;br /&gt;
==== UI testing for response to an advertisement ====&lt;br /&gt;
* Login as student. Go to assignment page.&lt;br /&gt;
* Go to your team and create an advertisement for this assignment.&lt;br /&gt;
* Login as some other student who is the participant of the same assignment. Go to assignment page and open sign up sheet.&lt;br /&gt;
* For the topic assigned to the student who created advertisement, an icon will appear in advertisement tab. &lt;br /&gt;
* Clicking on this icon will redirect the student to page where student can request to join the team of students who created advertisement.&lt;br /&gt;
* On click of request button, an e-mail of this response to the advertisement will be sent to the students who created advertisement.&lt;br /&gt;
&lt;br /&gt;
===Scope for Future Improvement===&lt;br /&gt;
* An e-mail is being triggered only when a file is submitted for revision. But on the submission of a link, no such e-mail is sent. So, this is one of the areas which can be improved in the future.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
https://github.com/cbaruah/expertiza.git&lt;br /&gt;
&lt;br /&gt;
https://expertiza.ncsu.edu&lt;br /&gt;
&lt;br /&gt;
http://research.csc.ncsu.edu/efg/expertiza&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg YouTube channel]&lt;br /&gt;
&lt;br /&gt;
[https://hub.docker.com/r/winbobob/expertiza-fall2016/ How to install and run image file in docker]&lt;/div&gt;</summary>
		<author><name>Cbaruah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=104202</id>
		<title>User:Cbaruah</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=104202"/>
		<updated>2016-11-03T05:02:36Z</updated>

		<summary type="html">&lt;p&gt;Cbaruah: /* About submitted_content_controller */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= CSC/ECE 517 Fall 2016 E1655/OSS Improve e-mail notification =&lt;br /&gt;
&lt;br /&gt;
===Peer Review Information===&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are as follows:&lt;br /&gt;
&lt;br /&gt;
* Instructor Login: Username: instructor6 , password: password&lt;br /&gt;
* Student Login: Username: student5432 , password: password&lt;br /&gt;
&lt;br /&gt;
We would request you to create at least 3-4 users more to test all the functionality pertaining to this project.&lt;br /&gt;
This is because teams can be created and all the functionality with respect to email notifications can be tested.&lt;br /&gt;
&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open-source project based on Ruby on Rails framework. Expertiza allows the instructor to create and customize new or existing assignments and courses. It also allows the instructor to create a list of topics the students can sign up for, add users, add reviewers, add teams. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other student's submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
Mailers in Expertiza have their association with many other components like Users, Courses, Reviews, Participants and Invitations. The Mailer Helper in specific invokes methods which perform mailer related functions like sending email to newly created user, sending email to reviewer etc.&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
&lt;br /&gt;
This project in particular intends that the students collaborate and work on making enhancements to the code base by applying the concepts of Rails, RSpec, DRY code,Test driven development etc. This provides an opportunity for students to contribute to an open source project and learn further about software deployment etc.&lt;br /&gt;
&lt;br /&gt;
Currently, the mailer notifies the students on their account creation and to the reviewer when a submission of work is done. The scope of this project is to improve the present email notifications and also plug gaps in some implementations.&lt;br /&gt;
&lt;br /&gt;
===Current Implementation===&lt;br /&gt;
&lt;br /&gt;
1. 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. So, this issue is fixed by implementing the functionality of sending e-mail when account creation is done in this case. Now, e-mail is getting triggered to the concerned user whenever their account is created regardless of how their account is created. The listed files were manipulated for updating this functionality.&lt;br /&gt;
# controllers/import_file_controller.rb &lt;br /&gt;
# helpers/import_file_helper &lt;br /&gt;
&lt;br /&gt;
2. Evidently, if a file is revised after review, the system e-mails the reviewer saying to revise the review. The method to implement this was in place but wasn't working. This issue is fixed. Note that the e-mail is only triggered for a file submission and there is no mailer functionality in place for URL submission. Also, after the last round of review is completed, e-mail is no longer is getting triggered as desired. The listed files were updated or created to get the functionality working.&lt;br /&gt;
# controllers/submitted_content_controller&lt;br /&gt;
# helpers/mailer_helper&lt;br /&gt;
# app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
# app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
&lt;br /&gt;
3. The message body of the e-mail now includes the round of the review stage for which the review is provided along with a link to the site. Files changed are same as mentioned in second point.&lt;br /&gt;
&lt;br /&gt;
4.1 E-mail is triggered to an invitee whenever a participant sends out an invitation to another participant to join a team. The listed files were updated or created to get the functionality working.&lt;br /&gt;
# controllers/invitation_controller&lt;br /&gt;
# helpers/participants_helper&lt;br /&gt;
# app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
# app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
&lt;br /&gt;
4.2 Whenever the invitee accepts the invitation, the student who issued the invitation gets a mail stating that the invitee has accepted his/her invitation. The controller and helper class are same as mentioned in the 4th point. New views are created for this functionality&lt;br /&gt;
# app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
# app/views/mailer/partials/_team_accept_invite_plain.html.erb &lt;br /&gt;
&lt;br /&gt;
5. Mail is also getting triggered when a student responds to a teammate advertisement. The controller and helper class changed are same as mentioned in the 4th point. New views are created for this functionality.&lt;br /&gt;
# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
&lt;br /&gt;
===Files modified in current project===&lt;br /&gt;
====Classes====&lt;br /&gt;
* controllers/import_file_controller&lt;br /&gt;
* controllers/submitted_content_controller&lt;br /&gt;
* controllers/invitation_controller&lt;br /&gt;
* helpers/import_file_helper&lt;br /&gt;
* helpers/participants_helper&lt;br /&gt;
* helpers/mailer_helper&lt;br /&gt;
&lt;br /&gt;
====About import_file_controller====&lt;br /&gt;
&lt;br /&gt;
This controller derives from the Application Controller. It states the functionality of importing any kind of file like csv, xls, doc into the application. It defines the import function which takes the 'session' and 'params' as output and provides success message on successful import. It also provides the functionality of specifying the delimiter in the file which is being imported. The ImportFile method defined in the controller reads the file row by row based on the model concerned.&lt;br /&gt;
&lt;br /&gt;
====About submitted_content_controller====&lt;br /&gt;
&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD operations on submitting the file or hyperlink for assignment. It provides functionality to download, create folder and delete folder after submission. It provides the functionality for submitting links and submitting hyperlinks separately.&lt;br /&gt;
&lt;br /&gt;
    prepared_mail = MailerHelper.send_sync_message(User.find(participant.user_id), &amp;quot;A new submission is available&amp;quot;, &amp;quot;file_submission&amp;quot;, &amp;quot;file  submission&amp;quot;, Assignment.find(participant.parent_id).name)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
&lt;br /&gt;
==== About invitation_controller ====&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD as well as other basic operations when an invitation is sent by an user to any participant to join their team. It provides the functionality to send and accept invitations as well as to reject invitations and leave team.&lt;br /&gt;
&lt;br /&gt;
 # To send mail request to invitees to join team&lt;br /&gt;
 prepared_mail = MailerHelper.send_mail_for_invitation(user, &amp;quot;Invitation to join team&amp;quot;, &amp;quot;team_join_invite&amp;quot;, &amp;quot;invitation to join&amp;quot;, student.name)&lt;br /&gt;
 prepared_mail.deliver&lt;br /&gt;
&lt;br /&gt;
==== About import_file_helper ====&lt;br /&gt;
This is a helper file for the '''import_file_controller''' class which stores the attributes from the controller class as well as creates new users when user are created by importing a CSV file.&lt;br /&gt;
&lt;br /&gt;
 def self.create_new_user(attributes, session)&lt;br /&gt;
    user = User.new(attributes)&lt;br /&gt;
    user.parent_id = (session[:user]).id&lt;br /&gt;
    user.timezonepref = User.find(user.parent_id).timezonepref&lt;br /&gt;
    user.save!&lt;br /&gt;
    prepared_mail = MailerHelper.send_mail_to_user(user, &amp;quot;Your Expertiza account and password have been created.&amp;quot;, &amp;quot;user_welcome&amp;quot;, user.password)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
    user&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==== About participants_helper ====&lt;br /&gt;
This is a helper file for the '''participants_controller''' class. It provides some of the basic functionalities that is required to create participants that are added to expertiza.&lt;br /&gt;
&lt;br /&gt;
   def self.create_new_user(attrs, session)&lt;br /&gt;
    user = User.new&lt;br /&gt;
    user.update_attributes attrs&lt;br /&gt;
    user.parent_id = (session[:user]).id&lt;br /&gt;
    user.save&lt;br /&gt;
    password = @user.reset_password&lt;br /&gt;
    prepared_mail = MailerHelper.send_mail_to_user(@user, &amp;quot;Your Expertiza account and password have been created.&amp;quot;, &amp;quot;user_welcome&amp;quot;, password)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
    flash[:success] = &amp;quot;A new password has been sent to new user's e-mail address.&amp;quot;&lt;br /&gt;
    user&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==== About mailer_helper ====&lt;br /&gt;
This helper file is for the '''mailer''' class. Its creates the structure of the mail body that is needed by the mailer class to send mails. It also holds all the attributes that are required to send a mail.&lt;br /&gt;
&lt;br /&gt;
 def self.send_sync_message(user, subject, partial_name, type, obj_name)&lt;br /&gt;
    Mailer.sync_message ({&lt;br /&gt;
      to: user.email,&lt;br /&gt;
      subject: subject,&lt;br /&gt;
      body: {&lt;br /&gt;
        type: type,&lt;br /&gt;
        obj_name: obj_name,&lt;br /&gt;
        user: user,&lt;br /&gt;
        first_name: ApplicationHelper.get_user_first_name(user),&lt;br /&gt;
        partial_name: partial_name&lt;br /&gt;
      }&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
=== Files created in current project ===&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_plain.html.erb&lt;br /&gt;
&lt;br /&gt;
===Testing Details===&lt;br /&gt;
&lt;br /&gt;
==== UI testing of participant  addition via CSV file and e-mail delivery check ====&lt;br /&gt;
* Login as instructor. Create a new course and assignment.&lt;br /&gt;
* Add new participant not having expertiza account to an assignment using a import file option.&lt;br /&gt;
* An e-mail is triggered for participant who do not have an expertiza account.&lt;br /&gt;
&lt;br /&gt;
==== UI testing of file submission ====&lt;br /&gt;
* Login as student. Go to assignment and open your work page.&lt;br /&gt;
* Upload a new file submission. If the submission is made in review stage, an e-mail is sent to a reviewer saying a new submission is available for a particular review round. Thus, the reviewer will be able to see the review round number.&lt;br /&gt;
&lt;br /&gt;
==== UI testing for sending/accepting invitation to join team ====&lt;br /&gt;
* Login as student. Go to assignment and open your team page.&lt;br /&gt;
* Search for a student with whom you want to team up and click on send invite. An e-mail is getting triggered to that student saying a new invite has been sent.&lt;br /&gt;
* When the other student accepts it, another e-mail is triggered back to the invitee saying the invite has been accepted.&lt;br /&gt;
&lt;br /&gt;
==== UI testing for response to an advertisement ====&lt;br /&gt;
* Login as student. Go to assignment page.&lt;br /&gt;
* Go to your team and create an advertisement for this assignment.&lt;br /&gt;
* Login as some other student who is the participant of the same assignment. Go to assignment page and open sign up sheet.&lt;br /&gt;
* For the topic assigned to the student who created advertisement, an icon will appear in advertisement tab. &lt;br /&gt;
* Clicking on this icon will redirect the student to page where student can request to join the team of students who created advertisement.&lt;br /&gt;
* On click of request button, an e-mail of this response to the advertisement will be sent to the students who created advertisement.&lt;br /&gt;
&lt;br /&gt;
===Scope for Future Improvement===&lt;br /&gt;
* An e-mail is being triggered only when a file is submitted for revision. But on the submission of a link, no such e-mail is sent. So, this is one of the areas which can be improved in the future.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
https://github.com/cbaruah/expertiza.git&lt;br /&gt;
&lt;br /&gt;
https://expertiza.ncsu.edu&lt;br /&gt;
&lt;br /&gt;
http://research.csc.ncsu.edu/efg/expertiza&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg YouTube channel]&lt;br /&gt;
&lt;br /&gt;
[https://hub.docker.com/r/winbobob/expertiza-fall2016/ How to install and run image file in docker]&lt;/div&gt;</summary>
		<author><name>Cbaruah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=104201</id>
		<title>User:Cbaruah</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=104201"/>
		<updated>2016-11-03T05:01:48Z</updated>

		<summary type="html">&lt;p&gt;Cbaruah: /* About mailer_helper */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= CSC/ECE 517 Fall 2016 E1655/OSS Improve e-mail notification =&lt;br /&gt;
&lt;br /&gt;
===Peer Review Information===&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are as follows:&lt;br /&gt;
&lt;br /&gt;
* Instructor Login: Username: instructor6 , password: password&lt;br /&gt;
* Student Login: Username: student5432 , password: password&lt;br /&gt;
&lt;br /&gt;
We would request you to create at least 3-4 users more to test all the functionality pertaining to this project.&lt;br /&gt;
This is because teams can be created and all the functionality with respect to email notifications can be tested.&lt;br /&gt;
&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open-source project based on Ruby on Rails framework. Expertiza allows the instructor to create and customize new or existing assignments and courses. It also allows the instructor to create a list of topics the students can sign up for, add users, add reviewers, add teams. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other student's submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
Mailers in Expertiza have their association with many other components like Users, Courses, Reviews, Participants and Invitations. The Mailer Helper in specific invokes methods which perform mailer related functions like sending email to newly created user, sending email to reviewer etc.&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
&lt;br /&gt;
This project in particular intends that the students collaborate and work on making enhancements to the code base by applying the concepts of Rails, RSpec, DRY code,Test driven development etc. This provides an opportunity for students to contribute to an open source project and learn further about software deployment etc.&lt;br /&gt;
&lt;br /&gt;
Currently, the mailer notifies the students on their account creation and to the reviewer when a submission of work is done. The scope of this project is to improve the present email notifications and also plug gaps in some implementations.&lt;br /&gt;
&lt;br /&gt;
===Current Implementation===&lt;br /&gt;
&lt;br /&gt;
1. 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. So, this issue is fixed by implementing the functionality of sending e-mail when account creation is done in this case. Now, e-mail is getting triggered to the concerned user whenever their account is created regardless of how their account is created. The listed files were manipulated for updating this functionality.&lt;br /&gt;
# controllers/import_file_controller.rb &lt;br /&gt;
# helpers/import_file_helper &lt;br /&gt;
&lt;br /&gt;
2. Evidently, if a file is revised after review, the system e-mails the reviewer saying to revise the review. The method to implement this was in place but wasn't working. This issue is fixed. Note that the e-mail is only triggered for a file submission and there is no mailer functionality in place for URL submission. Also, after the last round of review is completed, e-mail is no longer is getting triggered as desired. The listed files were updated or created to get the functionality working.&lt;br /&gt;
# controllers/submitted_content_controller&lt;br /&gt;
# helpers/mailer_helper&lt;br /&gt;
# app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
# app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
&lt;br /&gt;
3. The message body of the e-mail now includes the round of the review stage for which the review is provided along with a link to the site. Files changed are same as mentioned in second point.&lt;br /&gt;
&lt;br /&gt;
4.1 E-mail is triggered to an invitee whenever a participant sends out an invitation to another participant to join a team. The listed files were updated or created to get the functionality working.&lt;br /&gt;
# controllers/invitation_controller&lt;br /&gt;
# helpers/participants_helper&lt;br /&gt;
# app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
# app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
&lt;br /&gt;
4.2 Whenever the invitee accepts the invitation, the student who issued the invitation gets a mail stating that the invitee has accepted his/her invitation. The controller and helper class are same as mentioned in the 4th point. New views are created for this functionality&lt;br /&gt;
# app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
# app/views/mailer/partials/_team_accept_invite_plain.html.erb &lt;br /&gt;
&lt;br /&gt;
5. Mail is also getting triggered when a student responds to a teammate advertisement. The controller and helper class changed are same as mentioned in the 4th point. New views are created for this functionality.&lt;br /&gt;
# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
&lt;br /&gt;
===Files modified in current project===&lt;br /&gt;
====Classes====&lt;br /&gt;
* controllers/import_file_controller&lt;br /&gt;
* controllers/submitted_content_controller&lt;br /&gt;
* controllers/invitation_controller&lt;br /&gt;
* helpers/import_file_helper&lt;br /&gt;
* helpers/participants_helper&lt;br /&gt;
* helpers/mailer_helper&lt;br /&gt;
&lt;br /&gt;
====About import_file_controller====&lt;br /&gt;
&lt;br /&gt;
This controller derives from the Application Controller. It states the functionality of importing any kind of file like csv, xls, doc into the application. It defines the import function which takes the 'session' and 'params' as output and provides success message on successful import. It also provides the functionality of specifying the delimiter in the file which is being imported. The ImportFile method defined in the controller reads the file row by row based on the model concerned.&lt;br /&gt;
&lt;br /&gt;
====About submitted_content_controller====&lt;br /&gt;
&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD operations on submitting the file or hyperlink for assignment. It provides functionality to download, create folder and delete folder after submission. It provides the functionality for submitting links and submitting hyperlinks separately.&lt;br /&gt;
&lt;br /&gt;
    prepared_mail = MailerHelper.send_mail_to_reviewer(User.find(participant.user_id), &amp;quot;A new submission is available&amp;quot;, &amp;quot;file_submission&amp;quot;, &amp;quot;file  submission&amp;quot;, Assignment.find(participant.parent_id).name)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
&lt;br /&gt;
==== About invitation_controller ====&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD as well as other basic operations when an invitation is sent by an user to any participant to join their team. It provides the functionality to send and accept invitations as well as to reject invitations and leave team.&lt;br /&gt;
&lt;br /&gt;
 # To send mail request to invitees to join team&lt;br /&gt;
 prepared_mail = MailerHelper.send_mail_for_invitation(user, &amp;quot;Invitation to join team&amp;quot;, &amp;quot;team_join_invite&amp;quot;, &amp;quot;invitation to join&amp;quot;, student.name)&lt;br /&gt;
 prepared_mail.deliver&lt;br /&gt;
&lt;br /&gt;
==== About import_file_helper ====&lt;br /&gt;
This is a helper file for the '''import_file_controller''' class which stores the attributes from the controller class as well as creates new users when user are created by importing a CSV file.&lt;br /&gt;
&lt;br /&gt;
 def self.create_new_user(attributes, session)&lt;br /&gt;
    user = User.new(attributes)&lt;br /&gt;
    user.parent_id = (session[:user]).id&lt;br /&gt;
    user.timezonepref = User.find(user.parent_id).timezonepref&lt;br /&gt;
    user.save!&lt;br /&gt;
    prepared_mail = MailerHelper.send_mail_to_user(user, &amp;quot;Your Expertiza account and password have been created.&amp;quot;, &amp;quot;user_welcome&amp;quot;, user.password)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
    user&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==== About participants_helper ====&lt;br /&gt;
This is a helper file for the '''participants_controller''' class. It provides some of the basic functionalities that is required to create participants that are added to expertiza.&lt;br /&gt;
&lt;br /&gt;
   def self.create_new_user(attrs, session)&lt;br /&gt;
    user = User.new&lt;br /&gt;
    user.update_attributes attrs&lt;br /&gt;
    user.parent_id = (session[:user]).id&lt;br /&gt;
    user.save&lt;br /&gt;
    password = @user.reset_password&lt;br /&gt;
    prepared_mail = MailerHelper.send_mail_to_user(@user, &amp;quot;Your Expertiza account and password have been created.&amp;quot;, &amp;quot;user_welcome&amp;quot;, password)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
    flash[:success] = &amp;quot;A new password has been sent to new user's e-mail address.&amp;quot;&lt;br /&gt;
    user&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==== About mailer_helper ====&lt;br /&gt;
This helper file is for the '''mailer''' class. Its creates the structure of the mail body that is needed by the mailer class to send mails. It also holds all the attributes that are required to send a mail.&lt;br /&gt;
&lt;br /&gt;
 def self.send_sync_message(user, subject, partial_name, type, obj_name)&lt;br /&gt;
    Mailer.sync_message ({&lt;br /&gt;
      to: user.email,&lt;br /&gt;
      subject: subject,&lt;br /&gt;
      body: {&lt;br /&gt;
        type: type,&lt;br /&gt;
        obj_name: obj_name,&lt;br /&gt;
        user: user,&lt;br /&gt;
        first_name: ApplicationHelper.get_user_first_name(user),&lt;br /&gt;
        partial_name: partial_name&lt;br /&gt;
      }&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
=== Files created in current project ===&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_plain.html.erb&lt;br /&gt;
&lt;br /&gt;
===Testing Details===&lt;br /&gt;
&lt;br /&gt;
==== UI testing of participant  addition via CSV file and e-mail delivery check ====&lt;br /&gt;
* Login as instructor. Create a new course and assignment.&lt;br /&gt;
* Add new participant not having expertiza account to an assignment using a import file option.&lt;br /&gt;
* An e-mail is triggered for participant who do not have an expertiza account.&lt;br /&gt;
&lt;br /&gt;
==== UI testing of file submission ====&lt;br /&gt;
* Login as student. Go to assignment and open your work page.&lt;br /&gt;
* Upload a new file submission. If the submission is made in review stage, an e-mail is sent to a reviewer saying a new submission is available for a particular review round. Thus, the reviewer will be able to see the review round number.&lt;br /&gt;
&lt;br /&gt;
==== UI testing for sending/accepting invitation to join team ====&lt;br /&gt;
* Login as student. Go to assignment and open your team page.&lt;br /&gt;
* Search for a student with whom you want to team up and click on send invite. An e-mail is getting triggered to that student saying a new invite has been sent.&lt;br /&gt;
* When the other student accepts it, another e-mail is triggered back to the invitee saying the invite has been accepted.&lt;br /&gt;
&lt;br /&gt;
==== UI testing for response to an advertisement ====&lt;br /&gt;
* Login as student. Go to assignment page.&lt;br /&gt;
* Go to your team and create an advertisement for this assignment.&lt;br /&gt;
* Login as some other student who is the participant of the same assignment. Go to assignment page and open sign up sheet.&lt;br /&gt;
* For the topic assigned to the student who created advertisement, an icon will appear in advertisement tab. &lt;br /&gt;
* Clicking on this icon will redirect the student to page where student can request to join the team of students who created advertisement.&lt;br /&gt;
* On click of request button, an e-mail of this response to the advertisement will be sent to the students who created advertisement.&lt;br /&gt;
&lt;br /&gt;
===Scope for Future Improvement===&lt;br /&gt;
* An e-mail is being triggered only when a file is submitted for revision. But on the submission of a link, no such e-mail is sent. So, this is one of the areas which can be improved in the future.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
https://github.com/cbaruah/expertiza.git&lt;br /&gt;
&lt;br /&gt;
https://expertiza.ncsu.edu&lt;br /&gt;
&lt;br /&gt;
http://research.csc.ncsu.edu/efg/expertiza&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg YouTube channel]&lt;br /&gt;
&lt;br /&gt;
[https://hub.docker.com/r/winbobob/expertiza-fall2016/ How to install and run image file in docker]&lt;/div&gt;</summary>
		<author><name>Cbaruah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=103421</id>
		<title>User:Cbaruah</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=103421"/>
		<updated>2016-10-29T00:22:36Z</updated>

		<summary type="html">&lt;p&gt;Cbaruah: /* About import_file_controller */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= CSC/ECE 517 Fall 2016 E1655/OSS Improve e-mail notification =&lt;br /&gt;
&lt;br /&gt;
===Peer Review Information===&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are as follows:&lt;br /&gt;
&lt;br /&gt;
* Instructor Login: Username: instructor6 , password: password&lt;br /&gt;
* Student Login: Username: student5432 , password: password&lt;br /&gt;
* Student Login: Username: testing11, password: password&lt;br /&gt;
* Student Login: Username: testing12, password: password&lt;br /&gt;
&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other student's submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
Mailers in Expertiza have their association with many other components like Users, Courses, Reviews, Participants and Invitations. The Mailer Helper in specific invokes methods which perform mailer related functions like sending email to newly created user, sending email to reviewer etc.&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
&lt;br /&gt;
This project in particular intends that the students collaborate and work on making enhancements to the code base by applying the concepts of Rails, RSpec, DRY code,Test driven development etc. This provides an opportunity for students to contribute to an open source project and learn further about software deployment etc.&lt;br /&gt;
&lt;br /&gt;
Currently, the mailer notifies the students on their account creation and to the reviewer when a submission of work is done. The scope of this project is to improve the present email notifications and also plug gaps in some implementations.&lt;br /&gt;
&lt;br /&gt;
===Current Implementation===&lt;br /&gt;
&lt;br /&gt;
1. 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. So, this issue is fixed by implementing the functionality of sending e-mail when account creation is done in this case. Now, e-mail is getting triggered to the concerned user whenever their account is created regardless of how their account is created. The listed files were manipulated for updating this functionality.&lt;br /&gt;
# controllers/import_file_controller.rb &lt;br /&gt;
# helpers/import_file_helper &lt;br /&gt;
&lt;br /&gt;
2. Evidently, if a file is revised after review, the system e-mails the reviewer saying to revise the review. The method to implement this was in place but wasn't working. This issue is fixed. Note that the e-mail is only triggered for a file submission and there is no mailer functionality in place for URL submission. Also, after the last round of review is completed, e-mail is no longer is getting triggered as desired. The listed files were updated or created to get the functionality working.&lt;br /&gt;
# controllers/submitted_content_controller&lt;br /&gt;
# helpers/mailer_helper&lt;br /&gt;
# app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
# app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
&lt;br /&gt;
3. The message body of the e-mail now includes the round of the review stage for which the review is provided along with a link to the site. Files changed are same as mentioned in second point.&lt;br /&gt;
&lt;br /&gt;
4.1 E-mail is triggered to an invitee whenever a participant sends out an invitation to another participant to join a team. The listed files were updated or created to get the functionality working.&lt;br /&gt;
# controllers/invitation_controller&lt;br /&gt;
# helpers/participants_helper&lt;br /&gt;
# app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
# app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
&lt;br /&gt;
4.2 Whenever the invitee accepts the invitation, the student who issued the invitation gets a mail stating that the invitee has accepted his/her invitation. The controller and helper class are same as mentioned in the 4th point. New views are created for this functionality&lt;br /&gt;
# app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
# app/views/mailer/partials/_team_accept_invite_plain.html.erb &lt;br /&gt;
&lt;br /&gt;
5. Mail is also getting triggered when a student responds to a teammate advertisement. The controller and helper class changed are same as mentioned in the 4th point. New views are created for this functionality.&lt;br /&gt;
# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
&lt;br /&gt;
===Files modified in current project===&lt;br /&gt;
====Classes====&lt;br /&gt;
* controllers/import_file_controller&lt;br /&gt;
* controllers/submitted_content_controller&lt;br /&gt;
* controllers/invitation_controller&lt;br /&gt;
* helpers/import_file_helper&lt;br /&gt;
* helpers/participants_helper&lt;br /&gt;
* helpers/mailer_helper&lt;br /&gt;
&lt;br /&gt;
====About import_file_controller====&lt;br /&gt;
&lt;br /&gt;
This controller derives from the Application Controller. It states the functionality of importing any kind of file like csv, xls, doc into the application. It defines the import function which takes the 'session' and 'params' as output and provides success message on successful import. It also provides the functionality of specifying the delimiter in the file which is being imported. The ImportFile method defined in the controller reads the file row by row based on the model concerned.&lt;br /&gt;
&lt;br /&gt;
====About submitted_content_controller====&lt;br /&gt;
&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD operations on submitting the file or hyperlink for assignment. It provides functionality to download, create folder and delete folder after submission. It provides the functionality for submitting links and submitting hyperlinks separately.&lt;br /&gt;
&lt;br /&gt;
    prepared_mail = MailerHelper.send_mail_to_reviewer(User.find(participant.user_id), &amp;quot;A new submission is available&amp;quot;, &amp;quot;file_submission&amp;quot;, &amp;quot;file  submission&amp;quot;, Assignment.find(participant.parent_id).name)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
&lt;br /&gt;
==== About invitation_controller ====&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD as well as other basic operations when an invitation is sent by an user to any participant to join their team. It provides the functionality to send and accept invitations as well as to reject invitations and leave team.&lt;br /&gt;
&lt;br /&gt;
 # To send mail request to invitees to join team&lt;br /&gt;
 prepared_mail = MailerHelper.send_mail_for_invitation(user, &amp;quot;Invitation to join team&amp;quot;, &amp;quot;team_join_invite&amp;quot;, &amp;quot;invitation to join&amp;quot;, student.name)&lt;br /&gt;
 prepared_mail.deliver&lt;br /&gt;
&lt;br /&gt;
==== About import_file_helper ====&lt;br /&gt;
This is a helper file for the '''import_file_controller''' class which stores the attributes from the controller class as well as creates new users when user are created by importing a CSV file.&lt;br /&gt;
&lt;br /&gt;
 def self.create_new_user(attributes, session)&lt;br /&gt;
    user = User.new(attributes)&lt;br /&gt;
    user.parent_id = (session[:user]).id&lt;br /&gt;
    user.timezonepref = User.find(user.parent_id).timezonepref&lt;br /&gt;
    user.save!&lt;br /&gt;
    prepared_mail = MailerHelper.send_mail_to_user(user, &amp;quot;Your Expertiza account and password have been created.&amp;quot;, &amp;quot;user_welcome&amp;quot;, user.password)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
    user&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==== About participants_helper ====&lt;br /&gt;
This is a helper file for the '''participants_controller''' class. It provides some of the basic functionalities that is required to create participants that are added to expertiza.&lt;br /&gt;
&lt;br /&gt;
   def self.create_new_user(attrs, session)&lt;br /&gt;
    user = User.new&lt;br /&gt;
    user.update_attributes attrs&lt;br /&gt;
    user.parent_id = (session[:user]).id&lt;br /&gt;
    user.save&lt;br /&gt;
    password = @user.reset_password&lt;br /&gt;
    prepared_mail = MailerHelper.send_mail_to_user(@user, &amp;quot;Your Expertiza account and password have been created.&amp;quot;, &amp;quot;user_welcome&amp;quot;, password)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
    flash[:success] = &amp;quot;A new password has been sent to new user's e-mail address.&amp;quot;&lt;br /&gt;
    user&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==== About mailer_helper ====&lt;br /&gt;
This helper file is for the '''mailer''' class. Its creates the structure of the mail body that is needed by the mailer class to send mails. It also holds all the attributes that are required to send a mail.&lt;br /&gt;
&lt;br /&gt;
 def self.send_mail_to_reviewer(user, subject, partial_name, type, obj_name)&lt;br /&gt;
    Mailer.sync_message ({&lt;br /&gt;
      to: user.email,&lt;br /&gt;
      subject: subject,&lt;br /&gt;
      body: {&lt;br /&gt;
        type: type,&lt;br /&gt;
        obj_name: obj_name,&lt;br /&gt;
        user: user,&lt;br /&gt;
        first_name: ApplicationHelper.get_user_first_name(user),&lt;br /&gt;
        partial_name: partial_name&lt;br /&gt;
      }&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def self.send_mail_for_invitation(user, subject, partial_name, type, obj_name)&lt;br /&gt;
    Mailer.sync_message ({&lt;br /&gt;
      to: user.email,&lt;br /&gt;
      subject: subject,&lt;br /&gt;
      body: {&lt;br /&gt;
        type: type,&lt;br /&gt;
        obj_name: obj_name,&lt;br /&gt;
        user: user,&lt;br /&gt;
        first_name: ApplicationHelper.get_user_first_name(user),&lt;br /&gt;
        partial_name: partial_name&lt;br /&gt;
      }&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
def self.send_mail_for_advertisement_response(user, subject, partial_name, type, obj_name)&lt;br /&gt;
    Mailer.sync_message ({&lt;br /&gt;
      to: user.email,&lt;br /&gt;
      subject: subject,&lt;br /&gt;
      body: {&lt;br /&gt;
        type: type,&lt;br /&gt;
        obj_name: obj_name,&lt;br /&gt;
        user: user,&lt;br /&gt;
        first_name: ApplicationHelper.get_user_first_name(user),&lt;br /&gt;
        partial_name: partial_name&lt;br /&gt;
      }&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
=== Files created in current project ===&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_plain.html.erb&lt;br /&gt;
&lt;br /&gt;
===Testing Details===&lt;br /&gt;
&lt;br /&gt;
==== UI testing of participant  addition via CSV file and e-mail delivery check ====&lt;br /&gt;
* Login as instructor. Create a new course and assignment.&lt;br /&gt;
* Add new participant not having expertiza account to an assignment using a import file option.&lt;br /&gt;
* A mail is triggered for participant who do not have an expertiza account.&lt;br /&gt;
&lt;br /&gt;
==== UI testing of file submission ====&lt;br /&gt;
* Login as student. Go to assignment and open your work page.&lt;br /&gt;
* Upload a new file submission. If the submission is made in review stage, a mail is triggered to a reviewer saying a new submission is available for a particular review round.&lt;br /&gt;
&lt;br /&gt;
==== UI testing for sending/accepting invitation to join team ====&lt;br /&gt;
* Login as student. Go to assignment and open your team page.&lt;br /&gt;
* Search for a student with whom you want to team up and click on send invite. A mail is triggered to that student saying a new invite has been sent.&lt;br /&gt;
* When the student accepts it, another mail is triggered back to the invitee saying the invite has been accepted.&lt;br /&gt;
* When a team member responds to an advertisement, the student who hosted it gets a mail about that response.&lt;br /&gt;
&lt;br /&gt;
===Scope for Future Improvement===&lt;br /&gt;
* An e-mail is being triggered only when a file is submitted for revision. But on the submission of a link, no such e-mail is sent. So this is one of the areas which can be improved in the future.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
https://github.com/cbaruah/expertiza.git&lt;br /&gt;
&lt;br /&gt;
https://expertiza.ncsu.edu&lt;br /&gt;
&lt;br /&gt;
http://research.csc.ncsu.edu/efg/expertiza&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg YouTube channel]&lt;br /&gt;
&lt;br /&gt;
[https://hub.docker.com/r/winbobob/expertiza-fall2016/ How to install and run image file in docker]&lt;/div&gt;</summary>
		<author><name>Cbaruah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=103298</id>
		<title>User:Cbaruah</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=103298"/>
		<updated>2016-10-28T23:27:59Z</updated>

		<summary type="html">&lt;p&gt;Cbaruah: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= CSC/ECE 517 Fall 2016 E1655/OSS Improve e-mail notification =&lt;br /&gt;
&lt;br /&gt;
===Peer Review Information===&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are as follows:&lt;br /&gt;
&lt;br /&gt;
* Instructor Login: Username: instructor6 , password: password&lt;br /&gt;
* Student Login: Username: student5432 , password: password&lt;br /&gt;
* Student Login: Username: testing11, password: password&lt;br /&gt;
* Student Login: Username: testing12, password: password&lt;br /&gt;
&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
Mailers in Expertiza have their association with many other components like Users, Courses,Reviews,Participants and Invitations. The Mailer Helper in specific invokes methods which perform mailer related functions like sending mail to newly created user, sending mail to reviewer etc. &lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
&lt;br /&gt;
This project in particular intends that the students collaborate with each other and work on making enhancements to the code base by applying the concepts of Rails,RSpec, DRY code,Test driven development etc. This provides an opportunity for students to contribute to an open source project and learn further about software deployment etc.&lt;br /&gt;
&lt;br /&gt;
Currently, the mailer notifies the participants when a new user is created, to the reviewer when a submission of work is done. The scope of this project is to improve the present mail notifications and also plug gaps in some implementations.&lt;br /&gt;
&lt;br /&gt;
===Current Implementation===&lt;br /&gt;
&lt;br /&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. So this functionality of account creation was fixed. No mail is triggered to the concerned user whenever their account is created regardless of how their account is created. The listed files were manipulated for updating this functionality&lt;br /&gt;
*# controllers/import_file_controller.rb &lt;br /&gt;
*# helpers/import_file_helper &lt;br /&gt;
&lt;br /&gt;
* Evidently if a file is revised after review,  the system e-mails the reviewer saying to revise the review. This method was provided but wasn't working. This functionality was fixed and successfully implemented(Mail is only triggered for a file submission. For link submission their is no mailer functionalities). Also after the last round of review is over, mail is no longer triggered. The listed files were updated or created to get the functionality working.&lt;br /&gt;
*# controllers/submitted_content_controller&lt;br /&gt;
*# helpers/mailer_helper&lt;br /&gt;
*# app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
&lt;br /&gt;
* The message body of the mail is fixed to include the round of the review stage for which the review is provided along with a link to the site. Files are same as mentioned in second point.&lt;br /&gt;
* Email is triggered to an invitee whenever a participant sends out an invitation to another participant to join a team. The listed files were updated or created to get the functionality working.&lt;br /&gt;
*# controllers/invitation_controller&lt;br /&gt;
*# helpers/participants_helper&lt;br /&gt;
*# app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
* Whenever the invitee accepts the invitation, the student who issued the invitation gets a mail stating that the invitee has accepted his/her invitation. The controller and helper class are the same as mentioned in the 4th point. Although new views had to be created for this functionality&lt;br /&gt;
*# app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_team_accept_invite_plain.html.erb &lt;br /&gt;
* Mail is also triggered when a student responds to a teammate advertisement. The controller and helper class are the same as mentioned in the 4th point. Although new views had to be created for this functionality.&lt;br /&gt;
*# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
&lt;br /&gt;
===Files modified in current project===&lt;br /&gt;
====Classes====&lt;br /&gt;
* controllers/import_file_controller&lt;br /&gt;
* controllers/submitted_content_controller&lt;br /&gt;
* controllers/invitation_controller&lt;br /&gt;
* helpers/import_file_helper&lt;br /&gt;
* helpers/participants_helper&lt;br /&gt;
* helpers/mailer_helper&lt;br /&gt;
&lt;br /&gt;
====About import_file_controller====&lt;br /&gt;
&lt;br /&gt;
This controller derives from the Application Controller. It states the functionality of importing any kind of file like csv, xls, doc into the application. It defines the import function which takes the 'session' and 'params' as output and provides success message on successful import. It also provides the functionality of specifying the delimiter in the file which is being imported. The ImportFile method defined in the controller reads the file row by row based on the model concerned. The modified code snippet is&lt;br /&gt;
&lt;br /&gt;
====About submitted_content_controller====&lt;br /&gt;
&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD operations on submitting the file or hyperlink for assignment. It provides functionality to download, create folder and delete folder after submission. It provides the functionality for submitting links and submitting hyperlinks separately.&lt;br /&gt;
&lt;br /&gt;
    prepared_mail = MailerHelper.send_mail_to_reviewer(User.find(participant.user_id), &amp;quot;A new submission is available&amp;quot;, &amp;quot;file_submission&amp;quot;, &amp;quot;file  submission&amp;quot;, Assignment.find(participant.parent_id).name)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
&lt;br /&gt;
==== About invitation_controller ====&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD as well as other basic operations when an invitation is sent by an user to any participant to join their team. It provides the functionality to send and accept invitations as well as to reject invitations and leave team.&lt;br /&gt;
&lt;br /&gt;
 # To send mail request to invitees to join team&lt;br /&gt;
 prepared_mail = MailerHelper.send_mail_for_invitation(user, &amp;quot;Invitation to join team&amp;quot;, &amp;quot;team_join_invite&amp;quot;, &amp;quot;invitation to join&amp;quot;, student.name)&lt;br /&gt;
 prepared_mail.deliver&lt;br /&gt;
&lt;br /&gt;
==== About import_file_helper ====&lt;br /&gt;
This is a helper file for the '''import_file_controller''' class which stores the attributes from the controller class as well as creates new users when user are created by importing a CSV file.&lt;br /&gt;
&lt;br /&gt;
 def self.create_new_user(attributes, session)&lt;br /&gt;
    user = User.new(attributes)&lt;br /&gt;
    user.parent_id = (session[:user]).id&lt;br /&gt;
    user.timezonepref = User.find(user.parent_id).timezonepref&lt;br /&gt;
    user.save!&lt;br /&gt;
    prepared_mail = MailerHelper.send_mail_to_user(user, &amp;quot;Your Expertiza account and password have been created.&amp;quot;, &amp;quot;user_welcome&amp;quot;, user.password)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
    user&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==== About participants_helper ====&lt;br /&gt;
This is a helper file for the '''participants_controller''' class. It provides some of the basic functionalities that is required to create participants that are added to expertiza.&lt;br /&gt;
&lt;br /&gt;
   def self.create_new_user(attrs, session)&lt;br /&gt;
    user = User.new&lt;br /&gt;
    user.update_attributes attrs&lt;br /&gt;
    user.parent_id = (session[:user]).id&lt;br /&gt;
    user.save&lt;br /&gt;
    password = @user.reset_password&lt;br /&gt;
    prepared_mail = MailerHelper.send_mail_to_user(@user, &amp;quot;Your Expertiza account and password have been created.&amp;quot;, &amp;quot;user_welcome&amp;quot;, password)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
    flash[:success] = &amp;quot;A new password has been sent to new user's e-mail address.&amp;quot;&lt;br /&gt;
    user&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==== About mailer_helper ====&lt;br /&gt;
This helper file is for the '''mailer''' class. Its creates the structure of the mail body that is needed by the mailer class to send mails. It also holds all the attributes that are required to send a mail.&lt;br /&gt;
&lt;br /&gt;
 def self.send_mail_to_reviewer(user, subject, partial_name, type, obj_name)&lt;br /&gt;
    Mailer.sync_message ({&lt;br /&gt;
      to: user.email,&lt;br /&gt;
      subject: subject,&lt;br /&gt;
      body: {&lt;br /&gt;
        type: type,&lt;br /&gt;
        obj_name: obj_name,&lt;br /&gt;
        user: user,&lt;br /&gt;
        first_name: ApplicationHelper.get_user_first_name(user),&lt;br /&gt;
        partial_name: partial_name&lt;br /&gt;
      }&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def self.send_mail_for_invitation(user, subject, partial_name, type, obj_name)&lt;br /&gt;
    Mailer.sync_message ({&lt;br /&gt;
      to: user.email,&lt;br /&gt;
      subject: subject,&lt;br /&gt;
      body: {&lt;br /&gt;
        type: type,&lt;br /&gt;
        obj_name: obj_name,&lt;br /&gt;
        user: user,&lt;br /&gt;
        first_name: ApplicationHelper.get_user_first_name(user),&lt;br /&gt;
        partial_name: partial_name&lt;br /&gt;
      }&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
def self.send_mail_for_advertisement_response(user, subject, partial_name, type, obj_name)&lt;br /&gt;
    Mailer.sync_message ({&lt;br /&gt;
      to: user.email,&lt;br /&gt;
      subject: subject,&lt;br /&gt;
      body: {&lt;br /&gt;
        type: type,&lt;br /&gt;
        obj_name: obj_name,&lt;br /&gt;
        user: user,&lt;br /&gt;
        first_name: ApplicationHelper.get_user_first_name(user),&lt;br /&gt;
        partial_name: partial_name&lt;br /&gt;
      }&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
=== Files created in current project ===&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_plain.html.erb&lt;br /&gt;
&lt;br /&gt;
===Testing Details===&lt;br /&gt;
&lt;br /&gt;
==== UI testing of participant  addition via CSV file and mail delivery check ====&lt;br /&gt;
* Login as instructor. Create a new course and assignment.&lt;br /&gt;
* Add new participant to an assignment using a import file option.&lt;br /&gt;
* A mail is triggered for participant who do not have an expertiza account.&lt;br /&gt;
&lt;br /&gt;
==== UI testing of file submission ====&lt;br /&gt;
* Login as student. Go to assignment and open your work page.&lt;br /&gt;
* Upload a new file submission. If the submission is made in review stage, a mail is triggered to a reviewer saying a new submission is available for a particular review round.&lt;br /&gt;
&lt;br /&gt;
==== UI testing for sending/accepting invitation to join team ====&lt;br /&gt;
* Login as student. Go to assignment and open your team page.&lt;br /&gt;
* Search for a student with whom you want to team up and click on send invite. A mail is triggered to that student saying a new invite has been sent.&lt;br /&gt;
* When the student accepts it, another mail is triggered back to the invitee saying the invite has been accepted.&lt;br /&gt;
* When a team member responds to an advertisement, the student who hosted it gets a mail about that response.&lt;br /&gt;
&lt;br /&gt;
===Scope for Future Improvement===&lt;br /&gt;
* A mail is being triggered only when a file is submitted for revision. But on the submission of a link, no such mail is sent. So this is one of the areas which can be improved in the future.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
https://github.com/cbaruah/expertiza.git&lt;br /&gt;
&lt;br /&gt;
https://expertiza.ncsu.edu&lt;br /&gt;
&lt;br /&gt;
http://research.csc.ncsu.edu/efg/expertiza&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg YouTube channel]&lt;br /&gt;
&lt;br /&gt;
[https://hub.docker.com/r/winbobob/expertiza-fall2016/ How to install and run image file in docker]&lt;/div&gt;</summary>
		<author><name>Cbaruah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=103279</id>
		<title>User:Cbaruah</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=103279"/>
		<updated>2016-10-28T23:18:43Z</updated>

		<summary type="html">&lt;p&gt;Cbaruah: /* Files modified in current project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= CSC/ECE 517 Fall 2016 E1655/OSS Improve e-mail notification =&lt;br /&gt;
&lt;br /&gt;
===Peer Review Information===&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are as follows:&lt;br /&gt;
&lt;br /&gt;
* Instructor Login: Username: instructor6 , password: password&lt;br /&gt;
* Student Login: Username: student5432 , password: password&lt;br /&gt;
* Student Login: Username: testing11, password: password&lt;br /&gt;
* Student Login: Username: testing12, password: password&lt;br /&gt;
&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
Mailers in Expertiza have their association with many other components like Users, Courses,Reviews,Participants and Invitations. The Mailer Helper in specific invokes methods which perform mailer related functions like sending mail to newly created user, sending mail to reviewer etc. &lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
&lt;br /&gt;
This project in particular intends that the students collaborate with each other and work on making enhancements to the code base by applying the concepts of Rails,RSpec, DRY code,Test driven development etc. This provides an opportunity for students to contribute to an open source project and learn further about software deployment etc.&lt;br /&gt;
&lt;br /&gt;
Currently, the mailer notifies the participants when a new user is created, to the reviewer when a submission of work is done. The scope of this project is to improve the present mail notifications and also plug gaps in some implementations.&lt;br /&gt;
&lt;br /&gt;
===Current Implementation===&lt;br /&gt;
&lt;br /&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. So this functionality of account creation was fixed. No mail is triggered to the concerned user whenever their account is created regardless of how their account is created. The listed files were manipulated for updating this functionality&lt;br /&gt;
*# controllers/import_file_controller.rb &lt;br /&gt;
*# helpers/import_file_helper &lt;br /&gt;
&lt;br /&gt;
* Evidently if a file is revised after review,  the system e-mails the reviewer saying to revise the review. This method was provided but wasn't working. This functionality was fixed and successfully implemented(Mail is only triggered for a file submission. For link submission their is no mailer functionalities). Also after the last round of review is over, mail is no longer triggered. The listed files were updated or created to get the functionality working.&lt;br /&gt;
*# controllers/submitted_content_controller&lt;br /&gt;
*# helpers/mailer_helper&lt;br /&gt;
*# app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
&lt;br /&gt;
* The message body of the mail is fixed to include the round of the review stage for which the review is provided along with a link to the site. Files are same as mentioned in second point.&lt;br /&gt;
* Email is triggered to an invitee whenever a participant sends out an invitation to another participant to join a team. The listed files were updated or created to get the functionality working.&lt;br /&gt;
*# controllers/invitation_controller&lt;br /&gt;
*# helpers/participants_helper&lt;br /&gt;
*# app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
* Whenever the invitee accepts the invitation, the student who issued the invitation gets a mail stating that the invitee has accepted his/her invitation. The controller and helper class are the same as mentioned in the 4th point. Although new views had to be created for this functionality&lt;br /&gt;
*# app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_team_accept_invite_plain.html.erb &lt;br /&gt;
* Mail is also triggered when a student responds to a teammate advertisement. The controller and helper class are the same as mentioned in the 4th point. Although new views had to be created for this functionality.&lt;br /&gt;
*# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
&lt;br /&gt;
===Files modified in current project===&lt;br /&gt;
====Classes====&lt;br /&gt;
* controllers/import_file_controller&lt;br /&gt;
* controllers/submitted_content_controller&lt;br /&gt;
* controllers/invitation_controller&lt;br /&gt;
* helpers/import_file_helper&lt;br /&gt;
* helpers/participants_helper&lt;br /&gt;
* helpers/mailer_helper&lt;br /&gt;
&lt;br /&gt;
====About import_file_controller====&lt;br /&gt;
&lt;br /&gt;
This controller derives from the Application Controller. It states the functionality of importing any kind of file like csv, xls, doc into the application. It defines the import function which takes the 'session' and 'params' as output and provides success message on successful import. It also provides the functionality of specifying the delimiter in the file which is being imported. The ImportFile method defined in the controller reads the file row by row based on the model concerned. The modified code snippet is&lt;br /&gt;
&lt;br /&gt;
====About submitted_content_controller====&lt;br /&gt;
&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD operations on submitting the file or hyperlink for assignment. It provides functionality to download, create folder and delete folder after submission. It provides the functionality for submitting links and submitting hyperlinks separately.&lt;br /&gt;
&lt;br /&gt;
    prepared_mail = MailerHelper.send_mail_to_reviewer(User.find(participant.user_id), &amp;quot;A new submission is available&amp;quot;, &amp;quot;file_submission&amp;quot;, &amp;quot;file  submission&amp;quot;, Assignment.find(participant.parent_id).name)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
&lt;br /&gt;
==== About invitation_controller ====&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD as well as other basic operations when an invitation is sent by an user to any participant to join their team. It provides the functionality to send and accept invitations as well as to reject invitations and leave team.&lt;br /&gt;
&lt;br /&gt;
 # To send mail request to invitees to join team&lt;br /&gt;
 prepared_mail = MailerHelper.send_mail_for_invitation(user, &amp;quot;Invitation to join team&amp;quot;, &amp;quot;team_join_invite&amp;quot;, &amp;quot;invitation to join&amp;quot;, student.name)&lt;br /&gt;
 prepared_mail.deliver&lt;br /&gt;
&lt;br /&gt;
==== About import_file_helper ====&lt;br /&gt;
This is a helper file for the '''import_file_controller''' class which stores the attributes from the controller class as well as creates new users when user are created by importing a CSV file.&lt;br /&gt;
&lt;br /&gt;
 def self.create_new_user(attributes, session)&lt;br /&gt;
    user = User.new(attributes)&lt;br /&gt;
    user.parent_id = (session[:user]).id&lt;br /&gt;
    user.timezonepref = User.find(user.parent_id).timezonepref&lt;br /&gt;
    user.save!&lt;br /&gt;
    prepared_mail = MailerHelper.send_mail_to_user(user, &amp;quot;Your Expertiza account and password have been created.&amp;quot;, &amp;quot;user_welcome&amp;quot;, user.password)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
    user&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==== About participants_helper ====&lt;br /&gt;
This is a helper file for the '''participants_controller''' class. It provides some of the basic functionalities that is required to create participants that are added to expertiza.&lt;br /&gt;
&lt;br /&gt;
   def self.create_new_user(attrs, session)&lt;br /&gt;
    user = User.new&lt;br /&gt;
    user.update_attributes attrs&lt;br /&gt;
    user.parent_id = (session[:user]).id&lt;br /&gt;
    user.save&lt;br /&gt;
    password = @user.reset_password&lt;br /&gt;
    prepared_mail = MailerHelper.send_mail_to_user(@user, &amp;quot;Your Expertiza account and password have been created.&amp;quot;, &amp;quot;user_welcome&amp;quot;, password)&lt;br /&gt;
    prepared_mail.deliver&lt;br /&gt;
    flash[:success] = &amp;quot;A new password has been sent to new user's e-mail address.&amp;quot;&lt;br /&gt;
    user&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==== About mailer_helper ====&lt;br /&gt;
This helper file is for the '''mailer''' class. Its creates the structure of the mail body that is needed by the mailer class to send mails. It also holds all the attributes that are required to send a mail.&lt;br /&gt;
&lt;br /&gt;
 def self.send_mail_to_reviewer(user, subject, partial_name, type, obj_name)&lt;br /&gt;
    Mailer.sync_message ({&lt;br /&gt;
      to: user.email,&lt;br /&gt;
      subject: subject,&lt;br /&gt;
      body: {&lt;br /&gt;
        type: type,&lt;br /&gt;
        obj_name: obj_name,&lt;br /&gt;
        user: user,&lt;br /&gt;
        first_name: ApplicationHelper.get_user_first_name(user),&lt;br /&gt;
        partial_name: partial_name&lt;br /&gt;
      }&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def self.send_mail_for_invitation(user, subject, partial_name, type, obj_name)&lt;br /&gt;
    Mailer.sync_message ({&lt;br /&gt;
      to: user.email,&lt;br /&gt;
      subject: subject,&lt;br /&gt;
      body: {&lt;br /&gt;
        type: type,&lt;br /&gt;
        obj_name: obj_name,&lt;br /&gt;
        user: user,&lt;br /&gt;
        first_name: ApplicationHelper.get_user_first_name(user),&lt;br /&gt;
        partial_name: partial_name&lt;br /&gt;
      }&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
def self.send_mail_for_advertisement_response(user, subject, partial_name, type, obj_name)&lt;br /&gt;
    Mailer.sync_message ({&lt;br /&gt;
      to: user.email,&lt;br /&gt;
      subject: subject,&lt;br /&gt;
      body: {&lt;br /&gt;
        type: type,&lt;br /&gt;
        obj_name: obj_name,&lt;br /&gt;
        user: user,&lt;br /&gt;
        first_name: ApplicationHelper.get_user_first_name(user),&lt;br /&gt;
        partial_name: partial_name&lt;br /&gt;
      }&lt;br /&gt;
    })&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
=== Files created in current project ===&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_plain.html.erb&lt;br /&gt;
&lt;br /&gt;
===Testing Details===&lt;br /&gt;
&lt;br /&gt;
==== UI testing of participant  addition via CSV file and mail delivery check ====&lt;br /&gt;
* Login as instructor. Create a new course and assignment.&lt;br /&gt;
* Add new participant to an assignment using a import file option.&lt;br /&gt;
* A mail is triggered for participant who do not have an expertiza account.&lt;br /&gt;
&lt;br /&gt;
==== UI testing of file submission ====&lt;br /&gt;
* Login as student. Go to assignment and open your work page.&lt;br /&gt;
* Upload a new file submission. If the submission is made in review stage, a mail is triggered to a reviewer saying a new submission is available for a particular review round.&lt;br /&gt;
&lt;br /&gt;
==== UI testing for sending/accepting invitation to join team ====&lt;br /&gt;
* Login as student. Go to assignment and open your team page.&lt;br /&gt;
* Search for a student with whom you want to team up and click on send invite. A mail is triggered to that student saying a new invite has been sent.&lt;br /&gt;
* When the student accepts it, another mail is triggered back to the invitee saying the invite has been accepted.&lt;br /&gt;
* When a team member responds to an advertisement, the student who hosted it gets a mail about that response.&lt;br /&gt;
&lt;br /&gt;
===Scope for Future Improvement===&lt;br /&gt;
* A mail is being triggered only when a file is submitted for revision. But on the submission of a link, no such mail is sent. So this is one of the areas which can be improved in the future.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;/div&gt;</summary>
		<author><name>Cbaruah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=103277</id>
		<title>User:Cbaruah</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=103277"/>
		<updated>2016-10-28T23:18:05Z</updated>

		<summary type="html">&lt;p&gt;Cbaruah: /* Scope for Future Improvement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= CSC/ECE 517 Fall 2016 E1655/OSS Improve e-mail notification =&lt;br /&gt;
&lt;br /&gt;
===Peer Review Information===&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are as follows:&lt;br /&gt;
&lt;br /&gt;
* Instructor Login: Username: instructor6 , password: password&lt;br /&gt;
* Student Login: Username: student5432 , password: password&lt;br /&gt;
* Student Login: Username: testing11, password: password&lt;br /&gt;
* Student Login: Username: testing12, password: password&lt;br /&gt;
&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
Mailers in Expertiza have their association with many other components like Users, Courses,Reviews,Participants and Invitations. The Mailer Helper in specific invokes methods which perform mailer related functions like sending mail to newly created user, sending mail to reviewer etc. &lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
&lt;br /&gt;
This project in particular intends that the students collaborate with each other and work on making enhancements to the code base by applying the concepts of Rails,RSpec, DRY code,Test driven development etc. This provides an opportunity for students to contribute to an open source project and learn further about software deployment etc.&lt;br /&gt;
&lt;br /&gt;
Currently, the mailer notifies the participants when a new user is created, to the reviewer when a submission of work is done. The scope of this project is to improve the present mail notifications and also plug gaps in some implementations.&lt;br /&gt;
&lt;br /&gt;
===Current Implementation===&lt;br /&gt;
&lt;br /&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. So this functionality of account creation was fixed. No mail is triggered to the concerned user whenever their account is created regardless of how their account is created. The listed files were manipulated for updating this functionality&lt;br /&gt;
*# controllers/import_file_controller.rb &lt;br /&gt;
*# helpers/import_file_helper &lt;br /&gt;
&lt;br /&gt;
* Evidently if a file is revised after review,  the system e-mails the reviewer saying to revise the review. This method was provided but wasn't working. This functionality was fixed and successfully implemented(Mail is only triggered for a file submission. For link submission their is no mailer functionalities). Also after the last round of review is over, mail is no longer triggered. The listed files were updated or created to get the functionality working.&lt;br /&gt;
*# controllers/submitted_content_controller&lt;br /&gt;
*# helpers/mailer_helper&lt;br /&gt;
*# app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
&lt;br /&gt;
* The message body of the mail is fixed to include the round of the review stage for which the review is provided along with a link to the site. Files are same as mentioned in second point.&lt;br /&gt;
* Email is triggered to an invitee whenever a participant sends out an invitation to another participant to join a team. The listed files were updated or created to get the functionality working.&lt;br /&gt;
*# controllers/invitation_controller&lt;br /&gt;
*# helpers/participants_helper&lt;br /&gt;
*# app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
* Whenever the invitee accepts the invitation, the student who issued the invitation gets a mail stating that the invitee has accepted his/her invitation. The controller and helper class are the same as mentioned in the 4th point. Although new views had to be created for this functionality&lt;br /&gt;
*# app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_team_accept_invite_plain.html.erb &lt;br /&gt;
* Mail is also triggered when a student responds to a teammate advertisement. The controller and helper class are the same as mentioned in the 4th point. Although new views had to be created for this functionality.&lt;br /&gt;
*# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
&lt;br /&gt;
===Files modified in current project===&lt;br /&gt;
====Classes====&lt;br /&gt;
* controllers/import_file_controller&lt;br /&gt;
* controllers/submitted_content_controller&lt;br /&gt;
* controllers/invitation_controller&lt;br /&gt;
* helpers/import_file_helper&lt;br /&gt;
* helpers/participants_helper&lt;br /&gt;
* helpers/mailer_helper&lt;br /&gt;
&lt;br /&gt;
====About import_file_controller====&lt;br /&gt;
&lt;br /&gt;
This controller derives from the Application Controller. It states the functionality of importing any kind of file like csv, xls, doc into the application. It defines the import function which takes the 'session' and 'params' as output and provides success message on successful import. It also provides the functionality of specifying the delimiter in the file which is being imported. The ImportFile method defined in the controller reads the file row by row based on the model concerned.&lt;br /&gt;
&lt;br /&gt;
====About submitted_content_controller====&lt;br /&gt;
&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD operations on submitting the file or hyperlink for assignment. It provides functionality to download, create folder and delete folder after submission. It provides the functionality for submitting links and submitting hyperlinks separately.&lt;br /&gt;
&lt;br /&gt;
==== About invitation_controller ====&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD as well as other basic operations when an invitation is sent by an user to any participant to join their team. It provides the functionality to send and accept invitations as well as to reject invitations and leave team.&lt;br /&gt;
&lt;br /&gt;
==== About import_file_helper ====&lt;br /&gt;
This is a helper file for the '''import_file_controller''' class which stores the attributes from the controller class as well as creates new users when user are created by importing a CSV file.&lt;br /&gt;
&lt;br /&gt;
==== About participants_helper ====&lt;br /&gt;
This is a helper file for the '''participants_controller''' class. It provides some of the basic functionalities that is required to create participants that are added to expertiza.&lt;br /&gt;
&lt;br /&gt;
==== About mailer_helper ====&lt;br /&gt;
This helper file is for the '''mailer''' class. Its creates the structure of the mail body that is needed by the mailer class to send mails. It also holds all the attributes that are required to send a mail.&lt;br /&gt;
&lt;br /&gt;
=== Files created in current project ===&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_plain.html.erb&lt;br /&gt;
&lt;br /&gt;
===Testing Details===&lt;br /&gt;
&lt;br /&gt;
==== UI testing of participant  addition via CSV file and mail delivery check ====&lt;br /&gt;
* Login as instructor. Create a new course and assignment.&lt;br /&gt;
* Add new participant to an assignment using a import file option.&lt;br /&gt;
* A mail is triggered for participant who do not have an expertiza account.&lt;br /&gt;
&lt;br /&gt;
==== UI testing of file submission ====&lt;br /&gt;
* Login as student. Go to assignment and open your work page.&lt;br /&gt;
* Upload a new file submission. If the submission is made in review stage, a mail is triggered to a reviewer saying a new submission is available for a particular review round.&lt;br /&gt;
&lt;br /&gt;
==== UI testing for sending/accepting invitation to join team ====&lt;br /&gt;
* Login as student. Go to assignment and open your team page.&lt;br /&gt;
* Search for a student with whom you want to team up and click on send invite. A mail is triggered to that student saying a new invite has been sent.&lt;br /&gt;
* When the student accepts it, another mail is triggered back to the invitee saying the invite has been accepted.&lt;br /&gt;
* When a team member responds to an advertisement, the student who hosted it gets a mail about that response.&lt;br /&gt;
&lt;br /&gt;
===Scope for Future Improvement===&lt;br /&gt;
* A mail is being triggered only when a file is submitted for revision. But on the submission of a link, no such mail is sent. So this is one of the areas which can be improved in the future.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;/div&gt;</summary>
		<author><name>Cbaruah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=103276</id>
		<title>User:Cbaruah</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=103276"/>
		<updated>2016-10-28T23:17:31Z</updated>

		<summary type="html">&lt;p&gt;Cbaruah: /* Testing Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= CSC/ECE 517 Fall 2016 E1655/OSS Improve e-mail notification =&lt;br /&gt;
&lt;br /&gt;
===Peer Review Information===&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are as follows:&lt;br /&gt;
&lt;br /&gt;
* Instructor Login: Username: instructor6 , password: password&lt;br /&gt;
* Student Login: Username: student5432 , password: password&lt;br /&gt;
* Student Login: Username: testing11, password: password&lt;br /&gt;
* Student Login: Username: testing12, password: password&lt;br /&gt;
&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
Mailers in Expertiza have their association with many other components like Users, Courses,Reviews,Participants and Invitations. The Mailer Helper in specific invokes methods which perform mailer related functions like sending mail to newly created user, sending mail to reviewer etc. &lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
&lt;br /&gt;
This project in particular intends that the students collaborate with each other and work on making enhancements to the code base by applying the concepts of Rails,RSpec, DRY code,Test driven development etc. This provides an opportunity for students to contribute to an open source project and learn further about software deployment etc.&lt;br /&gt;
&lt;br /&gt;
Currently, the mailer notifies the participants when a new user is created, to the reviewer when a submission of work is done. The scope of this project is to improve the present mail notifications and also plug gaps in some implementations.&lt;br /&gt;
&lt;br /&gt;
===Current Implementation===&lt;br /&gt;
&lt;br /&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. So this functionality of account creation was fixed. No mail is triggered to the concerned user whenever their account is created regardless of how their account is created. The listed files were manipulated for updating this functionality&lt;br /&gt;
*# controllers/import_file_controller.rb &lt;br /&gt;
*# helpers/import_file_helper &lt;br /&gt;
&lt;br /&gt;
* Evidently if a file is revised after review,  the system e-mails the reviewer saying to revise the review. This method was provided but wasn't working. This functionality was fixed and successfully implemented(Mail is only triggered for a file submission. For link submission their is no mailer functionalities). Also after the last round of review is over, mail is no longer triggered. The listed files were updated or created to get the functionality working.&lt;br /&gt;
*# controllers/submitted_content_controller&lt;br /&gt;
*# helpers/mailer_helper&lt;br /&gt;
*# app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
&lt;br /&gt;
* The message body of the mail is fixed to include the round of the review stage for which the review is provided along with a link to the site. Files are same as mentioned in second point.&lt;br /&gt;
* Email is triggered to an invitee whenever a participant sends out an invitation to another participant to join a team. The listed files were updated or created to get the functionality working.&lt;br /&gt;
*# controllers/invitation_controller&lt;br /&gt;
*# helpers/participants_helper&lt;br /&gt;
*# app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
* Whenever the invitee accepts the invitation, the student who issued the invitation gets a mail stating that the invitee has accepted his/her invitation. The controller and helper class are the same as mentioned in the 4th point. Although new views had to be created for this functionality&lt;br /&gt;
*# app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_team_accept_invite_plain.html.erb &lt;br /&gt;
* Mail is also triggered when a student responds to a teammate advertisement. The controller and helper class are the same as mentioned in the 4th point. Although new views had to be created for this functionality.&lt;br /&gt;
*# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
&lt;br /&gt;
===Files modified in current project===&lt;br /&gt;
====Classes====&lt;br /&gt;
* controllers/import_file_controller&lt;br /&gt;
* controllers/submitted_content_controller&lt;br /&gt;
* controllers/invitation_controller&lt;br /&gt;
* helpers/import_file_helper&lt;br /&gt;
* helpers/participants_helper&lt;br /&gt;
* helpers/mailer_helper&lt;br /&gt;
&lt;br /&gt;
====About import_file_controller====&lt;br /&gt;
&lt;br /&gt;
This controller derives from the Application Controller. It states the functionality of importing any kind of file like csv, xls, doc into the application. It defines the import function which takes the 'session' and 'params' as output and provides success message on successful import. It also provides the functionality of specifying the delimiter in the file which is being imported. The ImportFile method defined in the controller reads the file row by row based on the model concerned.&lt;br /&gt;
&lt;br /&gt;
====About submitted_content_controller====&lt;br /&gt;
&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD operations on submitting the file or hyperlink for assignment. It provides functionality to download, create folder and delete folder after submission. It provides the functionality for submitting links and submitting hyperlinks separately.&lt;br /&gt;
&lt;br /&gt;
==== About invitation_controller ====&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD as well as other basic operations when an invitation is sent by an user to any participant to join their team. It provides the functionality to send and accept invitations as well as to reject invitations and leave team.&lt;br /&gt;
&lt;br /&gt;
==== About import_file_helper ====&lt;br /&gt;
This is a helper file for the '''import_file_controller''' class which stores the attributes from the controller class as well as creates new users when user are created by importing a CSV file.&lt;br /&gt;
&lt;br /&gt;
==== About participants_helper ====&lt;br /&gt;
This is a helper file for the '''participants_controller''' class. It provides some of the basic functionalities that is required to create participants that are added to expertiza.&lt;br /&gt;
&lt;br /&gt;
==== About mailer_helper ====&lt;br /&gt;
This helper file is for the '''mailer''' class. Its creates the structure of the mail body that is needed by the mailer class to send mails. It also holds all the attributes that are required to send a mail.&lt;br /&gt;
&lt;br /&gt;
=== Files created in current project ===&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_plain.html.erb&lt;br /&gt;
&lt;br /&gt;
===Testing Details===&lt;br /&gt;
&lt;br /&gt;
==== UI testing of participant  addition via CSV file and mail delivery check ====&lt;br /&gt;
* Login as instructor. Create a new course and assignment.&lt;br /&gt;
* Add new participant to an assignment using a import file option.&lt;br /&gt;
* A mail is triggered for participant who do not have an expertiza account.&lt;br /&gt;
&lt;br /&gt;
==== UI testing of file submission ====&lt;br /&gt;
* Login as student. Go to assignment and open your work page.&lt;br /&gt;
* Upload a new file submission. If the submission is made in review stage, a mail is triggered to a reviewer saying a new submission is available for a particular review round.&lt;br /&gt;
&lt;br /&gt;
==== UI testing for sending/accepting invitation to join team ====&lt;br /&gt;
* Login as student. Go to assignment and open your team page.&lt;br /&gt;
* Search for a student with whom you want to team up and click on send invite. A mail is triggered to that student saying a new invite has been sent.&lt;br /&gt;
* When the student accepts it, another mail is triggered back to the invitee saying the invite has been accepted.&lt;br /&gt;
* When a team member responds to an advertisement, the student who hosted it gets a mail about that response.&lt;br /&gt;
&lt;br /&gt;
===Scope for Future Improvement===&lt;br /&gt;
&lt;br /&gt;
===References===&lt;/div&gt;</summary>
		<author><name>Cbaruah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=103274</id>
		<title>User:Cbaruah</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=103274"/>
		<updated>2016-10-28T23:17:06Z</updated>

		<summary type="html">&lt;p&gt;Cbaruah: /* Drawbacks and Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= CSC/ECE 517 Fall 2016 E1655/OSS Improve e-mail notification =&lt;br /&gt;
&lt;br /&gt;
===Peer Review Information===&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are as follows:&lt;br /&gt;
&lt;br /&gt;
* Instructor Login: Username: instructor6 , password: password&lt;br /&gt;
* Student Login: Username: student5432 , password: password&lt;br /&gt;
* Student Login: Username: testing11, password: password&lt;br /&gt;
* Student Login: Username: testing12, password: password&lt;br /&gt;
&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
Mailers in Expertiza have their association with many other components like Users, Courses,Reviews,Participants and Invitations. The Mailer Helper in specific invokes methods which perform mailer related functions like sending mail to newly created user, sending mail to reviewer etc. &lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
&lt;br /&gt;
This project in particular intends that the students collaborate with each other and work on making enhancements to the code base by applying the concepts of Rails,RSpec, DRY code,Test driven development etc. This provides an opportunity for students to contribute to an open source project and learn further about software deployment etc.&lt;br /&gt;
&lt;br /&gt;
Currently, the mailer notifies the participants when a new user is created, to the reviewer when a submission of work is done. The scope of this project is to improve the present mail notifications and also plug gaps in some implementations.&lt;br /&gt;
&lt;br /&gt;
===Current Implementation===&lt;br /&gt;
&lt;br /&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. So this functionality of account creation was fixed. No mail is triggered to the concerned user whenever their account is created regardless of how their account is created. The listed files were manipulated for updating this functionality&lt;br /&gt;
*# controllers/import_file_controller.rb &lt;br /&gt;
*# helpers/import_file_helper &lt;br /&gt;
&lt;br /&gt;
* Evidently if a file is revised after review,  the system e-mails the reviewer saying to revise the review. This method was provided but wasn't working. This functionality was fixed and successfully implemented(Mail is only triggered for a file submission. For link submission their is no mailer functionalities). Also after the last round of review is over, mail is no longer triggered. The listed files were updated or created to get the functionality working.&lt;br /&gt;
*# controllers/submitted_content_controller&lt;br /&gt;
*# helpers/mailer_helper&lt;br /&gt;
*# app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
&lt;br /&gt;
* The message body of the mail is fixed to include the round of the review stage for which the review is provided along with a link to the site. Files are same as mentioned in second point.&lt;br /&gt;
* Email is triggered to an invitee whenever a participant sends out an invitation to another participant to join a team. The listed files were updated or created to get the functionality working.&lt;br /&gt;
*# controllers/invitation_controller&lt;br /&gt;
*# helpers/participants_helper&lt;br /&gt;
*# app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
* Whenever the invitee accepts the invitation, the student who issued the invitation gets a mail stating that the invitee has accepted his/her invitation. The controller and helper class are the same as mentioned in the 4th point. Although new views had to be created for this functionality&lt;br /&gt;
*# app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_team_accept_invite_plain.html.erb &lt;br /&gt;
* Mail is also triggered when a student responds to a teammate advertisement. The controller and helper class are the same as mentioned in the 4th point. Although new views had to be created for this functionality.&lt;br /&gt;
*# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
&lt;br /&gt;
===Files modified in current project===&lt;br /&gt;
====Classes====&lt;br /&gt;
* controllers/import_file_controller&lt;br /&gt;
* controllers/submitted_content_controller&lt;br /&gt;
* controllers/invitation_controller&lt;br /&gt;
* helpers/import_file_helper&lt;br /&gt;
* helpers/participants_helper&lt;br /&gt;
* helpers/mailer_helper&lt;br /&gt;
&lt;br /&gt;
====About import_file_controller====&lt;br /&gt;
&lt;br /&gt;
This controller derives from the Application Controller. It states the functionality of importing any kind of file like csv, xls, doc into the application. It defines the import function which takes the 'session' and 'params' as output and provides success message on successful import. It also provides the functionality of specifying the delimiter in the file which is being imported. The ImportFile method defined in the controller reads the file row by row based on the model concerned.&lt;br /&gt;
&lt;br /&gt;
====About submitted_content_controller====&lt;br /&gt;
&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD operations on submitting the file or hyperlink for assignment. It provides functionality to download, create folder and delete folder after submission. It provides the functionality for submitting links and submitting hyperlinks separately.&lt;br /&gt;
&lt;br /&gt;
==== About invitation_controller ====&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD as well as other basic operations when an invitation is sent by an user to any participant to join their team. It provides the functionality to send and accept invitations as well as to reject invitations and leave team.&lt;br /&gt;
&lt;br /&gt;
==== About import_file_helper ====&lt;br /&gt;
This is a helper file for the '''import_file_controller''' class which stores the attributes from the controller class as well as creates new users when user are created by importing a CSV file.&lt;br /&gt;
&lt;br /&gt;
==== About participants_helper ====&lt;br /&gt;
This is a helper file for the '''participants_controller''' class. It provides some of the basic functionalities that is required to create participants that are added to expertiza.&lt;br /&gt;
&lt;br /&gt;
==== About mailer_helper ====&lt;br /&gt;
This helper file is for the '''mailer''' class. Its creates the structure of the mail body that is needed by the mailer class to send mails. It also holds all the attributes that are required to send a mail.&lt;br /&gt;
&lt;br /&gt;
=== Files created in current project ===&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_plain.html.erb&lt;br /&gt;
&lt;br /&gt;
===Testing Details===&lt;br /&gt;
&lt;br /&gt;
===Scope for Future Improvement===&lt;br /&gt;
&lt;br /&gt;
===References===&lt;/div&gt;</summary>
		<author><name>Cbaruah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=102864</id>
		<title>User:Cbaruah</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=102864"/>
		<updated>2016-10-28T19:26:11Z</updated>

		<summary type="html">&lt;p&gt;Cbaruah: /* Current Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= CSC/ECE 517 Fall 2016 E1655/OSS Improve e-mail notification =&lt;br /&gt;
&lt;br /&gt;
===Peer Review Information===&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are as follows:&lt;br /&gt;
&lt;br /&gt;
* Instructor Login: Username: instructor6 , password: password&lt;br /&gt;
* Student Login: Username: student5432 , password: password&lt;br /&gt;
* Student Login: Username: testing11, password: password&lt;br /&gt;
* Student Login: Username: testing12, password: password&lt;br /&gt;
&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
Mailers in Expertiza have their association with many other components like Users, Courses,Reviews,Participants and Invitations. The Mailer Helper in specific invokes methods which perform mailer related functions like sending mail to newly created user, sending mail to reviewer etc. &lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
&lt;br /&gt;
This project in particular intends that the students collaborate with each other and work on making enhancements to the code base by applying the concepts of Rails,RSpec, DRY code,Test driven development etc. This provides an opportunity for students to contribute to an open source project and learn further about software deployment etc.&lt;br /&gt;
&lt;br /&gt;
Currently, the mailer notifies the participants when a new user is created, to the reviewer when a submission of work is done. The scope of this project is to improve the present mail notifications and also plug gaps in some implementations.&lt;br /&gt;
&lt;br /&gt;
===Current Implementation===&lt;br /&gt;
&lt;br /&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. So this functionality of account creation was fixed. No mail is triggered to the concerned user whenever their account is created regardless of how their account is created. The listed files were manipulated for updating this functionality&lt;br /&gt;
*# controllers/import_file_controller.rb &lt;br /&gt;
*# helpers/import_file_helper &lt;br /&gt;
&lt;br /&gt;
* Evidently if a file is revised after review,  the system e-mails the reviewer saying to revise the review. This method was provided but wasn't working. This functionality was fixed and successfully implemented(Mail is only triggered for a file submission. For link submission their is no mailer functionalities). Also after the last round of review is over, mail is no longer triggered. The listed files were updated or created to get the functionality working.&lt;br /&gt;
*# controllers/submitted_content_controller&lt;br /&gt;
*# helpers/mailer_helper&lt;br /&gt;
*# app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
&lt;br /&gt;
* The message body of the mail is fixed to include the round of the review stage for which the review is provided along with a link to the site. Files are same as mentioned in second point.&lt;br /&gt;
* Email is triggered to an invitee whenever a participant sends out an invitation to another participant to join a team. The listed files were updated or created to get the functionality working.&lt;br /&gt;
*# controllers/invitation_controller&lt;br /&gt;
*# helpers/participants_helper&lt;br /&gt;
*# app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
* Whenever the invitee accepts the invitation, the student who issued the invitation gets a mail stating that the invitee has accepted his/her invitation. The controller and helper class are the same as mentioned in the 4th point. Although new views had to be created for this functionality&lt;br /&gt;
*# app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_team_accept_invite_plain.html.erb &lt;br /&gt;
* Mail is also triggered when a student responds to a teammate advertisement. The controller and helper class are the same as mentioned in the 4th point. Although new views had to be created for this functionality.&lt;br /&gt;
*# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
*# app/views/mailer/partials/_response_to_advertisement.html.erb&lt;br /&gt;
&lt;br /&gt;
===Files modified in current project===&lt;br /&gt;
====Classes====&lt;br /&gt;
* controllers/import_file_controller&lt;br /&gt;
* controllers/submitted_content_controller&lt;br /&gt;
* controllers/invitation_controller&lt;br /&gt;
* helpers/import_file_helper&lt;br /&gt;
* helpers/participants_helper&lt;br /&gt;
* helpers/mailer_helper&lt;br /&gt;
&lt;br /&gt;
====About import_file_controller====&lt;br /&gt;
&lt;br /&gt;
This controller derives from the Application Controller. It states the functionality of importing any kind of file like csv, xls, doc into the application. It defines the import function which takes the 'session' and 'params' as output and provides success message on successful import. It also provides the functionality of specifying the delimiter in the file which is being imported. The ImportFile method defined in the controller reads the file row by row based on the model concerned.&lt;br /&gt;
&lt;br /&gt;
====About submitted_content_controller====&lt;br /&gt;
&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD operations on submitting the file or hyperlink for assignment. It provides functionality to download, create folder and delete folder after submission. It provides the functionality for submitting links and submitting hyperlinks separately.&lt;br /&gt;
&lt;br /&gt;
==== About invitation_controller ====&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD as well as other basic operations when an invitation is sent by an user to any participant to join their team. It provides the functionality to send and accept invitations as well as to reject invitations and leave team.&lt;br /&gt;
&lt;br /&gt;
==== About import_file_helper ====&lt;br /&gt;
This is a helper file for the '''import_file_controller''' class which stores the attributes from the controller class as well as creates new users when user are created by importing a CSV file.&lt;br /&gt;
&lt;br /&gt;
==== About participants_helper ====&lt;br /&gt;
This is a helper file for the '''participants_controller''' class. It provides some of the basic functionalities that is required to create participants that are added to expertiza.&lt;br /&gt;
&lt;br /&gt;
==== About mailer_helper ====&lt;br /&gt;
This helper file is for the '''mailer''' class. Its creates the structure of the mail body that is needed by the mailer class to send mails. It also holds all the attributes that are required to send a mail.&lt;br /&gt;
&lt;br /&gt;
=== Files created in current project ===&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_plain.html.erb&lt;br /&gt;
&lt;br /&gt;
===Drawbacks and Solutions===&lt;br /&gt;
&lt;br /&gt;
Drawback: Presently if users are added by adding them as participants to an assignment, the email for user creation is not sent.&lt;br /&gt;
&lt;br /&gt;
Solution: Moving the call to the mailer from users controller to the point where import file is called. Therefore regardless of the method of the user creation, email is sent to the new user.&lt;br /&gt;
&lt;br /&gt;
Drawback: In the existing implementation, mail functionality did not exist when a new submission was made by the user. Such mail functionality was required because a reviewer would be unaware of any new submission made by the user in the review period.&lt;br /&gt;
&lt;br /&gt;
Solution: Mail is sent to the reviewer specifying the assignment name and the round of review in which the submission was made. A link is also provided which takes the reviewer directly to expertiza.&lt;br /&gt;
&lt;br /&gt;
===Testing Details===&lt;br /&gt;
&lt;br /&gt;
===Scope for Future Improvement===&lt;br /&gt;
&lt;br /&gt;
===References===&lt;/div&gt;</summary>
		<author><name>Cbaruah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=102814</id>
		<title>User:Cbaruah</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=User:Cbaruah&amp;diff=102814"/>
		<updated>2016-10-28T18:55:29Z</updated>

		<summary type="html">&lt;p&gt;Cbaruah: Created page with &amp;quot; = CSC/ECE 517 Fall 2016 E1655/OSS Improve e-mail notification =  ===Peer Review Information===  For users intending to view the deployed Expertiza associated with this assignmen...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= CSC/ECE 517 Fall 2016 E1655/OSS Improve e-mail notification =&lt;br /&gt;
&lt;br /&gt;
===Peer Review Information===&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are as follows:&lt;br /&gt;
&lt;br /&gt;
* Instructor Login: Username: instructor6 , password: password&lt;br /&gt;
* Student Login: Username: student5432 , password: password&lt;br /&gt;
* Student Login: Username: testing11, password: password&lt;br /&gt;
* Student Login: Username: testing12, password: password&lt;br /&gt;
&lt;br /&gt;
===Expertiza Background===&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
Mailers in Expertiza have their association with many other components like Users, Courses,Reviews,Participants and Invitations. The Mailer Helper in specific invokes methods which perform mailer related functions like sending mail to newly created user, sending mail to reviewer etc. &lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
&lt;br /&gt;
This project in particular intends that the students collaborate with each other and work on making enhancements to the code base by applying the concepts of Rails,RSpec, DRY code,Test driven development etc. This provides an opportunity for students to contribute to an open source project and learn further about software deployment etc.&lt;br /&gt;
&lt;br /&gt;
Currently, the mailer notifies the participants when a new user is created, to the reviewer when a submission of work is done. The scope of this project is to improve the present mail notifications and also plug gaps in some implementations.&lt;br /&gt;
&lt;br /&gt;
===Current Implementation===&lt;br /&gt;
&lt;br /&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. So this functionality of account creation was fixed. No mail is triggered to the concerned user whenever their account is created regardless of how their account is created. &lt;br /&gt;
&lt;br /&gt;
* Evidently if a file is revised after review,  the system e-mails the reviewer saying to revise the review. This method was provided but wasn't working. This functionality was fixed and successfully implemented(Mail is only triggered for a file submission. For link submission their is no mailer functionalities). Also after the last round of review is over, mail is no longer triggered.&lt;br /&gt;
&lt;br /&gt;
* The message body of the mail is fixed to include the round of the review stage for which the review is provided along with a link to the site.&lt;br /&gt;
* Email is triggered to an invitee whenever a participant sends out an invitation to another participant to join a team.&lt;br /&gt;
* Whenever the invitee accepts the invitation, the student who issued the invitation gets a mail stating that the invitee has accepted his/her invitation&lt;br /&gt;
* Mail is also triggered when a student responds to a teammate advertisement.&lt;br /&gt;
&lt;br /&gt;
===Files modified in current project===&lt;br /&gt;
====Classes====&lt;br /&gt;
* controllers/import_file_controller&lt;br /&gt;
* controllers/submitted_content_controller&lt;br /&gt;
* controllers/invitation_controller&lt;br /&gt;
* helpers/import_file_helper&lt;br /&gt;
* helpers/participants_helper&lt;br /&gt;
* helpers/mailer_helper&lt;br /&gt;
&lt;br /&gt;
====About import_file_controller====&lt;br /&gt;
&lt;br /&gt;
This controller derives from the Application Controller. It states the functionality of importing any kind of file like csv, xls, doc into the application. It defines the import function which takes the 'session' and 'params' as output and provides success message on successful import. It also provides the functionality of specifying the delimiter in the file which is being imported. The ImportFile method defined in the controller reads the file row by row based on the model concerned.&lt;br /&gt;
&lt;br /&gt;
====About submitted_content_controller====&lt;br /&gt;
&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD operations on submitting the file or hyperlink for assignment. It provides functionality to download, create folder and delete folder after submission. It provides the functionality for submitting links and submitting hyperlinks separately.&lt;br /&gt;
&lt;br /&gt;
==== About invitation_controller ====&lt;br /&gt;
This controller also derives from the Application Controller. It states the CRUD as well as other basic operations when an invitation is sent by an user to any participant to join their team. It provides the functionality to send and accept invitations as well as to reject invitations and leave team.&lt;br /&gt;
&lt;br /&gt;
==== About import_file_helper ====&lt;br /&gt;
This is a helper file for the '''import_file_controller''' class which stores the attributes from the controller class as well as creates new users when user are created by importing a CSV file.&lt;br /&gt;
&lt;br /&gt;
==== About participants_helper ====&lt;br /&gt;
This is a helper file for the '''participants_controller''' class. It provides some of the basic functionalities that is required to create participants that are added to expertiza.&lt;br /&gt;
&lt;br /&gt;
==== About mailer_helper ====&lt;br /&gt;
This helper file is for the '''mailer''' class. Its creates the structure of the mail body that is needed by the mailer class to send mails. It also holds all the attributes that are required to send a mail.&lt;br /&gt;
&lt;br /&gt;
=== Files created in current project ===&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_join_invite_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_file_submission_plain.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_html.html.erb&lt;br /&gt;
* app/views/mailer/partials/_team_accept_invite_plain.html.erb&lt;br /&gt;
&lt;br /&gt;
===Drawbacks and Solutions===&lt;br /&gt;
&lt;br /&gt;
Drawback: Presently if users are added by adding them as participants to an assignment, the email for user creation is not sent.&lt;br /&gt;
&lt;br /&gt;
Solution: Moving the call to the mailer from users controller to the point where import file is called. Therefore regardless of the method of the user creation, email is sent to the new user.&lt;br /&gt;
&lt;br /&gt;
Drawback: In the existing implementation, mail functionality did not exist when a new submission was made by the user. Such mail functionality was required because a reviewer would be unaware of any new submission made by the user in the review period.&lt;br /&gt;
&lt;br /&gt;
Solution: Mail is sent to the reviewer specifying the assignment name and the round of review in which the submission was made. A link is also provided which takes the reviewer directly to expertiza.&lt;br /&gt;
&lt;br /&gt;
===Testing Details===&lt;br /&gt;
&lt;br /&gt;
===Scope for Future Improvement===&lt;br /&gt;
&lt;br /&gt;
===References===&lt;/div&gt;</summary>
		<author><name>Cbaruah</name></author>
	</entry>
</feed>