• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pulibrary / orangelight / 4c391e0e-519a-40cb-8ad3-354445f4ce03

12 Aug 2025 08:47PM UTC coverage: 85.348% (-10.0%) from 95.335%
4c391e0e-519a-40cb-8ad3-354445f4ce03

push

circleci

web-flow
[#5143] Use access restriction note as Aeon ItemInfo1 if available (#5173)

With this commit, if a user visits a record with an access
restrictions note and presses the Reading Room Request
button, they will get to an Aeon form with the 'Restrictions'
field pre-filled with the restriction note.

If the record does not have an access restrictions note,
the field will be pre-filled with 'Reading Room Access Only',
as it has been previously.

Closes #5143

5493 of 6436 relevant lines covered (85.35%)

251.82 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

83.92
/app/mailers/requests/request_mailer.rb
1
# frozen_string_literal: true
2
module Requests
1✔
3
  class RequestMailer < ApplicationMailer
1✔
4
    include Requests::Bibdata
1✔
5
    helper "requests/application"
1✔
6

7
    def digitize_fill_in_confirmation(submission)
1✔
8
      @submission = Submission.new_from_hash submission
×
9
      @delivery_mode = "edd"
×
10
      subject = I18n.t('requests.paging.email_subject', pick_up_location: "Digitization")
×
11
      destination_email = @submission.email
×
12
      mail(to: destination_email,
×
13
           from: I18n.t('requests.default.email_from'),
14
           subject:)
15
    end
16

17
    def paging_email(submission)
1✔
18
      @submission = Submission.new_from_hash submission
1✔
19
      pick_ups = paging_pick_ups(submission: @submission)
1✔
20
      subject = I18n.t('requests.paging.email_subject', pick_up_location: pick_ups.join(", "))
1✔
21
      destination_email = "fstpage@princeton.edu"
1✔
22
      mail(to: destination_email,
1✔
23
           from: I18n.t('requests.default.email_from'),
24
           subject:)
25
    end
26

27
    def paging_confirmation(submission)
1✔
28
      @submission = Submission.new_from_hash submission
1✔
29
      pick_ups = paging_pick_ups(submission: @submission)
1✔
30
      subject = I18n.t('requests.paging.email_subject', pick_up_location: pick_ups.join(", "))
1✔
31
      destination_email = @submission.email
1✔
32
      mail(to: destination_email,
1✔
33
           from: I18n.t('requests.default.email_from'),
34
           subject:)
35
    end
36

37
    def pres_email(submission)
1✔
38
      request_email(submission:, subject_key: 'requests.pres.email_subject', destination_key: 'requests.pres.email')
×
39
    end
40

41
    def pres_confirmation(submission)
1✔
42
      confirmation_email(submission:, subject_key: 'requests.pres.email_subject')
×
43
    end
44

45
    def annex_email(submission)
1✔
46
      @submission = Submission.new_from_hash submission
4✔
47
      destination_email = annex_email_destinations(submission: @submission)
4✔
48
      mail(to: destination_email,
4✔
49
           from: I18n.t('requests.default.email_from'),
50
           subject: I18n.t('requests.annex.email_subject'))
51
    end
52

53
    def annex_confirmation(submission)
1✔
54
      confirmation_email(submission:, subject_key: 'requests.annex.email_subject')
4✔
55
    end
56

57
    def annex_in_library_email(submission)
1✔
58
      @submission = Submission.new_from_hash submission
1✔
59
      mail(to: I18n.t('requests.annex.email'),
1✔
60
           from: I18n.t('requests.default.email_from'),
61
           subject: I18n.t('requests.annex_in_library.email_subject'))
62
    end
63

64
    def annex_in_library_confirmation(submission)
1✔
65
      confirmation_email(submission:, subject_key: 'requests.annex_in_library.email_subject')
1✔
66
    end
67

68
    def annex_edd_email(submission); end
1✔
69

70
    def annex_edd_confirmation(submission)
1✔
71
      confirmation_email(submission:, subject_key: 'requests.recap_edd.email_subject', partial: 'recap_edd_confirmation')
1✔
72
    end
73

74
    # temporary changes issue 438
75
    def on_shelf_email(submission)
1✔
76
      @submission = Submission.new_from_hash submission
5✔
77
      location_email = get_location_contact_email(@submission.items.first[:location_code])
5✔
78
      # Location and destination are the same forthe moment
79
      # destination_email = I18n.t('requests.on_shelf.email')
80
      subject = "#{I18n.t('requests.on_shelf.email_subject')} (#{@submission.items.first[:location_code].upcase}) #{@submission.items.first[:call_number]}"
5✔
81
      mail(to: location_email,
5✔
82
           # cc: destination_email,
83
           from: I18n.t('requests.default.email_from'),
84
           subject:)
85
    end
86

87
    # temporary changes issue 438
88
    def on_shelf_confirmation(submission)
1✔
89
      @submission = Submission.new_from_hash submission
5✔
90
      destination_email = @submission.email
5✔
91
      subject = "#{Requests::BibdataService.delivery_locations[@submission.items.first['pick_up']]['label']} #{I18n.t('requests.on_shelf.email_subject_patron')}"
5✔
92
      mail(to: destination_email,
5✔
93
           from: I18n.t('requests.default.email_from'),
94
           subject:)
95
    end
96

97
    def on_order_email(submission)
1✔
98
      destination_key = 'requests.default.email_destination'
2✔
99
      request_email(submission:, subject_key: 'requests.on_order.email_subject', destination_key:)
2✔
100
    end
101

102
    def on_order_confirmation(submission)
1✔
103
      confirmation_email(submission:, subject_key: 'requests.on_order.email_subject')
2✔
104
    end
105

106
    def in_process_email(submission)
1✔
107
      destination_key = 'requests.default.email_destination'
5✔
108
      request_email(submission:, subject_key: 'requests.in_process.email_subject', destination_key:)
5✔
109
    end
110

111
    def in_process_confirmation(submission)
1✔
112
      confirmation_email(submission:, subject_key: 'requests.in_process.email_subject')
5✔
113
    end
114

115
    def recap_no_items_email(submission)
1✔
116
      request_email(submission:, subject_key: 'requests.recap_no_items.email_subject', destination_key: 'requests.recap_no_items.email')
×
117
    end
118

119
    def recap_no_items_confirmation(submission)
1✔
120
      @submission = Submission.new_from_hash submission
×
121
      destination_email = @submission.email
×
122
      subject = I18n.t('requests.recap.email_subject')
×
123
      mail(to: destination_email,
×
124
           from: I18n.t('requests.default.email_from'),
125
           subject:)
126
    end
127

128
    def digitize_email(submission)
1✔
129
      # TODO: what should we do here
130
    end
131

132
    def digitize_confirmation(submission)
1✔
133
      confirmation_email(submission:, subject_key: 'requests.digitize.email_subject', from_key: 'requests.digitize.email_from')
1✔
134
    end
135

136
    def interlibrary_loan_confirmation(submission)
1✔
137
      confirmation_email(submission:, subject_key: 'requests.interlibrary_loan.email_subject', from_key: 'requests.interlibrary_loan.email_from')
3✔
138
    end
139

140
    def recap_confirmation(submission)
1✔
141
      subject_key = 'requests.recap.email_subject'
3✔
142

143
      confirmation_email(submission:, subject_key:)
3✔
144
    end
145

146
    def recap_marquand_edd_email(submission); end
1✔
147

148
    def recap_marquand_edd_confirmation(submission)
1✔
149
      confirmation_email(submission:, subject_key: 'requests.recap_edd.email_subject', partial: 'recap_edd_confirmation')
×
150
    end
151

152
    def recap_marquand_in_library_email(submission); end
1✔
153

154
    def recap_marquand_in_library_confirmation(submission)
1✔
155
      confirmation_email(submission:, subject_key: 'requests.recap_in_library.email_subject')
×
156
    end
157

158
    def recap_in_library_email(submission)
1✔
159
      # only send an email to the libraries if this is a marquand request
160
      request_email(submission:, subject_key: 'requests.recap_marquand.email_subject', destination_key: 'requests.recap_marquand.email_destination') if Submission.new_from_hash(submission).marquand?
1✔
161
    end
162

163
    def recap_in_library_confirmation(submission)
1✔
164
      subject_key = 'requests.recap_in_library.email_subject'
1✔
165

166
      confirmation_email(submission:, subject_key:)
1✔
167
    end
168

169
    def recap_edd_confirmation(submission)
1✔
170
      confirmation_email(submission:, subject_key: 'requests.recap_edd.email_subject')
2✔
171
    end
172

173
    def clancy_in_library_email(submission)
1✔
174
      request_email(submission:, subject_key: 'requests.clancy_in_library.email_subject', destination_key: 'requests.clancy_in_library.email_destination')
1✔
175
    end
176

177
    def clancy_in_library_confirmation(submission)
1✔
178
      confirmation_email(submission:, subject_key: 'requests.clancy_in_library.confirmation_subject')
1✔
179
    end
180

181
    def clancy_unavailable_edd_email(submission)
1✔
182
      request_email(submission:, subject_key: 'requests.clancy_unavailable_edd.email_subject', destination_key: 'requests.clancy_unavailable_edd.email_destination')
×
183
    end
184

185
    def clancy_unavailable_edd_confirmation(submission)
1✔
186
      confirmation_email(submission:, subject_key: 'requests.clancy_unavailable_edd.confirmation_subject')
×
187
    end
188

189
    def clancy_edd_email(submission)
1✔
190
      request_email(submission:, subject_key: 'requests.clancy_edd.email_subject', destination_key: 'requests.clancy_edd.email_destination')
1✔
191
    end
192

193
    def clancy_edd_confirmation(submission)
1✔
194
      confirmation_email(submission:, subject_key: 'requests.clancy_edd.confirmation_subject')
1✔
195
    end
196

197
    def marquand_edd_email(submission)
1✔
198
      request_email(submission:, subject_key: 'requests.marquand_edd.email_subject', destination_key: 'requests.marquand_edd.email_destination')
×
199
    end
200

201
    def marquand_edd_confirmation(submission)
1✔
202
      confirmation_email(submission:, subject_key: 'requests.marquand_edd.confirmation_subject')
×
203
    end
204

205
    def marquand_in_library_email(submission)
1✔
206
      request_email(submission:, subject_key: 'requests.marquand_in_library.email_subject', destination_key: 'requests.marquand_in_library.email_destination')
1✔
207
    end
208

209
    def marquand_in_library_confirmation(submission)
1✔
210
      confirmation_email(submission:, subject_key: 'requests.marquand_in_library.confirmation_subject')
1✔
211
    end
212

213
    def service_error_email(errors, submission)
1✔
214
      @submission = Submission.new_from_hash submission
3✔
215
      @errors = errors
3✔
216
      error_types = @errors.flat_map { |_key, value| value }.pluck(:type).uniq
6✔
217
      destination_email = if error_types.include?("digitize")
3✔
218
                            I18n.t('requests.digitize.invalid_patron.email')
2✔
219
                          else
220
                            I18n.t('requests.error.service_error_email')
1✔
221
                          end
222
      mail(to: destination_email,
3✔
223
           from: I18n.t('requests.default.email_from'),
224
           subject: I18n.t('requests.error.service_error_subject'))
225
    end
226

227
    def invalid_illiad_patron_email(user_attributes, transaction_attributes)
1✔
228
      @user_attributes = user_attributes
×
229
      @transaction_attributes = transaction_attributes
×
230
      destination_email = I18n.t('requests.digitize.invalid_patron.email')
×
231
      mail(to: destination_email,
×
232
           from: I18n.t('requests.default.email_from'),
233
           subject: I18n.t('requests.digitize.invalid_patron.subject'))
234
    end
235

236
    private
1✔
237

238
      def confirmation_email(submission:, subject_key:, from_key: 'requests.default.email_from', partial: nil)
1✔
239
        @submission = Submission.new_from_hash submission
26✔
240
        destination_email = @submission.email
26✔
241
        subject = I18n.t(subject_key)
26✔
242
        mail(to: destination_email,
26✔
243
             from: I18n.t(from_key),
244
             subject:,
245
             template_name: partial)
246
      end
247

248
      def request_email(submission:, subject_key:, destination_key: 'requests.default.email_destination', from_key: 'requests.default.email_from')
1✔
249
        @submission = Submission.new_from_hash submission
10✔
250
        destination_email = I18n.t(destination_key)
10✔
251
        mail(to: destination_email,
10✔
252
             from: I18n.t(from_key),
253
             subject: I18n.t(subject_key))
254
      end
255

256
      def paging_pick_ups(submission:)
1✔
257
        @delivery_mode = submission.items[0]["delivery_mode_#{submission.items[0]['mfhd']}"]
2✔
258
        if @delivery_mode == "edd"
2✔
259
          ["Digitization"]
×
260
        else
261
          @submission.items.map { |item| Requests::BibdataService.delivery_locations[item["pick_up"]]["label"] }
4✔
262
        end
263
      end
264

265
      def annex_email_destinations(submission:)
1✔
266
        annex_items(submission:).map do |item|
4✔
267
          if item["location_code"] == 'annex$doc'
4✔
268
            I18n.t('requests.anxadoc.email')
1✔
269
          else
270
            I18n.t('requests.annex.email')
3✔
271
          end
272
        end
273
      end
274

275
      def annex_items(submission:)
1✔
276
        submission.items.select { |item| item["type"] == 'annex' }
8✔
277
      end
278
  end
279
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc