Advertisement
Guest User

Untitled

a guest
Apr 20th, 2019
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.99 KB | None | 0 0
  1. class AppsConfigExtractor
  2.  
  3. def initialize(email, lcc_code)
  4. creator_id = User.find_by_email(email) ? User.find_by_email(email).id : false
  5. company_code = Lcc.find_by(code: lcc_code) ? Lcc.find_by(code: lcc_code).code : false
  6.  
  7. if creator_id && company_code
  8. env = Rails.application.secrets.pex_host_url.split('//').last[0..2].upcase
  9. document_generator = Dm::DataMigration::DocumentGeneratorSchedule.new
  10. document_type = 'INTERNAL'
  11.  
  12. @output = Object.new
  13. @LccConfigCounter = 0
  14. @EftConfigCounter = 0
  15. @PayGroupConfigCounter = 0
  16. @CalendarPeriodConfigCounter = 0
  17. @EmailDomainConfigCounter = 0
  18. @CustomerConfigCounter = 0
  19. @PayElementConfigCounter = 0
  20. @JWTConfigCounter = 0
  21. @ActiveFormConfigCounter = 0
  22.  
  23. file = generate(env, company_code)
  24. file_name = "#{document_type}_#{Gcc.first.code}_#{company_code}_D#{DateTime.now.utc.strftime('%Y%m%d')}_O999"
  25. params_for_document = params_for_config_report(creator_id, file_name, company_code)
  26. document = document_generator.create_document(file, params_for_document, [], "#{file_name}.xml")
  27.  
  28. document
  29. else
  30. puts "Please enter a valid params email address: #{creator_id}, lcc code: #{company_code}".colorize(:yellow)
  31.  
  32. false
  33. end
  34. end
  35.  
  36. def params_for_config_report(creator_id, document_name, company_code)
  37. {
  38. generated: true,
  39. document_type: Dm::DocumentType.internal,
  40. display_name: document_name,
  41. creator_id: creator_id,
  42. lcc_id: Lcc.where(code: company_code).last.id
  43. }
  44. end
  45.  
  46. def generate(env, lcc_code)
  47. temp_file = Tempfile.new('apps_config_extract.xml')
  48.  
  49. begin
  50. Gcc.find_each do |gcc|
  51. @output = {
  52. ENV: env,
  53. GccConfig: [
  54. code: gcc.code,
  55. description: gcc.description,
  56. onboarding_system: gcc.onboarding_system,
  57. create_fg_user: gcc.create_fg_user,
  58. connect_to_myhrw: gcc.connect_to_myhrw,
  59. enable_legal_notice: gcc.enable_legal_notice,
  60. legal_notice: gcc.legal_notice,
  61. is_locked: gcc.is_locked,
  62. validate_banks: gcc.validate_banks,
  63. cleahrsky: gcc.cleahrsky,
  64. contract_type: gcc.contract_type,
  65. direct_costing_post_processing: gcc.direct_costing_post_processing,
  66. worklist_enabled: gcc.worklist_enabled,
  67. euhreka_validation: gcc.euhreka_validation,
  68. enable_update_delete_form_button: gcc.enable_update_delete_form_button,
  69. hrx_active: gcc.hrx_active
  70. ],
  71. EmailDomainConfig: get_email_domains,
  72. CustomerConfig: get_customer_config,
  73. JWTApiKeyConfig: get_jwt_api_key,
  74. LccConfig: get_lccs(gcc, lcc_code),
  75. Summary: [
  76. JWTConfigCounter: @JWTConfigCounter,
  77. LccConfigCounter: @LccConfigCounter,
  78. EftConfigCounter: @EftConfigCounter,
  79. PayGroupConfigCounter: @PayGroupConfigCounter,
  80. CalendarConfigCounter: @CalendarConfigCounter,
  81. EmailDomainConfigCounter: @EmailDomainConfigCounter,
  82. CustomerConfigCounter: @CustomerConfigCounter,
  83. PayElementConfigCounter: @PayElementConfigCounter,
  84. ActiveFormConfigCounter: @ActiveFormConfigCounter
  85. ]
  86. }
  87. end
  88. temp_file << @output.to_yaml
  89. ensure
  90. temp_file.close
  91. end
  92.  
  93. temp_file
  94. end
  95.  
  96. def get_lccs(gcc, lcc_code)
  97. data = Array.new
  98.  
  99. if lcc_code == '00000' # todo
  100. gcc.lccs.each do |lcc|
  101. data.push(params_for_lccs(lcc))
  102. @LccConfigCounter += 1
  103. end
  104. else
  105. Lcc.where(code: lcc_code).find_each do |lcc|
  106. data.push(params_for_lccs(lcc))
  107. @LccConfigCounter += 1
  108. end
  109. end
  110.  
  111. data.push({
  112. LccConfigCount: @LccConfigCounter
  113. })
  114.  
  115. data
  116. end
  117.  
  118. def params_for_lccs(lcc)
  119. {
  120. code: lcc.code,
  121. description: lcc.description,
  122. payroll_service_id: lcc.payroll_service_id,
  123. payroll_service_name: lcc.payroll_service.name,
  124. payroll_service_description: lcc.payroll_service.description,
  125. payroll_service_endpoint: lcc.payroll_service.payroll_service_endpoint,
  126. payroll_service_ws_user: lcc.payroll_service.ws_user,
  127. payroll_service_ws_password: '!excluded sensitive data!', #lcc.payroll_service.password,
  128. third_party: lcc.third_party,
  129. documents_only: lcc.documents_only,
  130. gen_psid: lcc.gen_psid,
  131. internal_eft_id: lcc.internal_eft_id,
  132. eft_config_count: lcc.efts.count,
  133. EftConfig: get_efts(lcc),
  134. PayGroups: get_paygroup(lcc),
  135. PayElements: get_pay_elements(lcc),
  136. LocalForms: get_lcc_forms(lcc)
  137. }
  138. end
  139.  
  140. def get_efts(lcc)
  141. data = Array.new
  142. @EftConfigCounter = 0
  143.  
  144. lcc.efts.each do |eft|
  145. data.push({
  146. id: eft.id,
  147. internal_eft_id: eft.internal_eft_id,
  148. src_username: eft.src_username,
  149. trg_username: eft.trg_username,
  150. src_host_address: eft.src_host_address,
  151. trg_host_address: eft.trg_host_address,
  152. trg_path: eft.trg_path,
  153. remote_src_username: eft.remote_src_username,
  154. target_system: eft.target_system,
  155. file_type: eft.file_type,
  156. partner_id: eft.partner_id,
  157. file_prefix: eft.file_prefix,
  158. itfn: eft.itfn,
  159. rename_prefix: eft.rename_prefix,
  160. occurence: eft.occurence
  161. })
  162.  
  163. @EftConfigCounter += 1
  164. end
  165.  
  166. data.push({
  167. EFTConfigCount: @EftConfigCounter
  168. })
  169.  
  170. data
  171. end
  172.  
  173. def get_paygroup(lcc)
  174. data = Array.new
  175.  
  176. lcc.pay_groups.each do |pg|
  177. data.push({
  178. code: pg.code,
  179. description: pg.description,
  180. calendar: [
  181. country_code: pg.active_calendar.try(:country_code),
  182. curr_pp_start_date: pg.active_calendar.try(:curr_pp_start_date),
  183. curr_pp_end_date: pg.active_calendar.try(:curr_pp_end_date),
  184. periods: get_calendar_periods(pg)
  185. ]
  186. })
  187.  
  188. @PayGroupConfigCounter += 1
  189. end
  190. data.push({
  191. PayGroupConfigCount: @PayGroupConfigCounter
  192. })
  193.  
  194. data
  195. end
  196.  
  197. def get_calendar_periods(pay_group)
  198. data = Array.new
  199.  
  200. if pay_group.active_calendar
  201. pay_group.active_calendar.pay_periods.each do |pp|
  202. data.push({
  203. pp_type: pp.pp_type,
  204. pc_start_date: pp.pc_start_date,
  205. pc_end_date: pp.pc_end_date,
  206. cutoff_date: pp.cutoff_date,
  207. manual_data_load_cutoff: pp.manual_data_load_cutoff,
  208. time_pay_element_data_cutoff: pp.time_pay_element_data_cutoff,
  209. queue_open: pp.queue_open,
  210. pay_start_date: pp.pay_start_date,
  211. pay_end_date: pp.pay_end_date,
  212. fico_date: pp.fico_date,
  213. payslip_date: pp.payslip_date,
  214. payment_date: pp.payment_date,
  215. file_date: pp.file_date,
  216. year: pp.year,
  217. number: pp.number,
  218. offcycle: pp.offcycle,
  219. ticket: pp.ticket,
  220. pay_calendar_id: pp.pay_calendar_id,
  221. task_id: pp.task_id,
  222. earliest_retro_date: pp.earliest_retro_date
  223. })
  224.  
  225. @CalendarPeriodConfigCounter += 1
  226. end
  227. data.push({
  228. CalendarConfigCount: @CalendarPeriodConfigCounter
  229. })
  230. end
  231.  
  232. data
  233. end
  234.  
  235. def get_email_domains
  236. data = Array.new
  237.  
  238. EmailDomain.find_each do |ed|
  239. if ed.status.upcase == 'ACTIVE'
  240. data.push({
  241. domain: ed.domain,
  242. status: ed.status
  243. })
  244. @EmailDomainConfigCounter += 1
  245. end
  246. end
  247. data.push({
  248. EmailDomainConfigCount: @EmailDomainConfigCounter
  249. })
  250.  
  251. data
  252. end
  253.  
  254. def get_customer_config
  255. data = Array.new
  256.  
  257. Conf::CustomerConfig.find_each do |cc|
  258. if cc.status.upcase == 'ACTIVE'
  259. data.push({
  260. trans_type: cc.trans_type,
  261. origin: cc.origin,
  262. mapping: cc.mapping,
  263. xsd_element: cc.xsd_element,
  264. status: cc.status,
  265. value: cc.value,
  266. description: cc.description,
  267. country: cc.country,
  268. })
  269. @CustomerConfigCounter += 1
  270. end
  271. end
  272. data.push({
  273. CustomerConfigCounter: @CustomerConfigCounter
  274. })
  275.  
  276. data
  277. end
  278.  
  279. def get_pay_elements(lcc)
  280. data = Array.new
  281. lcc.pay_elements.find_each do |pe|
  282. if pe.enabled_for_gcc
  283. data.push({
  284. code: pe.hr_id,
  285. description: pe.description,
  286. basis: pe.basis,
  287. type: pe.pay_element_type,
  288. enabled_for_gcc: pe.enabled_for_gcc
  289. })
  290. @PayElementConfigCounter += 1
  291. end
  292. end
  293. data.push({
  294. PayElementConfigCounter: @PayElementConfigCounter
  295. })
  296.  
  297. data
  298. end
  299.  
  300. def get_jwt_api_key
  301. data = Array.new
  302. Conf::JWTApiKey.find_each do |jt|
  303. data.push({
  304. client_id: jt.client_id,
  305. public_key: jt.public_key,
  306. secret_key: '!excluded sensitive data!' #jt.secret_key
  307. })
  308. @JWTConfigCounter += 1
  309. end
  310. data.push({
  311. JWTConfigCounter: @JWTConfigCounter
  312. })
  313.  
  314. data
  315. end
  316.  
  317. def get_lcc_forms(lcc)
  318. data = Array.new
  319. lcc.form_active_states.each do |fa|
  320. if fa.active
  321. data.push({
  322. code: get_form_data(fa.fcs_field_set_uuid).code,
  323. name: get_form_data(fa.fcs_field_set_uuid).name,
  324. country_code: get_form_data(fa.fcs_field_set_uuid).country_code,
  325. active: fa.active,
  326. trigger_on_hire: fa.trigger_on_hire,
  327. trigger_on_rehire: fa.trigger_on_rehire,
  328. trigger_on_transfer_old: fa.trigger_on_transfer_old,
  329. trigger_on_transfer_new: fa.trigger_on_transfer_new,
  330. trigger_on_termination: fa.trigger_on_termination,
  331. enabled_for_employees: fa.enabled_for_employees
  332. })
  333. @ActiveFormConfigCounter += 1
  334. end
  335. end
  336. data.push({
  337. ActiveFormConfigCounter: @ActiveFormConfigCounter
  338. })
  339.  
  340. data
  341. end
  342.  
  343. def get_form_data(uuid)
  344. Fcs::Form.where(uuid: uuid).last
  345. end
  346. end
  347.  
  348. # Run the extractor (sample paramenters)
  349. AppsConfigExtractor.new('arvinfrancis.bien@ngahr.com','HU001')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement