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
|
class ExportTask
extend Enumerize
extend ActiveModel::Naming
extend ActiveModel::Translation
extend ActiveModel::Callbacks
include ActiveModel::Validations
include ActiveModel::Conversion
attr_accessor :start_date, :end_date
define_model_callbacks :initialize, only: :after
enumerize :data_format, in: %w( neptune netex gtfs hub kml )
attr_accessor :referential_id, :user_id, :user_name, :references_type, :data_format, :name, :projection_type, :reference_ids
validates_presence_of :referential_id
validates_presence_of :user_id
validates_presence_of :user_name
validates_presence_of :name
validates_presence_of :data_format
validate :period_validation
after_initialize :init_period
def initialize( params = {} )
run_callbacks :initialize do
params.each {|k,v| send("#{k}=",v)}
end
end
def period_validation
st_date = Date.parse(start_date) unless start_date.blank?
ed_date = Date.parse(end_date) unless end_date.blank?
unless Chouette::TimeTable.start_validity_period.nil? || st_date.nil?
tt_st_date = Chouette::TimeTable.start_validity_period
errors.add(:start_date, ExportTask.human_attribute_name("start_date_greater_than" , {:tt_st_date => tt_st_date})) unless tt_st_date <= st_date
end
unless st_date.nil? || ed_date.nil?
errors.add(:end_date, ExportTask.human_attribute_name("end_date_greater_than_start_date")) unless st_date <= ed_date
end
unless ed_date.nil? || Chouette::TimeTable.end_validity_period.nil?
tt_ed_date = Chouette::TimeTable.end_validity_period
errors.add(:end_date, ExportTask.human_attribute_name("end_date_less_than", {:tt_ed_date => tt_ed_date})) unless ed_date <= tt_ed_date
end
end
def init_period
unless Chouette::TimeTable.start_validity_period.nil?
if start_date.nil?
self.start_date = Chouette::TimeTable.start_validity_period
end
if end_date.nil?
self.end_date = Chouette::TimeTable.end_validity_period
end
end
end
def referential
Referential.find(referential_id)
end
def organisation
referential.organisation
end
def save
if self.valid?
# Call Iev Server
begin
Ievkit.create_job( referential.slug, "exporter", data_format, {
:file1 => params_io,
} )
rescue Exception => exception
raise exception
end
true
else
false
end
end
def self.data_formats
self.data_format.values
end
def self.references_types
self.references_type.values
end
def params
{}.tap do |h|
h["parameters"] = action_params
end
end
def action_params
{}
end
def params_io
file = StringIO.new( params.to_json )
Faraday::UploadIO.new(file, "application/json", "parameters.json")
end
end
|