apimatic-ak-sdk 0.0.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 (229) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +28 -0
  3. data/README.md +190 -0
  4. data/bin/console +15 -0
  5. data/lib/akoya/api_helper.rb +10 -0
  6. data/lib/akoya/client.rb +117 -0
  7. data/lib/akoya/configuration.rb +195 -0
  8. data/lib/akoya/controllers/account_information_controller.rb +93 -0
  9. data/lib/akoya/controllers/balances_controller.rb +92 -0
  10. data/lib/akoya/controllers/base_controller.rb +65 -0
  11. data/lib/akoya/controllers/customers_controller.rb +112 -0
  12. data/lib/akoya/controllers/investments_controller.rb +95 -0
  13. data/lib/akoya/controllers/payments_controller.rb +70 -0
  14. data/lib/akoya/controllers/statements_controller.rb +158 -0
  15. data/lib/akoya/controllers/tokens_controller.rb +122 -0
  16. data/lib/akoya/controllers/transactions_controller.rb +108 -0
  17. data/lib/akoya/exceptions/api_exception.rb +21 -0
  18. data/lib/akoya/exceptions/error_entity_exception.rb +54 -0
  19. data/lib/akoya/exceptions/error_response_exception.rb +53 -0
  20. data/lib/akoya/http/api_response.rb +19 -0
  21. data/lib/akoya/http/auth/basic_auth.rb +62 -0
  22. data/lib/akoya/http/auth/bearer_auth.rb +53 -0
  23. data/lib/akoya/http/http_call_back.rb +10 -0
  24. data/lib/akoya/http/http_method_enum.rb +10 -0
  25. data/lib/akoya/http/http_request.rb +10 -0
  26. data/lib/akoya/http/http_response.rb +10 -0
  27. data/lib/akoya/http/proxy_settings.rb +22 -0
  28. data/lib/akoya/logging/configuration/api_logging_configuration.rb +186 -0
  29. data/lib/akoya/logging/sdk_logger.rb +17 -0
  30. data/lib/akoya/models/account.rb +86 -0
  31. data/lib/akoya/models/account_category.rb +50 -0
  32. data/lib/akoya/models/account_contact_entity.rb +132 -0
  33. data/lib/akoya/models/account_holder_entity.rb +178 -0
  34. data/lib/akoya/models/account_holder_relationship.rb +110 -0
  35. data/lib/akoya/models/account_holder_relationship_account_holder_entity.rb +110 -0
  36. data/lib/akoya/models/account_information.rb +335 -0
  37. data/lib/akoya/models/action.rb +48 -0
  38. data/lib/akoya/models/address.rb +144 -0
  39. data/lib/akoya/models/akoya_account_info_product.rb +88 -0
  40. data/lib/akoya/models/an_array_of_statements.rb +95 -0
  41. data/lib/akoya/models/an_investment_holding.rb +493 -0
  42. data/lib/akoya/models/annual_increase_type.rb +40 -0
  43. data/lib/akoya/models/annuity_account.rb +370 -0
  44. data/lib/akoya/models/annuity_account_info.rb +86 -0
  45. data/lib/akoya/models/annuity_balance_details.rb +87 -0
  46. data/lib/akoya/models/annuity_balances.rb +477 -0
  47. data/lib/akoya/models/annuity_product_type.rb +36 -0
  48. data/lib/akoya/models/annuity_value_basis.rb +36 -0
  49. data/lib/akoya/models/array_of_account_payment_networks.rb +85 -0
  50. data/lib/akoya/models/asset_class.rb +95 -0
  51. data/lib/akoya/models/asset_class_an_investment_holding.rb +85 -0
  52. data/lib/akoya/models/asset_class_asset_class.rb +56 -0
  53. data/lib/akoya/models/asset_class_citi_bank_investment_holdings.rb +86 -0
  54. data/lib/akoya/models/balance_type.rb +37 -0
  55. data/lib/akoya/models/balance_type_investment_balance_list.rb +36 -0
  56. data/lib/akoya/models/balances.rb +88 -0
  57. data/lib/akoya/models/base_model.rb +110 -0
  58. data/lib/akoya/models/business_customer_entity.rb +127 -0
  59. data/lib/akoya/models/business_customer_entity_account_holder_entity.rb +126 -0
  60. data/lib/akoya/models/business_customer_entity_customer.rb +126 -0
  61. data/lib/akoya/models/call_type.rb +44 -0
  62. data/lib/akoya/models/citi_bank_investment.rb +535 -0
  63. data/lib/akoya/models/citi_bank_investment_details.rb +75 -0
  64. data/lib/akoya/models/citi_bank_investment_holdings.rb +210 -0
  65. data/lib/akoya/models/compounding_period.rb +56 -0
  66. data/lib/akoya/models/contribution_entity.rb +266 -0
  67. data/lib/akoya/models/coupon_mature_frequency.rb +48 -0
  68. data/lib/akoya/models/currency.rb +108 -0
  69. data/lib/akoya/models/currency_citi_bank_investment_holdings.rb +86 -0
  70. data/lib/akoya/models/currency_entity.rb +109 -0
  71. data/lib/akoya/models/current_customer.rb +75 -0
  72. data/lib/akoya/models/customer.rb +164 -0
  73. data/lib/akoya/models/customer_current_customer.rb +164 -0
  74. data/lib/akoya/models/customer_name.rb +127 -0
  75. data/lib/akoya/models/customer_name_account_holder_entity.rb +127 -0
  76. data/lib/akoya/models/customer_name_customer.rb +127 -0
  77. data/lib/akoya/models/debit_credit_memo.rb +37 -0
  78. data/lib/akoya/models/debt_class.rb +44 -0
  79. data/lib/akoya/models/debt_security.rb +137 -0
  80. data/lib/akoya/models/debt_security_entity.rb +216 -0
  81. data/lib/akoya/models/debt_type.rb +36 -0
  82. data/lib/akoya/models/delivery_address.rb +153 -0
  83. data/lib/akoya/models/deposit_account.rb +375 -0
  84. data/lib/akoya/models/deposit_account_info.rb +86 -0
  85. data/lib/akoya/models/deposit_balance_details.rb +87 -0
  86. data/lib/akoya/models/deposit_balances.rb +438 -0
  87. data/lib/akoya/models/deposit_transaction.rb +369 -0
  88. data/lib/akoya/models/deposit_transaction_details.rb +87 -0
  89. data/lib/akoya/models/domicile.rb +85 -0
  90. data/lib/akoya/models/equity_grant.rb +199 -0
  91. data/lib/akoya/models/error_entity_account_information.rb +97 -0
  92. data/lib/akoya/models/error_entity_annuity_account.rb +97 -0
  93. data/lib/akoya/models/error_entity_annuity_balances.rb +97 -0
  94. data/lib/akoya/models/error_entity_citi_bank_investment.rb +97 -0
  95. data/lib/akoya/models/error_entity_deposit_account.rb +97 -0
  96. data/lib/akoya/models/error_entity_deposit_balances.rb +97 -0
  97. data/lib/akoya/models/error_entity_insurance_account.rb +97 -0
  98. data/lib/akoya/models/error_entity_insurance_balances.rb +97 -0
  99. data/lib/akoya/models/error_entity_investment_account.rb +97 -0
  100. data/lib/akoya/models/error_entity_investment_balances.rb +97 -0
  101. data/lib/akoya/models/error_entity_line_of_credit_balances.rb +97 -0
  102. data/lib/akoya/models/error_entity_loan_account.rb +97 -0
  103. data/lib/akoya/models/error_entity_loan_balances.rb +97 -0
  104. data/lib/akoya/models/error_entity_us_bank_investment.rb +97 -0
  105. data/lib/akoya/models/fi_asset_class.rb +95 -0
  106. data/lib/akoya/models/fi_asset_class_an_investment_holding.rb +85 -0
  107. data/lib/akoya/models/fi_attribute.rb +95 -0
  108. data/lib/akoya/models/fi_attribute_entity.rb +95 -0
  109. data/lib/akoya/models/frequency.rb +56 -0
  110. data/lib/akoya/models/hateoas_link.rb +105 -0
  111. data/lib/akoya/models/held_in_account.rb +44 -0
  112. data/lib/akoya/models/holding_sub_type.rb +36 -0
  113. data/lib/akoya/models/holding_type.rb +56 -0
  114. data/lib/akoya/models/income_type.rb +41 -0
  115. data/lib/akoya/models/industry_code.rb +85 -0
  116. data/lib/akoya/models/insurance_account.rb +349 -0
  117. data/lib/akoya/models/insurance_account_info.rb +87 -0
  118. data/lib/akoya/models/insurance_balance_details.rb +87 -0
  119. data/lib/akoya/models/insurance_balances.rb +420 -0
  120. data/lib/akoya/models/insurance_transaction.rb +351 -0
  121. data/lib/akoya/models/insurance_transaction_details.rb +87 -0
  122. data/lib/akoya/models/interest_rate_type.rb +36 -0
  123. data/lib/akoya/models/inv401_k_source.rb +56 -0
  124. data/lib/akoya/models/inv401_k_source_open_order_entity.rb +57 -0
  125. data/lib/akoya/models/inv401_k_surce.rb +56 -0
  126. data/lib/akoya/models/investment_account.rb +411 -0
  127. data/lib/akoya/models/investment_account_annuity_balance.rb +87 -0
  128. data/lib/akoya/models/investment_account_deposit_balance.rb +87 -0
  129. data/lib/akoya/models/investment_account_info.rb +87 -0
  130. data/lib/akoya/models/investment_account_insurance_balance.rb +87 -0
  131. data/lib/akoya/models/investment_account_loan_balance.rb +86 -0
  132. data/lib/akoya/models/investment_account_loc_balance.rb +86 -0
  133. data/lib/akoya/models/investment_balance_details.rb +87 -0
  134. data/lib/akoya/models/investment_balance_list.rb +148 -0
  135. data/lib/akoya/models/investment_balances.rb +525 -0
  136. data/lib/akoya/models/investment_details.rb +88 -0
  137. data/lib/akoya/models/investment_loan_entity.rb +271 -0
  138. data/lib/akoya/models/investment_transaction.rb +783 -0
  139. data/lib/akoya/models/investment_transaction_details.rb +87 -0
  140. data/lib/akoya/models/investments.rb +88 -0
  141. data/lib/akoya/models/line_item.rb +156 -0
  142. data/lib/akoya/models/line_of_credit_balances.rb +601 -0
  143. data/lib/akoya/models/links.rb +95 -0
  144. data/lib/akoya/models/loan_account.rb +417 -0
  145. data/lib/akoya/models/loan_account_info.rb +86 -0
  146. data/lib/akoya/models/loan_balance_details.rb +86 -0
  147. data/lib/akoya/models/loan_balances.rb +556 -0
  148. data/lib/akoya/models/loan_payment_frequency.rb +68 -0
  149. data/lib/akoya/models/loan_transaction.rb +360 -0
  150. data/lib/akoya/models/loan_transaction_details.rb +87 -0
  151. data/lib/akoya/models/loc_account_info.rb +86 -0
  152. data/lib/akoya/models/loc_balance_details.rb +86 -0
  153. data/lib/akoya/models/loc_transaction.rb +372 -0
  154. data/lib/akoya/models/loc_transaction_details.rb +86 -0
  155. data/lib/akoya/models/mnext.rb +84 -0
  156. data/lib/akoya/models/mode.rb +36 -0
  157. data/lib/akoya/models/mutual_fund_security.rb +99 -0
  158. data/lib/akoya/models/mutual_fund_security_entity.rb +150 -0
  159. data/lib/akoya/models/mutual_fund_type.rb +40 -0
  160. data/lib/akoya/models/obtain_tokens.rb +99 -0
  161. data/lib/akoya/models/open_order_entity.rb +228 -0
  162. data/lib/akoya/models/option_security.rb +125 -0
  163. data/lib/akoya/models/option_security_entity.rb +127 -0
  164. data/lib/akoya/models/option_type.rb +36 -0
  165. data/lib/akoya/models/order_duration.rb +40 -0
  166. data/lib/akoya/models/order_type.rb +60 -0
  167. data/lib/akoya/models/other_security_entity.rb +77 -0
  168. data/lib/akoya/models/paginated_array.rb +75 -0
  169. data/lib/akoya/models/payment_details.rb +142 -0
  170. data/lib/akoya/models/payment_frequency.rb +56 -0
  171. data/lib/akoya/models/payment_frequency_annuity_account.rb +44 -0
  172. data/lib/akoya/models/payment_frequency_annuity_balances.rb +44 -0
  173. data/lib/akoya/models/payment_network_supported_by_account.rb +129 -0
  174. data/lib/akoya/models/pension_source_entity.rb +143 -0
  175. data/lib/akoya/models/period_certain_guarantee.rb +48 -0
  176. data/lib/akoya/models/policy_premium_term.rb +36 -0
  177. data/lib/akoya/models/position_type.rb +36 -0
  178. data/lib/akoya/models/postion_type.rb +36 -0
  179. data/lib/akoya/models/prev.rb +84 -0
  180. data/lib/akoya/models/refresh_tokens.rb +103 -0
  181. data/lib/akoya/models/secured.rb +36 -0
  182. data/lib/akoya/models/security_id_type.rb +52 -0
  183. data/lib/akoya/models/security_id_type_investment_transaction.rb +52 -0
  184. data/lib/akoya/models/security_type.rb +56 -0
  185. data/lib/akoya/models/statement_entity.rb +136 -0
  186. data/lib/akoya/models/status.rb +56 -0
  187. data/lib/akoya/models/status_deposit_transaction.rb +44 -0
  188. data/lib/akoya/models/status_insurance_transaction.rb +44 -0
  189. data/lib/akoya/models/status_investment_transaction.rb +44 -0
  190. data/lib/akoya/models/status_loan_transaction.rb +44 -0
  191. data/lib/akoya/models/status_loc_transaction.rb +44 -0
  192. data/lib/akoya/models/status_statement_entity.rb +40 -0
  193. data/lib/akoya/models/status_transaction.rb +44 -0
  194. data/lib/akoya/models/stock_security_entity.rb +137 -0
  195. data/lib/akoya/models/stock_type.rb +56 -0
  196. data/lib/akoya/models/sub_account.rb +44 -0
  197. data/lib/akoya/models/sub_account_fund.rb +44 -0
  198. data/lib/akoya/models/sub_account_sec.rb +44 -0
  199. data/lib/akoya/models/sweep_security_entity.rb +118 -0
  200. data/lib/akoya/models/tax_lot.rb +137 -0
  201. data/lib/akoya/models/tax_lot_an_investment_holding.rb +139 -0
  202. data/lib/akoya/models/telephone.rb +95 -0
  203. data/lib/akoya/models/telephone_number.rb +95 -0
  204. data/lib/akoya/models/token_example_response.rb +101 -0
  205. data/lib/akoya/models/transaction.rb +328 -0
  206. data/lib/akoya/models/transaction_reason.rb +41 -0
  207. data/lib/akoya/models/transaction_type.rb +84 -0
  208. data/lib/akoya/models/transaction_type_insurance_transaction.rb +44 -0
  209. data/lib/akoya/models/transaction_type_investment_transaction.rb +192 -0
  210. data/lib/akoya/models/transaction_type_loan_transaction.rb +44 -0
  211. data/lib/akoya/models/transaction_type_loc_transaction.rb +84 -0
  212. data/lib/akoya/models/transactions_entity.rb +98 -0
  213. data/lib/akoya/models/transfer_action.rb +36 -0
  214. data/lib/akoya/models/type.rb +44 -0
  215. data/lib/akoya/models/type_hateoas_link.rb +52 -0
  216. data/lib/akoya/models/type_telephone_number.rb +44 -0
  217. data/lib/akoya/models/unit_type.rb +36 -0
  218. data/lib/akoya/models/unit_type_open_order_entity.rb +36 -0
  219. data/lib/akoya/models/us_bank_investment.rb +535 -0
  220. data/lib/akoya/models/us_bank_investment_details.rb +75 -0
  221. data/lib/akoya/models/us_bank_investment_holdings.rb +403 -0
  222. data/lib/akoya/models/vesting.rb +135 -0
  223. data/lib/akoya/models/vesting_entity.rb +185 -0
  224. data/lib/akoya/models/x_akoya_interaction_type.rb +36 -0
  225. data/lib/akoya/utilities/date_time_helper.rb +11 -0
  226. data/lib/akoya/utilities/file_wrapper.rb +28 -0
  227. data/lib/akoya/utilities/union_type_lookup.rb +91 -0
  228. data/lib/akoya.rb +250 -0
  229. metadata +312 -0
@@ -0,0 +1,271 @@
1
+ # akoya
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ require 'date'
7
+ module Akoya
8
+ # Information about an investment loan.
9
+ class InvestmentLoanEntity < BaseModel
10
+ SKIP = Object.new
11
+ private_constant :SKIP
12
+
13
+ # Unique identifier for this loan
14
+ # @return [String]
15
+ attr_accessor :loan_id
16
+
17
+ # Description
18
+ # @return [String]
19
+ attr_accessor :loan_description
20
+
21
+ # Initial loan balance amount
22
+ # @return [Float]
23
+ attr_accessor :initial_loan_balance
24
+
25
+ # Start date of the loan
26
+ # @return [DateTime]
27
+ attr_accessor :loan_start_date
28
+
29
+ # Current loan principal balance amount
30
+ # @return [Float]
31
+ attr_accessor :current_loan_balance
32
+
33
+ # Date and time of current loan balance
34
+ # @return [DateTime]
35
+ attr_accessor :date_as_of
36
+
37
+ # Loan annual interest rate for the loan
38
+ # @return [Float]
39
+ attr_accessor :loan_rate
40
+
41
+ # Loan payment amount
42
+ # @return [Float]
43
+ attr_accessor :loan_payment_amount
44
+
45
+ # Loan payment amount
46
+ # @return [LoanPaymentFrequency]
47
+ attr_accessor :loan_payment_frequency
48
+
49
+ # Initial number of loan payments
50
+ # @return [Float]
51
+ attr_accessor :loan_payment_initial
52
+
53
+ # Remaining number of loan payments
54
+ # @return [Integer]
55
+ attr_accessor :loan_payments_remaining
56
+
57
+ # Expected loan end date
58
+ # @return [DateTime]
59
+ attr_accessor :loan_maturity_date
60
+
61
+ # Total interest paid to date on this loan
62
+ # @return [Float]
63
+ attr_accessor :loan_interest_to_date
64
+
65
+ # Total projected interest to be paid on this loan
66
+ # @return [Float]
67
+ attr_accessor :loan_total_projected_interest
68
+
69
+ # The next payment date for the loan
70
+ # @return [DateTime]
71
+ attr_accessor :loan_next_payment_date
72
+
73
+ # A mapping from model property names to API property names.
74
+ def self.names
75
+ @_hash = {} if @_hash.nil?
76
+ @_hash['loan_id'] = 'loanId'
77
+ @_hash['loan_description'] = 'loanDescription'
78
+ @_hash['initial_loan_balance'] = 'initialLoanBalance'
79
+ @_hash['loan_start_date'] = 'loanStartDate'
80
+ @_hash['current_loan_balance'] = 'currentLoanBalance'
81
+ @_hash['date_as_of'] = 'dateAsOf'
82
+ @_hash['loan_rate'] = 'loanRate'
83
+ @_hash['loan_payment_amount'] = 'loanPaymentAmount'
84
+ @_hash['loan_payment_frequency'] = 'loanPaymentFrequency'
85
+ @_hash['loan_payment_initial'] = 'loanPaymentInitial'
86
+ @_hash['loan_payments_remaining'] = 'loanPaymentsRemaining'
87
+ @_hash['loan_maturity_date'] = 'loanMaturityDate'
88
+ @_hash['loan_interest_to_date'] = 'loanInterestToDate'
89
+ @_hash['loan_total_projected_interest'] = 'loanTotalProjectedInterest'
90
+ @_hash['loan_next_payment_date'] = 'loanNextPaymentDate'
91
+ @_hash
92
+ end
93
+
94
+ # An array for optional fields
95
+ def self.optionals
96
+ %w[
97
+ loan_id
98
+ loan_description
99
+ initial_loan_balance
100
+ loan_start_date
101
+ current_loan_balance
102
+ date_as_of
103
+ loan_rate
104
+ loan_payment_amount
105
+ loan_payment_frequency
106
+ loan_payment_initial
107
+ loan_payments_remaining
108
+ loan_maturity_date
109
+ loan_interest_to_date
110
+ loan_total_projected_interest
111
+ loan_next_payment_date
112
+ ]
113
+ end
114
+
115
+ # An array for nullable fields
116
+ def self.nullables
117
+ []
118
+ end
119
+
120
+ def initialize(loan_id: SKIP, loan_description: SKIP,
121
+ initial_loan_balance: SKIP, loan_start_date: SKIP,
122
+ current_loan_balance: SKIP, date_as_of: SKIP,
123
+ loan_rate: SKIP, loan_payment_amount: SKIP,
124
+ loan_payment_frequency: SKIP, loan_payment_initial: SKIP,
125
+ loan_payments_remaining: SKIP, loan_maturity_date: SKIP,
126
+ loan_interest_to_date: SKIP,
127
+ loan_total_projected_interest: SKIP,
128
+ loan_next_payment_date: SKIP, additional_properties: nil)
129
+ # Add additional model properties to the instance
130
+ additional_properties = {} if additional_properties.nil?
131
+
132
+ @loan_id = loan_id unless loan_id == SKIP
133
+ @loan_description = loan_description unless loan_description == SKIP
134
+ @initial_loan_balance = initial_loan_balance unless initial_loan_balance == SKIP
135
+ @loan_start_date = loan_start_date unless loan_start_date == SKIP
136
+ @current_loan_balance = current_loan_balance unless current_loan_balance == SKIP
137
+ @date_as_of = date_as_of unless date_as_of == SKIP
138
+ @loan_rate = loan_rate unless loan_rate == SKIP
139
+ @loan_payment_amount = loan_payment_amount unless loan_payment_amount == SKIP
140
+ @loan_payment_frequency = loan_payment_frequency unless loan_payment_frequency == SKIP
141
+ @loan_payment_initial = loan_payment_initial unless loan_payment_initial == SKIP
142
+ @loan_payments_remaining = loan_payments_remaining unless loan_payments_remaining == SKIP
143
+ @loan_maturity_date = loan_maturity_date unless loan_maturity_date == SKIP
144
+ @loan_interest_to_date = loan_interest_to_date unless loan_interest_to_date == SKIP
145
+ unless loan_total_projected_interest == SKIP
146
+ @loan_total_projected_interest =
147
+ loan_total_projected_interest
148
+ end
149
+ @loan_next_payment_date = loan_next_payment_date unless loan_next_payment_date == SKIP
150
+ @additional_properties = additional_properties
151
+ end
152
+
153
+ # Creates an instance of the object from a hash.
154
+ def self.from_hash(hash)
155
+ return nil unless hash
156
+
157
+ # Extract variables from the hash.
158
+ loan_id = hash.key?('loanId') ? hash['loanId'] : SKIP
159
+ loan_description =
160
+ hash.key?('loanDescription') ? hash['loanDescription'] : SKIP
161
+ initial_loan_balance =
162
+ hash.key?('initialLoanBalance') ? hash['initialLoanBalance'] : SKIP
163
+ loan_start_date = if hash.key?('loanStartDate')
164
+ (DateTimeHelper.from_rfc3339(hash['loanStartDate']) if hash['loanStartDate'])
165
+ else
166
+ SKIP
167
+ end
168
+ current_loan_balance =
169
+ hash.key?('currentLoanBalance') ? hash['currentLoanBalance'] : SKIP
170
+ date_as_of = if hash.key?('dateAsOf')
171
+ (DateTimeHelper.from_rfc3339(hash['dateAsOf']) if hash['dateAsOf'])
172
+ else
173
+ SKIP
174
+ end
175
+ loan_rate = hash.key?('loanRate') ? hash['loanRate'] : SKIP
176
+ loan_payment_amount =
177
+ hash.key?('loanPaymentAmount') ? hash['loanPaymentAmount'] : SKIP
178
+ loan_payment_frequency =
179
+ hash.key?('loanPaymentFrequency') ? hash['loanPaymentFrequency'] : SKIP
180
+ loan_payment_initial =
181
+ hash.key?('loanPaymentInitial') ? hash['loanPaymentInitial'] : SKIP
182
+ loan_payments_remaining =
183
+ hash.key?('loanPaymentsRemaining') ? hash['loanPaymentsRemaining'] : SKIP
184
+ loan_maturity_date = if hash.key?('loanMaturityDate')
185
+ (DateTimeHelper.from_rfc3339(hash['loanMaturityDate']) if hash['loanMaturityDate'])
186
+ else
187
+ SKIP
188
+ end
189
+ loan_interest_to_date =
190
+ hash.key?('loanInterestToDate') ? hash['loanInterestToDate'] : SKIP
191
+ loan_total_projected_interest =
192
+ hash.key?('loanTotalProjectedInterest') ? hash['loanTotalProjectedInterest'] : SKIP
193
+ loan_next_payment_date = if hash.key?('loanNextPaymentDate')
194
+ (DateTimeHelper.from_rfc3339(hash['loanNextPaymentDate']) if hash['loanNextPaymentDate'])
195
+ else
196
+ SKIP
197
+ end
198
+
199
+ # Create a new hash for additional properties, removing known properties.
200
+ new_hash = hash.reject { |k, _| names.value?(k) }
201
+
202
+ additional_properties = APIHelper.get_additional_properties(
203
+ new_hash, proc { |value| value }
204
+ )
205
+
206
+ # Create object from extracted values.
207
+ InvestmentLoanEntity.new(loan_id: loan_id,
208
+ loan_description: loan_description,
209
+ initial_loan_balance: initial_loan_balance,
210
+ loan_start_date: loan_start_date,
211
+ current_loan_balance: current_loan_balance,
212
+ date_as_of: date_as_of,
213
+ loan_rate: loan_rate,
214
+ loan_payment_amount: loan_payment_amount,
215
+ loan_payment_frequency: loan_payment_frequency,
216
+ loan_payment_initial: loan_payment_initial,
217
+ loan_payments_remaining: loan_payments_remaining,
218
+ loan_maturity_date: loan_maturity_date,
219
+ loan_interest_to_date: loan_interest_to_date,
220
+ loan_total_projected_interest: loan_total_projected_interest,
221
+ loan_next_payment_date: loan_next_payment_date,
222
+ additional_properties: additional_properties)
223
+ end
224
+
225
+ def to_custom_loan_start_date
226
+ DateTimeHelper.to_rfc3339(loan_start_date)
227
+ end
228
+
229
+ def to_custom_date_as_of
230
+ DateTimeHelper.to_rfc3339(date_as_of)
231
+ end
232
+
233
+ def to_custom_loan_maturity_date
234
+ DateTimeHelper.to_rfc3339(loan_maturity_date)
235
+ end
236
+
237
+ def to_custom_loan_next_payment_date
238
+ DateTimeHelper.to_rfc3339(loan_next_payment_date)
239
+ end
240
+
241
+ # Provides a human-readable string representation of the object.
242
+ def to_s
243
+ class_name = self.class.name.split('::').last
244
+ "<#{class_name} loan_id: #{@loan_id}, loan_description: #{@loan_description},"\
245
+ " initial_loan_balance: #{@initial_loan_balance}, loan_start_date: #{@loan_start_date},"\
246
+ " current_loan_balance: #{@current_loan_balance}, date_as_of: #{@date_as_of}, loan_rate:"\
247
+ " #{@loan_rate}, loan_payment_amount: #{@loan_payment_amount}, loan_payment_frequency:"\
248
+ " #{@loan_payment_frequency}, loan_payment_initial: #{@loan_payment_initial},"\
249
+ " loan_payments_remaining: #{@loan_payments_remaining}, loan_maturity_date:"\
250
+ " #{@loan_maturity_date}, loan_interest_to_date: #{@loan_interest_to_date},"\
251
+ " loan_total_projected_interest: #{@loan_total_projected_interest}, loan_next_payment_date:"\
252
+ " #{@loan_next_payment_date}, additional_properties: #{@additional_properties}>"
253
+ end
254
+
255
+ # Provides a debugging-friendly string with detailed object information.
256
+ def inspect
257
+ class_name = self.class.name.split('::').last
258
+ "<#{class_name} loan_id: #{@loan_id.inspect}, loan_description:"\
259
+ " #{@loan_description.inspect}, initial_loan_balance: #{@initial_loan_balance.inspect},"\
260
+ " loan_start_date: #{@loan_start_date.inspect}, current_loan_balance:"\
261
+ " #{@current_loan_balance.inspect}, date_as_of: #{@date_as_of.inspect}, loan_rate:"\
262
+ " #{@loan_rate.inspect}, loan_payment_amount: #{@loan_payment_amount.inspect},"\
263
+ " loan_payment_frequency: #{@loan_payment_frequency.inspect}, loan_payment_initial:"\
264
+ " #{@loan_payment_initial.inspect}, loan_payments_remaining:"\
265
+ " #{@loan_payments_remaining.inspect}, loan_maturity_date: #{@loan_maturity_date.inspect},"\
266
+ " loan_interest_to_date: #{@loan_interest_to_date.inspect}, loan_total_projected_interest:"\
267
+ " #{@loan_total_projected_interest.inspect}, loan_next_payment_date:"\
268
+ " #{@loan_next_payment_date.inspect}, additional_properties: #{@additional_properties}>"
269
+ end
270
+ end
271
+ end