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

pulibrary / orangelight / 00dbc10b-d747-4ad7-b211-7b26d753abbb

14 Aug 2025 01:25PM UTC coverage: 0.483% (-94.9%) from 95.343%
00dbc10b-d747-4ad7-b211-7b26d753abbb

push

circleci

web-flow
Merge pull request #5181 from pulibrary/dependabot/bundler/activestorage-7.2.2.2

Bump activestorage from 7.2.2.1 to 7.2.2.2

47 of 9721 relevant lines covered (0.48%)

0.01 hits per line

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

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

7
    def digitize_fill_in_confirmation(submission)
×
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)
×
18
      @submission = Submission.new_from_hash submission
×
19
      pick_ups = paging_pick_ups(submission: @submission)
×
20
      subject = I18n.t('requests.paging.email_subject', pick_up_location: pick_ups.join(", "))
×
21
      destination_email = "fstpage@princeton.edu"
×
22
      mail(to: destination_email,
×
23
           from: I18n.t('requests.default.email_from'),
×
24
           subject:)
×
25
    end
×
26

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

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

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

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

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

57
    def annex_in_library_email(submission)
×
58
      @submission = Submission.new_from_hash submission
×
59
      mail(to: I18n.t('requests.annex.email'),
×
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)
×
65
      confirmation_email(submission:, subject_key: 'requests.annex_in_library.email_subject')
×
66
    end
×
67

68
    def annex_edd_email(submission); end
×
69

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

74
    # temporary changes issue 438
75
    def on_shelf_email(submission)
×
76
      @submission = Submission.new_from_hash submission
×
77
      location_email = get_location_contact_email(@submission.items.first[:location_code])
×
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]}"
×
81
      mail(to: location_email,
×
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)
×
89
      @submission = Submission.new_from_hash submission
×
90
      destination_email = @submission.email
×
91
      subject = "#{Requests::BibdataService.delivery_locations[@submission.items.first['pick_up']]['label']} #{I18n.t('requests.on_shelf.email_subject_patron')}"
×
92
      mail(to: destination_email,
×
93
           from: I18n.t('requests.default.email_from'),
×
94
           subject:)
×
95
    end
×
96

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

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

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

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

115
    def recap_no_items_email(submission)
×
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)
×
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)
×
129
      # TODO: what should we do here
130
    end
×
131

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

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

140
    def recap_confirmation(submission)
×
141
      subject_key = 'requests.recap.email_subject'
×
142

143
      confirmation_email(submission:, subject_key:)
×
144
    end
×
145

146
    def recap_marquand_edd_email(submission); end
×
147

148
    def recap_marquand_edd_confirmation(submission)
×
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
×
153

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

158
    def recap_in_library_email(submission)
×
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?
×
161
    end
×
162

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

166
      confirmation_email(submission:, subject_key:)
×
167
    end
×
168

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

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

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

181
    def clancy_unavailable_edd_email(submission)
×
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)
×
186
      confirmation_email(submission:, subject_key: 'requests.clancy_unavailable_edd.confirmation_subject')
×
187
    end
×
188

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

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

197
    def marquand_edd_email(submission)
×
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)
×
202
      confirmation_email(submission:, subject_key: 'requests.marquand_edd.confirmation_subject')
×
203
    end
×
204

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

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

213
    def service_error_email(errors, submission)
×
214
      @submission = Submission.new_from_hash submission
×
215
      @errors = errors
×
216
      error_types = @errors.flat_map { |_key, value| value }.pluck(:type).uniq
×
217
      destination_email = if error_types.include?("digitize")
×
218
                            I18n.t('requests.digitize.invalid_patron.email')
×
219
                          else
×
220
                            I18n.t('requests.error.service_error_email')
×
221
                          end
×
222
      mail(to: destination_email,
×
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)
×
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
×
237

238
      def confirmation_email(submission:, subject_key:, from_key: 'requests.default.email_from', partial: nil)
×
239
        @submission = Submission.new_from_hash submission
×
240
        destination_email = @submission.email
×
241
        subject = I18n.t(subject_key)
×
242
        mail(to: destination_email,
×
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')
×
249
        @submission = Submission.new_from_hash submission
×
250
        destination_email = I18n.t(destination_key)
×
251
        mail(to: destination_email,
×
252
             from: I18n.t(from_key),
×
253
             subject: I18n.t(subject_key))
×
254
      end
×
255

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

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

275
      def annex_items(submission:)
×
276
        submission.items.select { |item| item["type"] == 'annex' }
×
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