ecoportal-api 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ecoportal/api/internal/person.rb +4 -0
- data/lib/ecoportal/api/v1/person.rb +13 -3
- data/lib/ecoportal/api/v1/person_details.rb +9 -5
- data/lib/ecoportal/api/v1/person_schema.rb +8 -0
- data/lib/ecoportal/api/v1/schema_field.rb +25 -0
- data/lib/ecoportal/api/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5d6dca34058f1a8327546f9a16051e7e22607240ccdf26efe235a8b1555aef9f
|
4
|
+
data.tar.gz: 35dbaf562e87ac39583829425fd29609af248ca72c60c5ad0af4a6bbd137bfab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b3ea796e5f1d38a7976ca5505ee133c14b9b6c14bed25bd12589c2ba7811c54fad0d20a57eb33c1ce3ec53d18710457cde9ffa6de0f00403d07826d6ee6319ea
|
7
|
+
data.tar.gz: 616eb8844afcdf4903ac3005e1ea336a82ccd139fbeac96767b1bd5a2a258f4ce6851e896705e82aae511cd9bc749685d3a4c583eb7186950de3fea4b3a94196
|
@@ -39,13 +39,23 @@ module Ecoportal
|
|
39
39
|
return details
|
40
40
|
end
|
41
41
|
|
42
|
-
def add_details(
|
43
|
-
self.details
|
44
|
-
|
42
|
+
def add_details(schema_or_id)
|
43
|
+
self.details = person_details_class.new
|
44
|
+
case schema_or_id
|
45
|
+
when person_schema_class
|
46
|
+
schema_or_id.initialize_details(self.details)
|
47
|
+
when String
|
48
|
+
self.details.schema_id = schema_id
|
49
|
+
end
|
50
|
+
self.details
|
45
51
|
end
|
46
52
|
|
47
53
|
private
|
48
54
|
|
55
|
+
def person_schema_class
|
56
|
+
V1::PersonSchema
|
57
|
+
end
|
58
|
+
|
49
59
|
def person_details_class
|
50
60
|
V1::PersonDetails
|
51
61
|
end
|
@@ -25,17 +25,21 @@ module Ecoportal
|
|
25
25
|
@fields_by_alt_id = {}
|
26
26
|
fields.each do |wrapped|
|
27
27
|
@fields_by_id[wrapped.id] = wrapped
|
28
|
-
@
|
28
|
+
@fields_by_alt_id[wrapped.alt_id] = wrapped
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
def
|
32
|
+
def get_field(id)
|
33
33
|
@fields_by_id or index_fields
|
34
|
-
|
34
|
+
@fields_by_id[id] || @fields_by_alt_id[id]
|
35
|
+
end
|
36
|
+
|
37
|
+
def [](id)
|
38
|
+
get_field(id)&.value
|
35
39
|
end
|
40
|
+
|
36
41
|
def []=(id, value)
|
37
|
-
|
38
|
-
if field = (@fields_by_id[id] || @fields_by_alt_id[id])
|
42
|
+
if field = get_field(id)
|
39
43
|
field.value = value
|
40
44
|
end
|
41
45
|
end
|
@@ -34,6 +34,14 @@ module Ecoportal
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
+
def initialize_details(details)
|
38
|
+
details.doc["fields"] = fields.map do |field|
|
39
|
+
field.doc.slice(*%w[id alt_id name multiple type shared]).merge(
|
40
|
+
"value" => field.multiple ? [] : nil
|
41
|
+
)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
37
45
|
private
|
38
46
|
|
39
47
|
def schema_field_class
|
@@ -3,6 +3,31 @@ module Ecoportal
|
|
3
3
|
class V1
|
4
4
|
class SchemaField < Common::BaseModel
|
5
5
|
passthrough :id, :alt_id, :name, :optional, :shared, :multiple, :type, :options, to: :doc
|
6
|
+
|
7
|
+
def parse_text(value)
|
8
|
+
values = [*value.to_s.lines].map do |line|
|
9
|
+
line = line.chomp
|
10
|
+
next if line == ""
|
11
|
+
case type
|
12
|
+
when "text", "phone_number"
|
13
|
+
line
|
14
|
+
when "number"
|
15
|
+
Float(line) rescue return nil, false
|
16
|
+
when "boolean"
|
17
|
+
%w[true TRUE True Y y YES X x].include?(line)
|
18
|
+
when "select"
|
19
|
+
return nil, false unless options.include?(line)
|
20
|
+
line
|
21
|
+
when "date"
|
22
|
+
Date.parse(line) rescue return nil, false
|
23
|
+
end
|
24
|
+
end.compact
|
25
|
+
if multiple
|
26
|
+
return values, true
|
27
|
+
else
|
28
|
+
return values.first, true
|
29
|
+
end
|
30
|
+
end
|
6
31
|
end
|
7
32
|
end
|
8
33
|
end
|