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,509 @@
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 RetirementCalculatorDepositAmountRequest
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 :retirement_expenses
36
+
37
+ attr_accessor :deposit_schedule
38
+
39
+ attr_accessor :inflation_rate
40
+
41
+ attr_accessor :aggregation_account_ids
42
+
43
+ # Attribute mapping from ruby-style variable name to JSON key.
44
+ def self.attribute_map
45
+ {
46
+ :'retirement_savings' => :'retirement_savings',
47
+ :'current_age' => :'current_age',
48
+ :'account_ids' => :'account_ids',
49
+ :'retirement_income' => :'retirement_income',
50
+ :'retirement_tax' => :'retirement_tax',
51
+ :'death_age' => :'death_age',
52
+ :'retirement_age' => :'retirement_age',
53
+ :'percent_of_expenses_covered' => :'percent_of_expenses_covered',
54
+ :'portfolio_return' => :'portfolio_return',
55
+ :'retirement_expenses' => :'retirement_expenses',
56
+ :'deposit_schedule' => :'deposit_schedule',
57
+ :'inflation_rate' => :'inflation_rate',
58
+ :'aggregation_account_ids' => :'aggregation_account_ids'
59
+ }
60
+ end
61
+
62
+ # Attribute type mapping.
63
+ def self.swagger_types
64
+ {
65
+ :'retirement_savings' => :'Float',
66
+ :'current_age' => :'Integer',
67
+ :'account_ids' => :'Array<String>',
68
+ :'retirement_income' => :'Float',
69
+ :'retirement_tax' => :'Float',
70
+ :'death_age' => :'Integer',
71
+ :'retirement_age' => :'Integer',
72
+ :'percent_of_expenses_covered' => :'Float',
73
+ :'portfolio_return' => :'Float',
74
+ :'retirement_expenses' => :'Float',
75
+ :'deposit_schedule' => :'CalculatorDepositSchedule',
76
+ :'inflation_rate' => :'Float',
77
+ :'aggregation_account_ids' => :'Array<String>'
78
+ }
79
+ end
80
+
81
+ # Initializes the object
82
+ # @param [Hash] attributes Model attributes in the form of hash
83
+ def initialize(attributes = {})
84
+ return unless attributes.is_a?(Hash)
85
+
86
+ # convert string to symbol for hash key
87
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
88
+
89
+ if attributes.has_key?(:'retirement_savings')
90
+ self.retirement_savings = attributes[:'retirement_savings']
91
+ else
92
+ self.retirement_savings = 0.0
93
+ end
94
+
95
+ if attributes.has_key?(:'current_age')
96
+ self.current_age = attributes[:'current_age']
97
+ end
98
+
99
+ if attributes.has_key?(:'account_ids')
100
+ if (value = attributes[:'account_ids']).is_a?(Array)
101
+ self.account_ids = value
102
+ end
103
+ end
104
+
105
+ if attributes.has_key?(:'retirement_income')
106
+ self.retirement_income = attributes[:'retirement_income']
107
+ else
108
+ self.retirement_income = 0.0
109
+ end
110
+
111
+ if attributes.has_key?(:'retirement_tax')
112
+ self.retirement_tax = attributes[:'retirement_tax']
113
+ else
114
+ self.retirement_tax = 0.0
115
+ end
116
+
117
+ if attributes.has_key?(:'death_age')
118
+ self.death_age = attributes[:'death_age']
119
+ end
120
+
121
+ if attributes.has_key?(:'retirement_age')
122
+ self.retirement_age = attributes[:'retirement_age']
123
+ else
124
+ self.retirement_age = 65
125
+ end
126
+
127
+ if attributes.has_key?(:'percent_of_expenses_covered')
128
+ self.percent_of_expenses_covered = attributes[:'percent_of_expenses_covered']
129
+ else
130
+ self.percent_of_expenses_covered = 1.0
131
+ end
132
+
133
+ if attributes.has_key?(:'portfolio_return')
134
+ self.portfolio_return = attributes[:'portfolio_return']
135
+ end
136
+
137
+ if attributes.has_key?(:'retirement_expenses')
138
+ self.retirement_expenses = attributes[:'retirement_expenses']
139
+ end
140
+
141
+ if attributes.has_key?(:'deposit_schedule')
142
+ self.deposit_schedule = attributes[:'deposit_schedule']
143
+ end
144
+
145
+ if attributes.has_key?(:'inflation_rate')
146
+ self.inflation_rate = attributes[:'inflation_rate']
147
+ else
148
+ self.inflation_rate = 0.0
149
+ end
150
+
151
+ if attributes.has_key?(:'aggregation_account_ids')
152
+ if (value = attributes[:'aggregation_account_ids']).is_a?(Array)
153
+ self.aggregation_account_ids = value
154
+ end
155
+ end
156
+ end
157
+
158
+ # Show invalid properties with the reasons. Usually used together with valid?
159
+ # @return Array for valid properties with the reasons
160
+ def list_invalid_properties
161
+ invalid_properties = Array.new
162
+ if !@retirement_savings.nil? && @retirement_savings < 0
163
+ invalid_properties.push('invalid value for "retirement_savings", must be greater than or equal to 0.')
164
+ end
165
+
166
+ if @current_age.nil?
167
+ invalid_properties.push('invalid value for "current_age", current_age cannot be nil.')
168
+ end
169
+
170
+ if @current_age < 0
171
+ invalid_properties.push('invalid value for "current_age", must be greater than or equal to 0.')
172
+ end
173
+
174
+ if !@retirement_income.nil? && @retirement_income < 0
175
+ invalid_properties.push('invalid value for "retirement_income", must be greater than or equal to 0.')
176
+ end
177
+
178
+ if !@retirement_tax.nil? && @retirement_tax > 1
179
+ invalid_properties.push('invalid value for "retirement_tax", must be smaller than or equal to 1.')
180
+ end
181
+
182
+ if !@retirement_tax.nil? && @retirement_tax < 0
183
+ invalid_properties.push('invalid value for "retirement_tax", must be greater than or equal to 0.')
184
+ end
185
+
186
+ if @death_age.nil?
187
+ invalid_properties.push('invalid value for "death_age", death_age cannot be nil.')
188
+ end
189
+
190
+ if @death_age < 0
191
+ invalid_properties.push('invalid value for "death_age", must be greater than or equal to 0.')
192
+ end
193
+
194
+ if !@retirement_age.nil? && @retirement_age < 0
195
+ invalid_properties.push('invalid value for "retirement_age", must be greater than or equal to 0.')
196
+ end
197
+
198
+ if !@percent_of_expenses_covered.nil? && @percent_of_expenses_covered > 1
199
+ invalid_properties.push('invalid value for "percent_of_expenses_covered", must be smaller than or equal to 1.')
200
+ end
201
+
202
+ if !@percent_of_expenses_covered.nil? && @percent_of_expenses_covered < 0
203
+ invalid_properties.push('invalid value for "percent_of_expenses_covered", must be greater than or equal to 0.')
204
+ end
205
+
206
+ if @portfolio_return.nil?
207
+ invalid_properties.push('invalid value for "portfolio_return", portfolio_return cannot be nil.')
208
+ end
209
+
210
+ if @portfolio_return < -1
211
+ invalid_properties.push('invalid value for "portfolio_return", must be greater than or equal to -1.')
212
+ end
213
+
214
+ if @retirement_expenses.nil?
215
+ invalid_properties.push('invalid value for "retirement_expenses", retirement_expenses cannot be nil.')
216
+ end
217
+
218
+ if @retirement_expenses < 0
219
+ invalid_properties.push('invalid value for "retirement_expenses", must be greater than or equal to 0.')
220
+ end
221
+
222
+ if !@inflation_rate.nil? && @inflation_rate < -1
223
+ invalid_properties.push('invalid value for "inflation_rate", must be greater than or equal to -1.')
224
+ end
225
+
226
+ invalid_properties
227
+ end
228
+
229
+ # Check to see if the all the properties in the model are valid
230
+ # @return true if the model is valid
231
+ def valid?
232
+ return false if !@retirement_savings.nil? && @retirement_savings < 0
233
+ return false if @current_age.nil?
234
+ return false if @current_age < 0
235
+ return false if !@retirement_income.nil? && @retirement_income < 0
236
+ return false if !@retirement_tax.nil? && @retirement_tax > 1
237
+ return false if !@retirement_tax.nil? && @retirement_tax < 0
238
+ return false if @death_age.nil?
239
+ return false if @death_age < 0
240
+ return false if !@retirement_age.nil? && @retirement_age < 0
241
+ return false if !@percent_of_expenses_covered.nil? && @percent_of_expenses_covered > 1
242
+ return false if !@percent_of_expenses_covered.nil? && @percent_of_expenses_covered < 0
243
+ return false if @portfolio_return.nil?
244
+ return false if @portfolio_return < -1
245
+ return false if @retirement_expenses.nil?
246
+ return false if @retirement_expenses < 0
247
+ return false if !@inflation_rate.nil? && @inflation_rate < -1
248
+ true
249
+ end
250
+
251
+ # Custom attribute writer method with validation
252
+ # @param [Object] retirement_savings Value to be assigned
253
+ def retirement_savings=(retirement_savings)
254
+ if !retirement_savings.nil? && retirement_savings < 0
255
+ fail ArgumentError, 'invalid value for "retirement_savings", must be greater than or equal to 0.'
256
+ end
257
+
258
+ @retirement_savings = retirement_savings
259
+ end
260
+
261
+ # Custom attribute writer method with validation
262
+ # @param [Object] current_age Value to be assigned
263
+ def current_age=(current_age)
264
+ if current_age.nil?
265
+ fail ArgumentError, 'current_age cannot be nil'
266
+ end
267
+
268
+ if current_age < 0
269
+ fail ArgumentError, 'invalid value for "current_age", must be greater than or equal to 0.'
270
+ end
271
+
272
+ @current_age = current_age
273
+ end
274
+
275
+ # Custom attribute writer method with validation
276
+ # @param [Object] retirement_income Value to be assigned
277
+ def retirement_income=(retirement_income)
278
+ if !retirement_income.nil? && retirement_income < 0
279
+ fail ArgumentError, 'invalid value for "retirement_income", must be greater than or equal to 0.'
280
+ end
281
+
282
+ @retirement_income = retirement_income
283
+ end
284
+
285
+ # Custom attribute writer method with validation
286
+ # @param [Object] retirement_tax Value to be assigned
287
+ def retirement_tax=(retirement_tax)
288
+ if !retirement_tax.nil? && retirement_tax > 1
289
+ fail ArgumentError, 'invalid value for "retirement_tax", must be smaller than or equal to 1.'
290
+ end
291
+
292
+ if !retirement_tax.nil? && retirement_tax < 0
293
+ fail ArgumentError, 'invalid value for "retirement_tax", must be greater than or equal to 0.'
294
+ end
295
+
296
+ @retirement_tax = retirement_tax
297
+ end
298
+
299
+ # Custom attribute writer method with validation
300
+ # @param [Object] death_age Value to be assigned
301
+ def death_age=(death_age)
302
+ if death_age.nil?
303
+ fail ArgumentError, 'death_age cannot be nil'
304
+ end
305
+
306
+ if death_age < 0
307
+ fail ArgumentError, 'invalid value for "death_age", must be greater than or equal to 0.'
308
+ end
309
+
310
+ @death_age = death_age
311
+ end
312
+
313
+ # Custom attribute writer method with validation
314
+ # @param [Object] retirement_age Value to be assigned
315
+ def retirement_age=(retirement_age)
316
+ if !retirement_age.nil? && retirement_age < 0
317
+ fail ArgumentError, 'invalid value for "retirement_age", must be greater than or equal to 0.'
318
+ end
319
+
320
+ @retirement_age = retirement_age
321
+ end
322
+
323
+ # Custom attribute writer method with validation
324
+ # @param [Object] percent_of_expenses_covered Value to be assigned
325
+ def percent_of_expenses_covered=(percent_of_expenses_covered)
326
+ if !percent_of_expenses_covered.nil? && percent_of_expenses_covered > 1
327
+ fail ArgumentError, 'invalid value for "percent_of_expenses_covered", must be smaller than or equal to 1.'
328
+ end
329
+
330
+ if !percent_of_expenses_covered.nil? && percent_of_expenses_covered < 0
331
+ fail ArgumentError, 'invalid value for "percent_of_expenses_covered", must be greater than or equal to 0.'
332
+ end
333
+
334
+ @percent_of_expenses_covered = percent_of_expenses_covered
335
+ end
336
+
337
+ # Custom attribute writer method with validation
338
+ # @param [Object] portfolio_return Value to be assigned
339
+ def portfolio_return=(portfolio_return)
340
+ if portfolio_return.nil?
341
+ fail ArgumentError, 'portfolio_return cannot be nil'
342
+ end
343
+
344
+ if portfolio_return < -1
345
+ fail ArgumentError, 'invalid value for "portfolio_return", must be greater than or equal to -1.'
346
+ end
347
+
348
+ @portfolio_return = portfolio_return
349
+ end
350
+
351
+ # Custom attribute writer method with validation
352
+ # @param [Object] retirement_expenses Value to be assigned
353
+ def retirement_expenses=(retirement_expenses)
354
+ if retirement_expenses.nil?
355
+ fail ArgumentError, 'retirement_expenses cannot be nil'
356
+ end
357
+
358
+ if retirement_expenses < 0
359
+ fail ArgumentError, 'invalid value for "retirement_expenses", must be greater than or equal to 0.'
360
+ end
361
+
362
+ @retirement_expenses = retirement_expenses
363
+ end
364
+
365
+ # Custom attribute writer method with validation
366
+ # @param [Object] inflation_rate Value to be assigned
367
+ def inflation_rate=(inflation_rate)
368
+ if !inflation_rate.nil? && inflation_rate < -1
369
+ fail ArgumentError, 'invalid value for "inflation_rate", must be greater than or equal to -1.'
370
+ end
371
+
372
+ @inflation_rate = inflation_rate
373
+ end
374
+
375
+ # Checks equality by comparing each attribute.
376
+ # @param [Object] Object to be compared
377
+ def ==(o)
378
+ return true if self.equal?(o)
379
+ self.class == o.class &&
380
+ retirement_savings == o.retirement_savings &&
381
+ current_age == o.current_age &&
382
+ account_ids == o.account_ids &&
383
+ retirement_income == o.retirement_income &&
384
+ retirement_tax == o.retirement_tax &&
385
+ death_age == o.death_age &&
386
+ retirement_age == o.retirement_age &&
387
+ percent_of_expenses_covered == o.percent_of_expenses_covered &&
388
+ portfolio_return == o.portfolio_return &&
389
+ retirement_expenses == o.retirement_expenses &&
390
+ deposit_schedule == o.deposit_schedule &&
391
+ inflation_rate == o.inflation_rate &&
392
+ aggregation_account_ids == o.aggregation_account_ids
393
+ end
394
+
395
+ # @see the `==` method
396
+ # @param [Object] Object to be compared
397
+ def eql?(o)
398
+ self == o
399
+ end
400
+
401
+ # Calculates hash code according to all attributes.
402
+ # @return [Fixnum] Hash code
403
+ def hash
404
+ [retirement_savings, current_age, account_ids, retirement_income, retirement_tax, death_age, retirement_age, percent_of_expenses_covered, portfolio_return, retirement_expenses, deposit_schedule, inflation_rate, aggregation_account_ids].hash
405
+ end
406
+
407
+ # Builds the object from hash
408
+ # @param [Hash] attributes Model attributes in the form of hash
409
+ # @return [Object] Returns the model itself
410
+ def build_from_hash(attributes)
411
+ return nil unless attributes.is_a?(Hash)
412
+ self.class.swagger_types.each_pair do |key, type|
413
+ if type =~ /\AArray<(.*)>/i
414
+ # check to ensure the input is an array given that the attribute
415
+ # is documented as an array but the input is not
416
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
417
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
418
+ end
419
+ elsif !attributes[self.class.attribute_map[key]].nil?
420
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
421
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
422
+ end
423
+
424
+ self
425
+ end
426
+ # Deserializes the data based on type
427
+ # @param string type Data type
428
+ # @param string value Value to be deserialized
429
+ # @return [Object] Deserialized data
430
+ def _deserialize(type, value)
431
+ case type.to_sym
432
+ when :DateTime
433
+ value
434
+ when :Date
435
+ value
436
+ when :String
437
+ value.to_s
438
+ when :Integer
439
+ value.to_i
440
+ when :Float
441
+ value.to_f
442
+ when :BOOLEAN
443
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
444
+ true
445
+ else
446
+ false
447
+ end
448
+ when :Object
449
+ # generic object (usually a Hash), return directly
450
+ value
451
+ when /\AArray<(?<inner_type>.+)>\z/
452
+ inner_type = Regexp.last_match[:inner_type]
453
+ value.map { |v| _deserialize(inner_type, v) }
454
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
455
+ k_type = Regexp.last_match[:k_type]
456
+ v_type = Regexp.last_match[:v_type]
457
+ {}.tap do |hash|
458
+ value.each do |k, v|
459
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
460
+ end
461
+ end
462
+ else # model
463
+ temp_model = ProtonApi.const_get(type).new
464
+ temp_model.build_from_hash(value)
465
+ end
466
+ end
467
+ # Returns the string representation of the object
468
+ # @return [String] String presentation of the object
469
+ def to_s
470
+ to_hash.to_s
471
+ end
472
+
473
+ # to_body is an alias to to_hash (backward compatibility)
474
+ # @return [Hash] Returns the object in the form of hash
475
+ def to_body
476
+ to_hash
477
+ end
478
+
479
+ # Returns the object in the form of hash
480
+ # @return [Hash] Returns the object in the form of hash
481
+ def to_hash
482
+ hash = {}
483
+ self.class.attribute_map.each_pair do |attr, param|
484
+ value = self.send(attr)
485
+ next if value.nil?
486
+ hash[param] = _to_hash(value)
487
+ end
488
+ hash
489
+ end
490
+ # Outputs non-array value in the form of hash
491
+ # For object, use to_hash. Otherwise, just return the value
492
+ # @param [Object] value Any valid value
493
+ # @return [Hash] Returns the value in the form of hash
494
+ def _to_hash(value)
495
+ if value.is_a?(Array)
496
+ value.compact.map { |v| _to_hash(v) }
497
+ elsif value.is_a?(Hash)
498
+ {}.tap do |hash|
499
+ value.each { |k, v| hash[k] = _to_hash(v) }
500
+ end
501
+ elsif value.respond_to? :to_hash
502
+ value.to_hash
503
+ else
504
+ value
505
+ end
506
+ end
507
+
508
+ end
509
+ end