CSC/ECE 517 Fall 2019 - E1940. Improving email notification: Difference between revisions
No edit summary |
No edit summary |
||
Line 15: | Line 15: | ||
*Issue3: Adding relevant links to reminder emails. | *Issue3: Adding relevant links to reminder emails. | ||
====Issue 1 - New user email==== | ====Issue 1 (717) - New user email==== | ||
'''app/models/assignment_participant.rb''' | '''app/models/assignment_participant.rb''' | ||
Line 25: | Line 25: | ||
</pre> | </pre> | ||
====Issue2 - No submission email to reviewer after deadline==== | ====Issue2 (345)- No submission email to reviewer after deadline==== | ||
*'''Before fixing this issue, we had to write the logic to send emails to reviewers on submissions.''' | *'''Before fixing this issue, we had to write the logic to send emails to reviewers on submissions.''' | ||
Line 116: | Line 116: | ||
</pre> | </pre> | ||
====Issue3 - Adding relevant links to reminder emails.==== | ====Issue3 (111)- Adding relevant links to reminder emails.==== | ||
*Modified function email_remainder to add functionality. | *Modified function email_remainder to add functionality. | ||
Line 148: | Line 148: | ||
end | end | ||
</pre> | </pre> | ||
===Test Plan=== | |||
====Issue 1==== | |||
Step 1: Navigate to Manage --> Assignment page. | |||
Step 2: Click on add participants for any of the assignments. | |||
Step 3: "Import" course participants. | |||
Step 4: Choose a csv file to be imported (follow the format given on the website). | |||
Step 5: The users mentioned in the csv file and don't exist on Expertiza should get a new user email. | |||
Step 6: To check e-mail is received or not, log in with following credentials: username [ 'expertiza.development@gmail.com' ] password [ 'qwer@1234' ]. | |||
====Issue 2==== | |||
Step 1: Create new assignment [Manage/Assignment/+ Button (to create new assignment)] | |||
Step 2: Fill the details for the assignments. | |||
Step 3: Navigate to due dates. | |||
Step 4: Change the number of review rounds to 2. | |||
Step 5: Select "Yes" in the dropdown for review allowed for submission. | |||
Step 6: Add the user to the assignment. | |||
Step 7: Log in with some user credentials (author credential). | |||
Step 8: Make a new submission to this assignment. | |||
Step 9: Log in with another user (reviewer). | |||
Step 10: Submit a review to the assignment submission. | |||
Step 11: Login as an author again. | |||
Step 12: Edit the submission. | |||
Step 13: After this check the mailbox of the reviewer [development mail for development]. | |||
Step 14: Reviewer should get the mail to re-review the work. | |||
Step 15: Change the due date to some date and time which has passed. | |||
Step 16: Now making a new submission from the author account should not send a re-review mail to the reviewer. [Repeat steps 7-15]. | |||
====Issue 3==== | |||
This test requires an approaching deadline scenario. Since the reminder mail goes through as a sidekiq background, the part of this issue was to fix the email link. | |||
Create a new scenario with an approaching deadline. The email is sent already, just the link is fixed. | |||
===Team Member Details=== | ===Team Member Details=== |
Revision as of 03:33, 7 November 2019
E1940 Improving e-mail notification
Brief Introduction
- E1940 Improving e-mail notification.
- The forked git repository for this project can be found [1]
Problem Statement
The following tasks were accomplished in this project:
- Issue1: Send new account welcome email to user, when imported from CSV through assignment page.
- Issue2: Don't send email to reviewers for a new submission after review deadline has passed.
- Issue3: Adding relevant links to reminder emails.
Issue 1 (717) - New user email
app/models/assignment_participant.rb
- Call method to send mail after user imported successfully.
password = user.reset_password MailerHelper.send_mail_to_user(user, "Your Expertiza account has been created.", "user_welcome", password).deliver
Issue2 (345)- No submission email to reviewer after deadline
- Before fixing this issue, we had to write the logic to send emails to reviewers on submissions.
app/controllers/submitted_content_controller.rb
- Added the logic to check for last review date to the function submit_hyperlink
# get current date and time cur_date = Time.now # get the last due date for the review max_due_date = DueDate.where(parent_id: @participant.assignment.id,deadline_type_id: 2).maximum("due_at") # send mail only if the last due date has not passed if cur_date <= max_due_date email_submission_reviewers(@participant) end
- Function to identify the reviewers and send mails.
def email_submission_reviewers(participant) if participant.reviewers.length != 0 participant.reviewers.each do |reviewer| rev_res_map = ReviewResponseMap.where(['reviewer_id = ? and reviewee_id = ?', reviewer.id, participant.team.id]).first all_responses = Response.where(:map_id => rev_res_map.id).order("updated_at DESC").first user = User.find(reviewer.user_id) if user.email_on_submission? MailerHelper.submission_mail_to_reviewr(user, "New submission available to review.", "update").deliver end end end end
app/helpers/mailer_helper.rb
- Helper function to mail reviewers
def self.submission_mail_to_reviewr(user, subject, mail_partial) Mailer.notify_reviewer_for_new_submission ({ to: user.email, subject: subject, body: { user: user, #first_name: ApplicationHelper.get_user_first_name(user), message: "", partial_name: mail_partial } }) end
app/mailers/mailer.rb
- Mailer function to send the mail.
def notify_reviewer_for_new_submission(defn) @partial_name = defn[:body][:partial_name] @user = defn[:body][:user] #@first_name = defn[:body][:first_name] @message = defn[:body][:message] mail(subject: defn[:subject], to: defn[:to]) end
app/views/mailer/notify_reviewer_for_new_submission.erb
- Email template for the mail
<!DOCTYPE html> <html> <head> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type' /> </head> <body> <%= render :partial => 'mailer/partials/'+@partial_name+'_html' %> <hr> </body> </html>
Issue3 (111)- Adding relevant links to reminder emails.
- Modified function email_remainder to add functionality.
app/mailers/mail_worker.rb
def email_reminder(emails, deadline_type) assignment = Assignment.find(self.assignment_id) subject = "Message regarding #{deadline_type} for assignment #{assignment.name}" body = "This is a reminder to complete #{deadline_type} for assignment #{assignment.name}. \ Deadline is #{self.due_at}.If you have already done the #{deadline_type}, Please ignore this mail." body = "This is a reminder to complete #{deadline_type} for assignment #{assignment.name}." emails.each do |mail| user = User.where({email: mail}).first participant_assignment_id = Participant.where(user_id: user.id, parent_id: self.assignment_id).id link_to_destination = "Please follow the lilnk: http://expertiza.ncsu.edu/student_task/view?id=#{participant_assignment_id}" body = body + link_to_destination + " Deadline is #{self.due_at}.If you have already done the #{deadline_type}, Please ignore this mail."; @mail = Mailer.delayed_message(bcc: mail, subject: subject, body: body) @mail.deliver_now Rails.logger.info mail end @mail = Mailer.delayed_message(bcc: emails, subject: subject, body: body) @mail.deliver_now end
Test Plan
Issue 1
Step 1: Navigate to Manage --> Assignment page.
Step 2: Click on add participants for any of the assignments.
Step 3: "Import" course participants.
Step 4: Choose a csv file to be imported (follow the format given on the website).
Step 5: The users mentioned in the csv file and don't exist on Expertiza should get a new user email.
Step 6: To check e-mail is received or not, log in with following credentials: username [ 'expertiza.development@gmail.com' ] password [ 'qwer@1234' ].
Issue 2
Step 1: Create new assignment [Manage/Assignment/+ Button (to create new assignment)]
Step 2: Fill the details for the assignments.
Step 3: Navigate to due dates.
Step 4: Change the number of review rounds to 2.
Step 5: Select "Yes" in the dropdown for review allowed for submission.
Step 6: Add the user to the assignment.
Step 7: Log in with some user credentials (author credential).
Step 8: Make a new submission to this assignment.
Step 9: Log in with another user (reviewer).
Step 10: Submit a review to the assignment submission.
Step 11: Login as an author again.
Step 12: Edit the submission.
Step 13: After this check the mailbox of the reviewer [development mail for development].
Step 14: Reviewer should get the mail to re-review the work.
Step 15: Change the due date to some date and time which has passed.
Step 16: Now making a new submission from the author account should not send a re-review mail to the reviewer. [Repeat steps 7-15].
Issue 3
This test requires an approaching deadline scenario. Since the reminder mail goes through as a sidekiq background, the part of this issue was to fix the email link.
Create a new scenario with an approaching deadline. The email is sent already, just the link is fixed.
Team Member Details
Team members :
- Adarsh Trivedi (atrived)
- Dheeraj Makam (drmakam)
- Prachi Sheoran (psheora)