Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jw email and attachment admin specific #646

Merged
merged 2 commits into from Aug 25, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
17 changes: 10 additions & 7 deletions app/controllers/service_requests_controller.rb
Expand Up @@ -539,15 +539,18 @@ def send_service_provider_notifications(service_request, sub_service_requests) #
end

def send_admin_notifications(service_request, sub_service_requests)
@service_list_false = service_request.service_list(false)
@service_list_true = service_request.service_list(true)
@line_items = @service_request.line_items

xls = render_to_string action: 'show', formats: [:xlsx]

# Iterates through each SSR to find the correct admin email.
# Passes the correct SSR to display in the attachment and email.
sub_service_requests.each do |sub_service_request|
sub_service_request.organization.submission_emails_lookup.each do |submission_email|
Notifier.notify_admin(service_request, submission_email.email, xls, current_user).deliver

@service_list_false = service_request.service_list(false, nil, sub_service_request)
@service_list_true = service_request.service_list(true, nil, sub_service_request)

@line_items = sub_service_request.line_items
xls = render_to_string action: 'show', formats: [:xlsx]
display_ssr = sub_service_request
Notifier.notify_admin(service_request, submission_email.email, xls, current_user, display_ssr).deliver
end
end
end
Expand Down
4 changes: 2 additions & 2 deletions app/mailers/notifier.rb
Expand Up @@ -67,7 +67,7 @@ def notify_user(project_role, service_request, xls, approval, user_current)
mail(:to => email, :from => NO_REPLY_FROM, :subject => subject)
end

def notify_admin(service_request, submission_email_address, xls, user_current)
def notify_admin(service_request, submission_email_address, xls, user_current, ssr_to_be_displayed)
@notes = service_request.notes
@status = service_request.status
@role = 'none'
Expand All @@ -76,7 +76,7 @@ def notify_admin(service_request, submission_email_address, xls, user_current)
@protocol = service_request.protocol
@service_request = service_request
@service_requester_id = @service_request.sub_service_requests.first.service_requester_id
@ssrs_to_be_displayed = service_request.sub_service_requests
@ssrs_to_be_displayed = [ssr_to_be_displayed]

@portal_link = DASHBOARD_LINK + "/protocols/#{@protocol.id}"
@portal_text = "Administrators/Service Providers, Click Here"
Expand Down
24 changes: 13 additions & 11 deletions app/models/service_request.rb
Expand Up @@ -343,19 +343,21 @@ def set_visit_page page_passed, arm
page
end

def service_list(is_one_time_fee=nil, service_provider=nil)
items = []
case is_one_time_fee
when nil
items = line_items
when true
items = one_time_fee_line_items
when false
items = per_patient_per_visit_line_items
def service_list(is_one_time_fee=nil, service_provider=nil, admin_ssr=nil)
items = if service_provider
service_provider_line_items(service_provider, line_items)
elsif admin_ssr
admin_ssr.line_items
else
line_items
end

if service_provider
items = service_provider_line_items(service_provider, items)
items = if is_one_time_fee == true
items.select { |i| i.service.one_time_fee? }
elsif is_one_time_fee == false
items.select { |i| !i.service.one_time_fee? }
else
items
end

groupings = {}
Expand Down
2 changes: 1 addition & 1 deletion app/views/service_requests/show.xlsx.axlsx
Expand Up @@ -42,7 +42,7 @@ wb.add_worksheet(name: "Review") do |sheet|
sheet.add_row ["Authorized Users"], :style => header_style
proxy_row = ["Name", "Role", "", "Proxy Rights"]

has_per_patient_per_visit_services = @sub_service_request.nil? ? (!@service_list_false.empty? && @service_request.has_per_patient_per_visit_services?) : (!@service_list_false.empty? && @sub_service_request.has_per_patient_per_visit_services?)
has_per_patient_per_visit_services = @sub_service_request.nil? ? (!@service_list_false.empty? && @service_request.has_per_patient_per_visit_services?) : (!@service_list_false.empty?)

visit_count = 0
if has_per_patient_per_visit_services
Expand Down
11 changes: 8 additions & 3 deletions spec/mailers/notifier/get_a_cost_estimate_spec.rb
Expand Up @@ -138,17 +138,22 @@
notable_id: service_request.id)
end
let(:xls) { ' ' }
let(:submission_email_address) { 'success@musc.edu' }
let!(:submission_email) { create(:submission_email,
email: 'success@musc.edu',
organization_id: organization.id) }

let(:mail) { Notifier.notify_admin(service_request,
submission_email_address,
submission_email,
xls,
identity) }
identity,
service_request.protocol.sub_service_requests.first) }
# Expected admin message is defined under get_a_cost_estimate_service_provider_admin_message
it 'should display admin intro message, link, conclusion, and should not display acknowledgments' do
get_a_cost_estimate_intro_for_admin
end

it 'should render default tables' do
service_request.protocol.sub_service_requests.first.update_attribute(:organization_id, organization.id)
assert_notification_email_tables_for_admin
end

Expand Down
22 changes: 16 additions & 6 deletions spec/mailers/notifier/submitted_spec.rb
Expand Up @@ -134,18 +134,23 @@
context 'admin' do

let(:xls) { ' ' }
let(:submission_email_address) { 'success@musc.edu' }
let!(:submission_email) { create(:submission_email,
email: 'success@musc.edu',
organization_id: organization.id) }

let(:mail) { Notifier.notify_admin(service_request,
submission_email_address,
submission_email,
xls,
identity) }
identity,
service_request.protocol.sub_service_requests.first) }

# Expected admin message is defined under submitted_service_provider_and_admin_message
it 'should display admin intro message, conclusion, link, and should not display acknowledgments' do
submitted_intro_for_service_providers_and_admin(mail.body.parts.first.body)
end

it 'should render default tables' do
service_request.protocol.sub_service_requests.first.update_attribute(:organization_id, organization.id)
assert_notification_email_tables_for_admin
end

Expand Down Expand Up @@ -229,17 +234,22 @@

context 'admin' do
let(:xls) { ' ' }
let(:submission_email_address) { 'success@musc.edu' }
let!(:submission_email) { create(:submission_email,
email: 'success@musc.edu',
organization_id: organization.id) }

let(:mail) { Notifier.notify_admin(service_request,
submission_email_address,
submission_email,
xls,
identity) }
identity,
service_request.protocol.sub_service_requests.first) }
# Expected service provider message is defined under submitted_service_provider_and_admin_message
it 'should display admin intro message, conclusion, link, and should not display acknowledgments' do
submitted_intro_for_service_providers_and_admin(mail.body.parts.first.body)
end

it 'should render default tables' do
service_request.protocol.sub_service_requests.first.update_attribute(:organization_id, organization.id)
assert_notification_email_tables_for_admin
end

Expand Down
11 changes: 5 additions & 6 deletions spec/support/emails/tables.rb
Expand Up @@ -52,12 +52,11 @@ def assert_email_srid_information_for_admin
# Expect table to show all SSR's with hyper-link
expect(mail.body.parts.first.body).to have_xpath "//table//strong[text()='Service Request Information']"
expect(mail.body.parts.first.body).to have_xpath "//th[text()='SRID']/following-sibling::th[text()='Organization']/following-sibling::th[text()='Status']"

service_request.protocol.sub_service_requests.each do |ssr|
status = AVAILABLE_STATUSES[ssr.status]
expect(mail.body.parts.first.body).to have_xpath "//td//a[@href='/dashboard/sub_service_requests/#{ssr.id}']['#{ssr.display_id}']/@href"
expect(mail.body.parts.first.body).to have_xpath "//td[text()='#{ssr.org_tree_display}']/following-sibling::td[text()='#{status}']"
end
# Only display SSRs that are associated with that submission email
displayed_service_request = service_request.protocol.sub_service_requests.first
status = AVAILABLE_STATUSES[displayed_service_request.status]
expect(mail.body.parts.first.body).to have_xpath "//td//a[@href='/dashboard/sub_service_requests/#{displayed_service_request.id}']['#{displayed_service_request.display_id}']/@href"
expect(mail.body.parts.first.body).to have_xpath "//td[text()='#{displayed_service_request.org_tree_display}']/following-sibling::td[text()='#{status}']"
end

def assert_email_srid_information_for_user
Expand Down