1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
class TriggerController < ApplicationController
def voicemail
if !params[:sip_account_id].blank?
sip_account = SipAccount.where(:id => params[:sip_account_id].to_i).first
if sip_account
sip_account.voicemail_messages.where(:notification => nil).each do |message|
message.notification = false
message.save
if !File.exists?( message.file_path )
next
end
user = sip_account.sip_accountable
if user.class != User
next
end
if user.email.blank?
next
end
voicemail_settings = sip_account.voicemail_setting
if !voicemail_settings
voicemail_settings = VoicemailSetting.new(:notify => user.send_voicemail_as_email_attachment, :attachment => user.send_voicemail_as_email_attachment, :mark_read => user.send_voicemail_as_email_attachment)
end
message.notification = voicemail_settings.notify
if voicemail_settings.notify
if Notifications.new_voicemail(message, voicemail_settings.attachment).deliver
if voicemail_settings.purge
message.delete
next
end
message.save
if voicemail_settings.mark_read
message.mark_read
end
end
else
message.save
end
end
# Indicate a new voicemail in the navigation bar.
#
PrivatePub.publish_to("/users/#{user.id}/messages/new", "$('#new_voicemail_indicator').hide.delay(250).show('slow').hide.delay(250).show('slow');")
render(
:status => 200,
:layout => false,
:content_type => 'text/plain',
:text => "<!-- OK -->",
)
else
render(
:status => 404,
:layout => false,
:content_type => 'text/plain',
:text => "<!-- Account not found -->",
)
end
end
end
def fax
if !params[:fax_account_id].blank?
fax_account = FaxAccount.where(:id => params[:fax_account_id].to_i).first
errors = Array.new()
if fax_account
fax_account.fax_documents.where(:state => 'received').each do |fax_document|
pdf_file = fax_document.tiff_to_pdf
if !pdf_file
errors << "#{fax_document.tiff} cound not be converted"
fax_document.state = 'unsuccessful'
fax_document.save
next
end
working_path, tiff_file = File.split(fax_document.tiff)
if fax_document.store_dir != working_path
FileUtils.mkdir(fax_document.store_dir)
FileUtils.mv(fax_document.tiff, fax_document.store_dir)
fax_document.tiff = "#{fax_document.store_dir}/#{tiff_file}"
end
fax_document.document = File.open(pdf_file)
fax_document.state = 'successful'
if fax_document.save
Notifications.new_fax(fax_document).deliver
begin
File.delete(pdf_file)
rescue => e
logger.error "PDF fax file could not be deleted: #{pdf_file} => #{e.inspect}"
errors << "#{pdf_file} cound not be deleted"
end
fax_document.save
fax_document.render_thumbnails
else
errors << "#{fax_document.id} cound not be saved"
fax_document.state = 'unsuccessful'
fax_document.save
end
end
else
errors << "fax_account=#{params[:fax_account_id]} not found"
end
if errors.count == 0
render(
:status => 200,
:layout => false,
:content_type => 'text/plain',
:text => "<!-- OK -->",
)
else
render(
:status => 501,
:layout => false,
:content_type => 'text/plain',
:text => "<!-- ERRORS: #{errors.join(', ')} -->",
)
end
end
end
end
|