Class: VAProfile::MilitaryPersonnel::ServiceHistoryResponse

Inherits:
Response show all
Defined in:
lib/va_profile/military_personnel/service_history_response.rb

Constant Summary

Constants included from Common::Client::Concerns::ServiceStatus

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

Methods inherited from Common::Base

#changed, #changed?, #changes, default_sort, filterable_attributes, #initialize, max_per_page, per_page, sortable_attributes

Constructor Details

This class inherits a constructor from VAProfile::Response

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



28
29
30
# File 'lib/va_profile/military_personnel/service_history_response.rb', line 28

def self.get_academy_attendance_episodes(body)
  get_episodes(body, VAProfile::Models::ServiceHistory::ACADEMY_ATTENDANCE_EPISODE) || []
end

.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



24
25
26
# File 'lib/va_profile/military_personnel/service_history_response.rb', line 24

def self.get_military_service_episodes(body)
  get_episodes(body, VAProfile::Models::ServiceHistory::MILITARY_SERVICE_EPISODE) || []
end

.include_academy_attendance?(current_user) ⇒ Boolean

Returns:

  • (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