hydrogen-proton-api 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +7 -0
  3. data/README.md +82 -0
  4. data/Rakefile +8 -0
  5. data/git_push.sh +55 -0
  6. data/lib/proton_api.rb +141 -0
  7. data/lib/proton_api/api/annuities_api.rb +347 -0
  8. data/lib/proton_api/api/business_financial_management_api.rb +293 -0
  9. data/lib/proton_api/api/cards_api.rb +185 -0
  10. data/lib/proton_api/api/financial_health_api.rb +239 -0
  11. data/lib/proton_api/api/financial_planning_api.rb +671 -0
  12. data/lib/proton_api/api/goals_api.rb +347 -0
  13. data/lib/proton_api/api/life_insurance_api.rb +77 -0
  14. data/lib/proton_api/api/personal_financial_management_api.rb +347 -0
  15. data/lib/proton_api/api/portfolio_construction_api.rb +77 -0
  16. data/lib/proton_api/api/portfolio_management_api.rb +77 -0
  17. data/lib/proton_api/api/risk_scoring_api.rb +185 -0
  18. data/lib/proton_api/api/simulations_api.rb +401 -0
  19. data/lib/proton_api/api/util_api.rb +185 -0
  20. data/lib/proton_api/api_client.rb +391 -0
  21. data/lib/proton_api/api_error.rb +38 -0
  22. data/lib/proton_api/auth_configuration.rb +181 -0
  23. data/lib/proton_api/configuration.rb +209 -0
  24. data/lib/proton_api/environment.rb +36 -0
  25. data/lib/proton_api/models/accumulation_goal_deposit_config.rb +338 -0
  26. data/lib/proton_api/models/annuity_calculator_accumulation_horizon_request.rb +459 -0
  27. data/lib/proton_api/models/annuity_calculator_annuity_amount_request.rb +461 -0
  28. data/lib/proton_api/models/annuity_calculator_decumulation_horizon_request.rb +459 -0
  29. data/lib/proton_api/models/annuity_calculator_deposit_amount_request.rb +468 -0
  30. data/lib/proton_api/models/annuity_calculator_initial_balance_request.rb +468 -0
  31. data/lib/proton_api/models/annuity_deposit_schedule.rb +254 -0
  32. data/lib/proton_api/models/answer.rb +186 -0
  33. data/lib/proton_api/models/backtest_request.rb +295 -0
  34. data/lib/proton_api/models/beneficiary_bequest_config.rb +257 -0
  35. data/lib/proton_api/models/budget_aggregation_account.rb +186 -0
  36. data/lib/proton_api/models/budget_calculator_request.rb +334 -0
  37. data/lib/proton_api/models/budget_component.rb +228 -0
  38. data/lib/proton_api/models/budget_details.rb +337 -0
  39. data/lib/proton_api/models/business_financial_health_check_request.rb +484 -0
  40. data/lib/proton_api/models/business_invoice_analysis_request.rb +361 -0
  41. data/lib/proton_api/models/calculator_deposit_schedule.rb +228 -0
  42. data/lib/proton_api/models/calculator_deposit_schedule1.rb +254 -0
  43. data/lib/proton_api/models/card_analysis_request.rb +372 -0
  44. data/lib/proton_api/models/card_limit_check_request.rb +231 -0
  45. data/lib/proton_api/models/card_transaction_authorization_request.rb +422 -0
  46. data/lib/proton_api/models/cash_analysis_request.rb +340 -0
  47. data/lib/proton_api/models/cash_flow_analysis_request.rb +366 -0
  48. data/lib/proton_api/models/children_education_config.rb +221 -0
  49. data/lib/proton_api/models/customer_analysis_request.rb +292 -0
  50. data/lib/proton_api/models/decision_tree_result_request.rb +236 -0
  51. data/lib/proton_api/models/decumulation_goal_deposit_config.rb +335 -0
  52. data/lib/proton_api/models/dimensional_risk_score_request.rb +282 -0
  53. data/lib/proton_api/models/diversification_score_request.rb +324 -0
  54. data/lib/proton_api/models/education_calculator_annual_cost_request.rb +450 -0
  55. data/lib/proton_api/models/education_calculator_deposit_amount_request.rb +483 -0
  56. data/lib/proton_api/models/education_calculator_percent_covered_request.rb +448 -0
  57. data/lib/proton_api/models/education_config.rb +271 -0
  58. data/lib/proton_api/models/emergency_fund_calculator_request.rb +561 -0
  59. data/lib/proton_api/models/event_study_request.rb +317 -0
  60. data/lib/proton_api/models/fee_analysis_request.rb +239 -0
  61. data/lib/proton_api/models/financial_health_check_request.rb +384 -0
  62. data/lib/proton_api/models/financial_picture_request.rb +270 -0
  63. data/lib/proton_api/models/financial_statement_analysis_request.rb +461 -0
  64. data/lib/proton_api/models/goal_accumulation_allocation_request.rb +729 -0
  65. data/lib/proton_api/models/goal_accumulation_recommendation_request.rb +622 -0
  66. data/lib/proton_api/models/goal_accumulation_status_request.rb +622 -0
  67. data/lib/proton_api/models/goal_config.rb +222 -0
  68. data/lib/proton_api/models/goal_decumulation_allocation_request.rb +764 -0
  69. data/lib/proton_api/models/goal_decumulation_recommendation_request.rb +657 -0
  70. data/lib/proton_api/models/goal_decumulation_status_request.rb +657 -0
  71. data/lib/proton_api/models/goal_withdrawal_config.rb +335 -0
  72. data/lib/proton_api/models/guaranteed_rate_benefit.rb +272 -0
  73. data/lib/proton_api/models/income_config.rb +266 -0
  74. data/lib/proton_api/models/life_insurance_needs_calculator_request.rb +515 -0
  75. data/lib/proton_api/models/location.rb +183 -0
  76. data/lib/proton_api/models/monte_carlo_request.rb +504 -0
  77. data/lib/proton_api/models/mortgage_calculator_down_payment_request.rb +299 -0
  78. data/lib/proton_api/models/mortgage_calculator_home_price_request.rb +299 -0
  79. data/lib/proton_api/models/mortgage_calculator_periodic_payment_request.rb +299 -0
  80. data/lib/proton_api/models/mvo_request.rb +366 -0
  81. data/lib/proton_api/models/opt_config.rb +300 -0
  82. data/lib/proton_api/models/opt_config1.rb +260 -0
  83. data/lib/proton_api/models/order_rebalance_request.rb +398 -0
  84. data/lib/proton_api/models/performance_calculator_request.rb +687 -0
  85. data/lib/proton_api/models/periods.rb +220 -0
  86. data/lib/proton_api/models/portfolio_optimization_score_request.rb +356 -0
  87. data/lib/proton_api/models/portfolio_what_if_request.rb +351 -0
  88. data/lib/proton_api/models/purchase_calculator_amount_request.rb +401 -0
  89. data/lib/proton_api/models/purchase_calculator_deposit_amount_request.rb +434 -0
  90. data/lib/proton_api/models/purchase_calculator_horizon_request.rb +356 -0
  91. data/lib/proton_api/models/ratio_targets.rb +328 -0
  92. data/lib/proton_api/models/ratio_targets1.rb +328 -0
  93. data/lib/proton_api/models/rebalancing_signal_request.rb +238 -0
  94. data/lib/proton_api/models/recommendation_config.rb +357 -0
  95. data/lib/proton_api/models/recommendation_config1.rb +346 -0
  96. data/lib/proton_api/models/recurring_transaction_analysis_request.rb +400 -0
  97. data/lib/proton_api/models/retirement_calculator_deposit_amount_request.rb +509 -0
  98. data/lib/proton_api/models/retirement_calculator_expenses_request.rb +476 -0
  99. data/lib/proton_api/models/retirement_calculator_percent_covered_request.rb +474 -0
  100. data/lib/proton_api/models/risk_allocation_request.rb +316 -0
  101. data/lib/proton_api/models/risk_score_request.rb +239 -0
  102. data/lib/proton_api/models/savings_calculator_request.rb +395 -0
  103. data/lib/proton_api/models/savings_deposit_schedule.rb +276 -0
  104. data/lib/proton_api/models/scenario_analysis_request.rb +401 -0
  105. data/lib/proton_api/models/sensitivity_analysis_request.rb +399 -0
  106. data/lib/proton_api/models/sensitivity_factor.rb +278 -0
  107. data/lib/proton_api/models/settings.rb +287 -0
  108. data/lib/proton_api/models/spending_analysis_request.rb +505 -0
  109. data/lib/proton_api/models/variable_annuity_request.rb +700 -0
  110. data/lib/proton_api/models/w_config.rb +382 -0
  111. data/lib/proton_api/models/w_config1.rb +347 -0
  112. data/lib/proton_api/version.rb +15 -0
  113. data/proton_api.gemspec +46 -0
  114. data/spec/api/annuities_api_spec.rb +107 -0
  115. data/spec/api/business_financial_management_api_spec.rb +95 -0
  116. data/spec/api/cards_api_spec.rb +71 -0
  117. data/spec/api/financial_health_api_spec.rb +83 -0
  118. data/spec/api/financial_planning_api_spec.rb +179 -0
  119. data/spec/api/goals_api_spec.rb +107 -0
  120. data/spec/api/life_insurance_api_spec.rb +47 -0
  121. data/spec/api/personal_financial_management_api_spec.rb +107 -0
  122. data/spec/api/portfolio_construction_api_spec.rb +47 -0
  123. data/spec/api/portfolio_management_api_spec.rb +47 -0
  124. data/spec/api/risk_scoring_api_spec.rb +71 -0
  125. data/spec/api/simulations_api_spec.rb +119 -0
  126. data/spec/api/util_api_spec.rb +71 -0
  127. data/spec/api_client_spec.rb +243 -0
  128. data/spec/configuration_spec.rb +42 -0
  129. data/spec/models/accumulation_goal_deposit_config_spec.rb +89 -0
  130. data/spec/models/annuity_calculator_accumulation_horizon_request_spec.rb +111 -0
  131. data/spec/models/annuity_calculator_annuity_amount_request_spec.rb +111 -0
  132. data/spec/models/annuity_calculator_decumulation_horizon_request_spec.rb +111 -0
  133. data/spec/models/annuity_calculator_deposit_amount_request_spec.rb +111 -0
  134. data/spec/models/annuity_calculator_initial_balance_request_spec.rb +111 -0
  135. data/spec/models/annuity_deposit_schedule_spec.rb +57 -0
  136. data/spec/models/answer_spec.rb +41 -0
  137. data/spec/models/backtest_request_spec.rb +95 -0
  138. data/spec/models/beneficiary_bequest_config_spec.rb +53 -0
  139. data/spec/models/budget_aggregation_account_spec.rb +41 -0
  140. data/spec/models/budget_calculator_request_spec.rb +105 -0
  141. data/spec/models/budget_component_spec.rb +53 -0
  142. data/spec/models/budget_details_spec.rb +99 -0
  143. data/spec/models/business_financial_health_check_request_spec.rb +143 -0
  144. data/spec/models/business_invoice_analysis_request_spec.rb +123 -0
  145. data/spec/models/calculator_deposit_schedule1_spec.rb +57 -0
  146. data/spec/models/calculator_deposit_schedule_spec.rb +51 -0
  147. data/spec/models/card_analysis_request_spec.rb +129 -0
  148. data/spec/models/card_limit_check_request_spec.rb +65 -0
  149. data/spec/models/card_transaction_authorization_request_spec.rb +157 -0
  150. data/spec/models/cash_analysis_request_spec.rb +115 -0
  151. data/spec/models/cash_flow_analysis_request_spec.rb +135 -0
  152. data/spec/models/children_education_config_spec.rb +47 -0
  153. data/spec/models/customer_analysis_request_spec.rb +101 -0
  154. data/spec/models/decision_tree_result_request_spec.rb +51 -0
  155. data/spec/models/decumulation_goal_deposit_config_spec.rb +89 -0
  156. data/spec/models/dimensional_risk_score_request_spec.rb +89 -0
  157. data/spec/models/diversification_score_request_spec.rb +111 -0
  158. data/spec/models/education_calculator_annual_cost_request_spec.rb +101 -0
  159. data/spec/models/education_calculator_deposit_amount_request_spec.rb +107 -0
  160. data/spec/models/education_calculator_percent_covered_request_spec.rb +101 -0
  161. data/spec/models/education_config_spec.rb +53 -0
  162. data/spec/models/emergency_fund_calculator_request_spec.rb +141 -0
  163. data/spec/models/event_study_request_spec.rb +109 -0
  164. data/spec/models/fee_analysis_request_spec.rb +77 -0
  165. data/spec/models/financial_health_check_request_spec.rb +95 -0
  166. data/spec/models/financial_picture_request_spec.rb +95 -0
  167. data/spec/models/financial_statement_analysis_request_spec.rb +155 -0
  168. data/spec/models/goal_accumulation_allocation_request_spec.rb +215 -0
  169. data/spec/models/goal_accumulation_recommendation_request_spec.rb +173 -0
  170. data/spec/models/goal_accumulation_status_request_spec.rb +173 -0
  171. data/spec/models/goal_config_spec.rb +47 -0
  172. data/spec/models/goal_decumulation_allocation_request_spec.rb +221 -0
  173. data/spec/models/goal_decumulation_recommendation_request_spec.rb +179 -0
  174. data/spec/models/goal_decumulation_status_request_spec.rb +179 -0
  175. data/spec/models/goal_withdrawal_config_spec.rb +89 -0
  176. data/spec/models/guaranteed_rate_benefit_spec.rb +59 -0
  177. data/spec/models/income_config_spec.rb +53 -0
  178. data/spec/models/life_insurance_needs_calculator_request_spec.rb +125 -0
  179. data/spec/models/location_spec.rb +41 -0
  180. data/spec/models/monte_carlo_request_spec.rb +179 -0
  181. data/spec/models/mortgage_calculator_down_payment_request_spec.rb +59 -0
  182. data/spec/models/mortgage_calculator_home_price_request_spec.rb +59 -0
  183. data/spec/models/mortgage_calculator_periodic_payment_request_spec.rb +59 -0
  184. data/spec/models/mvo_request_spec.rb +113 -0
  185. data/spec/models/opt_config1_spec.rb +69 -0
  186. data/spec/models/opt_config_spec.rb +81 -0
  187. data/spec/models/order_rebalance_request_spec.rb +123 -0
  188. data/spec/models/performance_calculator_request_spec.rb +233 -0
  189. data/spec/models/periods_spec.rb +47 -0
  190. data/spec/models/portfolio_optimization_score_request_spec.rb +127 -0
  191. data/spec/models/portfolio_what_if_request_spec.rb +123 -0
  192. data/spec/models/purchase_calculator_amount_request_spec.rb +93 -0
  193. data/spec/models/purchase_calculator_deposit_amount_request_spec.rb +99 -0
  194. data/spec/models/purchase_calculator_horizon_request_spec.rb +83 -0
  195. data/spec/models/ratio_targets1_spec.rb +71 -0
  196. data/spec/models/ratio_targets_spec.rb +71 -0
  197. data/spec/models/rebalancing_signal_request_spec.rb +71 -0
  198. data/spec/models/recommendation_config1_spec.rb +77 -0
  199. data/spec/models/recommendation_config_spec.rb +83 -0
  200. data/spec/models/recurring_transaction_analysis_request_spec.rb +129 -0
  201. data/spec/models/retirement_calculator_deposit_amount_request_spec.rb +113 -0
  202. data/spec/models/retirement_calculator_expenses_request_spec.rb +107 -0
  203. data/spec/models/retirement_calculator_percent_covered_request_spec.rb +107 -0
  204. data/spec/models/risk_allocation_request_spec.rb +85 -0
  205. data/spec/models/risk_score_request_spec.rb +71 -0
  206. data/spec/models/savings_calculator_request_spec.rb +99 -0
  207. data/spec/models/savings_deposit_schedule_spec.rb +63 -0
  208. data/spec/models/scenario_analysis_request_spec.rb +133 -0
  209. data/spec/models/sensitivity_analysis_request_spec.rb +133 -0
  210. data/spec/models/sensitivity_factor_spec.rb +59 -0
  211. data/spec/models/settings_spec.rb +79 -0
  212. data/spec/models/spending_analysis_request_spec.rb +187 -0
  213. data/spec/models/variable_annuity_request_spec.rb +209 -0
  214. data/spec/models/w_config1_spec.rb +65 -0
  215. data/spec/models/w_config_spec.rb +65 -0
  216. data/spec/spec_helper.rb +111 -0
  217. metadata +561 -0
@@ -0,0 +1,476 @@
1
+ =begin
2
+ #Hydrogen Proton API
3
+
4
+ #Financial engineering module of Hydrogen Atom
5
+
6
+ OpenAPI spec version: 1.9.1
7
+ Contact: info@hydrogenplatform.com
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.4.19
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module ProtonApi
16
+ class RetirementCalculatorExpensesRequest
17
+ attr_accessor :retirement_savings
18
+
19
+ attr_accessor :current_age
20
+
21
+ attr_accessor :account_ids
22
+
23
+ attr_accessor :retirement_income
24
+
25
+ attr_accessor :retirement_tax
26
+
27
+ attr_accessor :death_age
28
+
29
+ attr_accessor :retirement_age
30
+
31
+ attr_accessor :percent_of_expenses_covered
32
+
33
+ attr_accessor :portfolio_return
34
+
35
+ attr_accessor :deposit_schedule
36
+
37
+ attr_accessor :inflation_rate
38
+
39
+ attr_accessor :aggregation_account_ids
40
+
41
+ # Attribute mapping from ruby-style variable name to JSON key.
42
+ def self.attribute_map
43
+ {
44
+ :'retirement_savings' => :'retirement_savings',
45
+ :'current_age' => :'current_age',
46
+ :'account_ids' => :'account_ids',
47
+ :'retirement_income' => :'retirement_income',
48
+ :'retirement_tax' => :'retirement_tax',
49
+ :'death_age' => :'death_age',
50
+ :'retirement_age' => :'retirement_age',
51
+ :'percent_of_expenses_covered' => :'percent_of_expenses_covered',
52
+ :'portfolio_return' => :'portfolio_return',
53
+ :'deposit_schedule' => :'deposit_schedule',
54
+ :'inflation_rate' => :'inflation_rate',
55
+ :'aggregation_account_ids' => :'aggregation_account_ids'
56
+ }
57
+ end
58
+
59
+ # Attribute type mapping.
60
+ def self.swagger_types
61
+ {
62
+ :'retirement_savings' => :'Float',
63
+ :'current_age' => :'Integer',
64
+ :'account_ids' => :'Array<String>',
65
+ :'retirement_income' => :'Float',
66
+ :'retirement_tax' => :'Float',
67
+ :'death_age' => :'Integer',
68
+ :'retirement_age' => :'Integer',
69
+ :'percent_of_expenses_covered' => :'Float',
70
+ :'portfolio_return' => :'Float',
71
+ :'deposit_schedule' => :'CalculatorDepositSchedule1',
72
+ :'inflation_rate' => :'Float',
73
+ :'aggregation_account_ids' => :'Array<String>'
74
+ }
75
+ end
76
+
77
+ # Initializes the object
78
+ # @param [Hash] attributes Model attributes in the form of hash
79
+ def initialize(attributes = {})
80
+ return unless attributes.is_a?(Hash)
81
+
82
+ # convert string to symbol for hash key
83
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
84
+
85
+ if attributes.has_key?(:'retirement_savings')
86
+ self.retirement_savings = attributes[:'retirement_savings']
87
+ else
88
+ self.retirement_savings = 0.0
89
+ end
90
+
91
+ if attributes.has_key?(:'current_age')
92
+ self.current_age = attributes[:'current_age']
93
+ end
94
+
95
+ if attributes.has_key?(:'account_ids')
96
+ if (value = attributes[:'account_ids']).is_a?(Array)
97
+ self.account_ids = value
98
+ end
99
+ end
100
+
101
+ if attributes.has_key?(:'retirement_income')
102
+ self.retirement_income = attributes[:'retirement_income']
103
+ else
104
+ self.retirement_income = 0.0
105
+ end
106
+
107
+ if attributes.has_key?(:'retirement_tax')
108
+ self.retirement_tax = attributes[:'retirement_tax']
109
+ else
110
+ self.retirement_tax = 0.0
111
+ end
112
+
113
+ if attributes.has_key?(:'death_age')
114
+ self.death_age = attributes[:'death_age']
115
+ end
116
+
117
+ if attributes.has_key?(:'retirement_age')
118
+ self.retirement_age = attributes[:'retirement_age']
119
+ else
120
+ self.retirement_age = 65
121
+ end
122
+
123
+ if attributes.has_key?(:'percent_of_expenses_covered')
124
+ self.percent_of_expenses_covered = attributes[:'percent_of_expenses_covered']
125
+ else
126
+ self.percent_of_expenses_covered = 1.0
127
+ end
128
+
129
+ if attributes.has_key?(:'portfolio_return')
130
+ self.portfolio_return = attributes[:'portfolio_return']
131
+ end
132
+
133
+ if attributes.has_key?(:'deposit_schedule')
134
+ self.deposit_schedule = attributes[:'deposit_schedule']
135
+ end
136
+
137
+ if attributes.has_key?(:'inflation_rate')
138
+ self.inflation_rate = attributes[:'inflation_rate']
139
+ else
140
+ self.inflation_rate = 0.0
141
+ end
142
+
143
+ if attributes.has_key?(:'aggregation_account_ids')
144
+ if (value = attributes[:'aggregation_account_ids']).is_a?(Array)
145
+ self.aggregation_account_ids = value
146
+ end
147
+ end
148
+ end
149
+
150
+ # Show invalid properties with the reasons. Usually used together with valid?
151
+ # @return Array for valid properties with the reasons
152
+ def list_invalid_properties
153
+ invalid_properties = Array.new
154
+ if !@retirement_savings.nil? && @retirement_savings < 0
155
+ invalid_properties.push('invalid value for "retirement_savings", must be greater than or equal to 0.')
156
+ end
157
+
158
+ if @current_age.nil?
159
+ invalid_properties.push('invalid value for "current_age", current_age cannot be nil.')
160
+ end
161
+
162
+ if @current_age < 0
163
+ invalid_properties.push('invalid value for "current_age", must be greater than or equal to 0.')
164
+ end
165
+
166
+ if !@retirement_income.nil? && @retirement_income < 0
167
+ invalid_properties.push('invalid value for "retirement_income", must be greater than or equal to 0.')
168
+ end
169
+
170
+ if !@retirement_tax.nil? && @retirement_tax > 1
171
+ invalid_properties.push('invalid value for "retirement_tax", must be smaller than or equal to 1.')
172
+ end
173
+
174
+ if !@retirement_tax.nil? && @retirement_tax < 0
175
+ invalid_properties.push('invalid value for "retirement_tax", must be greater than or equal to 0.')
176
+ end
177
+
178
+ if @death_age.nil?
179
+ invalid_properties.push('invalid value for "death_age", death_age cannot be nil.')
180
+ end
181
+
182
+ if @death_age < 0
183
+ invalid_properties.push('invalid value for "death_age", must be greater than or equal to 0.')
184
+ end
185
+
186
+ if !@retirement_age.nil? && @retirement_age < 0
187
+ invalid_properties.push('invalid value for "retirement_age", must be greater than or equal to 0.')
188
+ end
189
+
190
+ if !@percent_of_expenses_covered.nil? && @percent_of_expenses_covered > 1
191
+ invalid_properties.push('invalid value for "percent_of_expenses_covered", must be smaller than or equal to 1.')
192
+ end
193
+
194
+ if !@percent_of_expenses_covered.nil? && @percent_of_expenses_covered < 0
195
+ invalid_properties.push('invalid value for "percent_of_expenses_covered", must be greater than or equal to 0.')
196
+ end
197
+
198
+ if @portfolio_return.nil?
199
+ invalid_properties.push('invalid value for "portfolio_return", portfolio_return cannot be nil.')
200
+ end
201
+
202
+ if @portfolio_return < -1
203
+ invalid_properties.push('invalid value for "portfolio_return", must be greater than or equal to -1.')
204
+ end
205
+
206
+ if !@inflation_rate.nil? && @inflation_rate < -1
207
+ invalid_properties.push('invalid value for "inflation_rate", must be greater than or equal to -1.')
208
+ end
209
+
210
+ invalid_properties
211
+ end
212
+
213
+ # Check to see if the all the properties in the model are valid
214
+ # @return true if the model is valid
215
+ def valid?
216
+ return false if !@retirement_savings.nil? && @retirement_savings < 0
217
+ return false if @current_age.nil?
218
+ return false if @current_age < 0
219
+ return false if !@retirement_income.nil? && @retirement_income < 0
220
+ return false if !@retirement_tax.nil? && @retirement_tax > 1
221
+ return false if !@retirement_tax.nil? && @retirement_tax < 0
222
+ return false if @death_age.nil?
223
+ return false if @death_age < 0
224
+ return false if !@retirement_age.nil? && @retirement_age < 0
225
+ return false if !@percent_of_expenses_covered.nil? && @percent_of_expenses_covered > 1
226
+ return false if !@percent_of_expenses_covered.nil? && @percent_of_expenses_covered < 0
227
+ return false if @portfolio_return.nil?
228
+ return false if @portfolio_return < -1
229
+ return false if !@inflation_rate.nil? && @inflation_rate < -1
230
+ true
231
+ end
232
+
233
+ # Custom attribute writer method with validation
234
+ # @param [Object] retirement_savings Value to be assigned
235
+ def retirement_savings=(retirement_savings)
236
+ if !retirement_savings.nil? && retirement_savings < 0
237
+ fail ArgumentError, 'invalid value for "retirement_savings", must be greater than or equal to 0.'
238
+ end
239
+
240
+ @retirement_savings = retirement_savings
241
+ end
242
+
243
+ # Custom attribute writer method with validation
244
+ # @param [Object] current_age Value to be assigned
245
+ def current_age=(current_age)
246
+ if current_age.nil?
247
+ fail ArgumentError, 'current_age cannot be nil'
248
+ end
249
+
250
+ if current_age < 0
251
+ fail ArgumentError, 'invalid value for "current_age", must be greater than or equal to 0.'
252
+ end
253
+
254
+ @current_age = current_age
255
+ end
256
+
257
+ # Custom attribute writer method with validation
258
+ # @param [Object] retirement_income Value to be assigned
259
+ def retirement_income=(retirement_income)
260
+ if !retirement_income.nil? && retirement_income < 0
261
+ fail ArgumentError, 'invalid value for "retirement_income", must be greater than or equal to 0.'
262
+ end
263
+
264
+ @retirement_income = retirement_income
265
+ end
266
+
267
+ # Custom attribute writer method with validation
268
+ # @param [Object] retirement_tax Value to be assigned
269
+ def retirement_tax=(retirement_tax)
270
+ if !retirement_tax.nil? && retirement_tax > 1
271
+ fail ArgumentError, 'invalid value for "retirement_tax", must be smaller than or equal to 1.'
272
+ end
273
+
274
+ if !retirement_tax.nil? && retirement_tax < 0
275
+ fail ArgumentError, 'invalid value for "retirement_tax", must be greater than or equal to 0.'
276
+ end
277
+
278
+ @retirement_tax = retirement_tax
279
+ end
280
+
281
+ # Custom attribute writer method with validation
282
+ # @param [Object] death_age Value to be assigned
283
+ def death_age=(death_age)
284
+ if death_age.nil?
285
+ fail ArgumentError, 'death_age cannot be nil'
286
+ end
287
+
288
+ if death_age < 0
289
+ fail ArgumentError, 'invalid value for "death_age", must be greater than or equal to 0.'
290
+ end
291
+
292
+ @death_age = death_age
293
+ end
294
+
295
+ # Custom attribute writer method with validation
296
+ # @param [Object] retirement_age Value to be assigned
297
+ def retirement_age=(retirement_age)
298
+ if !retirement_age.nil? && retirement_age < 0
299
+ fail ArgumentError, 'invalid value for "retirement_age", must be greater than or equal to 0.'
300
+ end
301
+
302
+ @retirement_age = retirement_age
303
+ end
304
+
305
+ # Custom attribute writer method with validation
306
+ # @param [Object] percent_of_expenses_covered Value to be assigned
307
+ def percent_of_expenses_covered=(percent_of_expenses_covered)
308
+ if !percent_of_expenses_covered.nil? && percent_of_expenses_covered > 1
309
+ fail ArgumentError, 'invalid value for "percent_of_expenses_covered", must be smaller than or equal to 1.'
310
+ end
311
+
312
+ if !percent_of_expenses_covered.nil? && percent_of_expenses_covered < 0
313
+ fail ArgumentError, 'invalid value for "percent_of_expenses_covered", must be greater than or equal to 0.'
314
+ end
315
+
316
+ @percent_of_expenses_covered = percent_of_expenses_covered
317
+ end
318
+
319
+ # Custom attribute writer method with validation
320
+ # @param [Object] portfolio_return Value to be assigned
321
+ def portfolio_return=(portfolio_return)
322
+ if portfolio_return.nil?
323
+ fail ArgumentError, 'portfolio_return cannot be nil'
324
+ end
325
+
326
+ if portfolio_return < -1
327
+ fail ArgumentError, 'invalid value for "portfolio_return", must be greater than or equal to -1.'
328
+ end
329
+
330
+ @portfolio_return = portfolio_return
331
+ end
332
+
333
+ # Custom attribute writer method with validation
334
+ # @param [Object] inflation_rate Value to be assigned
335
+ def inflation_rate=(inflation_rate)
336
+ if !inflation_rate.nil? && inflation_rate < -1
337
+ fail ArgumentError, 'invalid value for "inflation_rate", must be greater than or equal to -1.'
338
+ end
339
+
340
+ @inflation_rate = inflation_rate
341
+ end
342
+
343
+ # Checks equality by comparing each attribute.
344
+ # @param [Object] Object to be compared
345
+ def ==(o)
346
+ return true if self.equal?(o)
347
+ self.class == o.class &&
348
+ retirement_savings == o.retirement_savings &&
349
+ current_age == o.current_age &&
350
+ account_ids == o.account_ids &&
351
+ retirement_income == o.retirement_income &&
352
+ retirement_tax == o.retirement_tax &&
353
+ death_age == o.death_age &&
354
+ retirement_age == o.retirement_age &&
355
+ percent_of_expenses_covered == o.percent_of_expenses_covered &&
356
+ portfolio_return == o.portfolio_return &&
357
+ deposit_schedule == o.deposit_schedule &&
358
+ inflation_rate == o.inflation_rate &&
359
+ aggregation_account_ids == o.aggregation_account_ids
360
+ end
361
+
362
+ # @see the `==` method
363
+ # @param [Object] Object to be compared
364
+ def eql?(o)
365
+ self == o
366
+ end
367
+
368
+ # Calculates hash code according to all attributes.
369
+ # @return [Fixnum] Hash code
370
+ def hash
371
+ [retirement_savings, current_age, account_ids, retirement_income, retirement_tax, death_age, retirement_age, percent_of_expenses_covered, portfolio_return, deposit_schedule, inflation_rate, aggregation_account_ids].hash
372
+ end
373
+
374
+ # Builds the object from hash
375
+ # @param [Hash] attributes Model attributes in the form of hash
376
+ # @return [Object] Returns the model itself
377
+ def build_from_hash(attributes)
378
+ return nil unless attributes.is_a?(Hash)
379
+ self.class.swagger_types.each_pair do |key, type|
380
+ if type =~ /\AArray<(.*)>/i
381
+ # check to ensure the input is an array given that the attribute
382
+ # is documented as an array but the input is not
383
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
384
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
385
+ end
386
+ elsif !attributes[self.class.attribute_map[key]].nil?
387
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
388
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
389
+ end
390
+
391
+ self
392
+ end
393
+ # Deserializes the data based on type
394
+ # @param string type Data type
395
+ # @param string value Value to be deserialized
396
+ # @return [Object] Deserialized data
397
+ def _deserialize(type, value)
398
+ case type.to_sym
399
+ when :DateTime
400
+ value
401
+ when :Date
402
+ value
403
+ when :String
404
+ value.to_s
405
+ when :Integer
406
+ value.to_i
407
+ when :Float
408
+ value.to_f
409
+ when :BOOLEAN
410
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
411
+ true
412
+ else
413
+ false
414
+ end
415
+ when :Object
416
+ # generic object (usually a Hash), return directly
417
+ value
418
+ when /\AArray<(?<inner_type>.+)>\z/
419
+ inner_type = Regexp.last_match[:inner_type]
420
+ value.map { |v| _deserialize(inner_type, v) }
421
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
422
+ k_type = Regexp.last_match[:k_type]
423
+ v_type = Regexp.last_match[:v_type]
424
+ {}.tap do |hash|
425
+ value.each do |k, v|
426
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
427
+ end
428
+ end
429
+ else # model
430
+ temp_model = ProtonApi.const_get(type).new
431
+ temp_model.build_from_hash(value)
432
+ end
433
+ end
434
+ # Returns the string representation of the object
435
+ # @return [String] String presentation of the object
436
+ def to_s
437
+ to_hash.to_s
438
+ end
439
+
440
+ # to_body is an alias to to_hash (backward compatibility)
441
+ # @return [Hash] Returns the object in the form of hash
442
+ def to_body
443
+ to_hash
444
+ end
445
+
446
+ # Returns the object in the form of hash
447
+ # @return [Hash] Returns the object in the form of hash
448
+ def to_hash
449
+ hash = {}
450
+ self.class.attribute_map.each_pair do |attr, param|
451
+ value = self.send(attr)
452
+ next if value.nil?
453
+ hash[param] = _to_hash(value)
454
+ end
455
+ hash
456
+ end
457
+ # Outputs non-array value in the form of hash
458
+ # For object, use to_hash. Otherwise, just return the value
459
+ # @param [Object] value Any valid value
460
+ # @return [Hash] Returns the value in the form of hash
461
+ def _to_hash(value)
462
+ if value.is_a?(Array)
463
+ value.compact.map { |v| _to_hash(v) }
464
+ elsif value.is_a?(Hash)
465
+ {}.tap do |hash|
466
+ value.each { |k, v| hash[k] = _to_hash(v) }
467
+ end
468
+ elsif value.respond_to? :to_hash
469
+ value.to_hash
470
+ else
471
+ value
472
+ end
473
+ end
474
+
475
+ end
476
+ end