Class: VAProfile::MilitaryPersonnel::ServiceHistoryResponse
- Inherits:
-
Response
show all
- Defined in:
- lib/va_profile/military_personnel/service_history_response.rb
Constant Summary
Common::Client::Concerns::ServiceStatus::RESPONSE_STATUS
Instance Attribute Summary
Attributes inherited from Common::Base
#errors_hash, #metadata
Class Method Summary
collapse
Methods inherited from Response
#cache?, #initialize, #metadata, #ok?, #response_status
#changed, #changed?, #changes, default_sort, filterable_attributes, #initialize, max_per_page, per_page, sortable_attributes
Class Method Details
.from(current_user, raw_response = nil) ⇒ Object
11
12
13
14
15
16
17
18
19
20
21
22
|
# File 'lib/va_profile/military_personnel/service_history_response.rb', line 11
def self.from(current_user, raw_response = nil)
body = raw_response&.body
episodes = []
episodes += get_military_service_episodes(body)
episodes += get_academy_attendance_episodes(body) if include_academy_attendance?(current_user)
new(
raw_response&.status,
episodes: episodes ? sort_by_begin_date(episodes) : episodes
)
end
|
.get_academy_attendance_episodes(body) ⇒ Object
.get_episodes(body, episode_type) ⇒ Object
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/va_profile/military_personnel/service_history_response.rb', line 32
def self.get_episodes(body, episode_type)
return nil unless body && episode_type
episodes = body&.dig(
'profile',
'military_person',
'military_service_history',
episode_type)
episodes&.map { |e| VAProfile::Models::ServiceHistory.build_from(e, episode_type) }
end
|
.get_military_service_episodes(body) ⇒ Object
.include_academy_attendance?(current_user) ⇒ Boolean
48
49
50
|
# File 'lib/va_profile/military_personnel/service_history_response.rb', line 48
def self.include_academy_attendance?(current_user)
Flipper.enabled?(:profile_show_military_academy_attendance, current_user)
end
|
.sort_by_begin_date(service_episodes) ⇒ Object
44
45
46
|
# File 'lib/va_profile/military_personnel/service_history_response.rb', line 44
def self.sort_by_begin_date(service_episodes)
service_episodes.sort_by { |se| se.begin_date || Time.zone.today + 3650 }
end
|