mno-enterprise-api 2.0.0

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 (208) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +1 -0
  3. data/Rakefile +12 -0
  4. data/app/assets/javascripts/mno_enterprise/angular/loading-page.app.js.coffee +156 -0
  5. data/app/assets/javascripts/mno_enterprise/application.js +13 -0
  6. data/app/controllers/devise/password_expired_controller.rb +55 -0
  7. data/app/controllers/mno_enterprise/auth/confirmations_controller.rb +5 -0
  8. data/app/controllers/mno_enterprise/auth/omniauth_callbacks_controller.rb +30 -0
  9. data/app/controllers/mno_enterprise/auth/passwords_controller.rb +5 -0
  10. data/app/controllers/mno_enterprise/auth/registrations_controller.rb +5 -0
  11. data/app/controllers/mno_enterprise/auth/sessions_controller.rb +7 -0
  12. data/app/controllers/mno_enterprise/auth/unlocks_controller.rb +5 -0
  13. data/app/controllers/mno_enterprise/deletion_requests_controller.rb +5 -0
  14. data/app/controllers/mno_enterprise/impersonate_controller.rb +48 -0
  15. data/app/controllers/mno_enterprise/jpi/v1/admin/audit_events_controller.rb +16 -0
  16. data/app/controllers/mno_enterprise/jpi/v1/admin/base_resource_controller.rb +5 -0
  17. data/app/controllers/mno_enterprise/jpi/v1/admin/cloud_apps_controller.rb +46 -0
  18. data/app/controllers/mno_enterprise/jpi/v1/admin/invoices_controller.rb +47 -0
  19. data/app/controllers/mno_enterprise/jpi/v1/admin/organizations_controller.rb +27 -0
  20. data/app/controllers/mno_enterprise/jpi/v1/admin/tenant_invoices_controller.rb +14 -0
  21. data/app/controllers/mno_enterprise/jpi/v1/admin/users_controller.rb +63 -0
  22. data/app/controllers/mno_enterprise/jpi/v1/app_instances_controller.rb +24 -0
  23. data/app/controllers/mno_enterprise/jpi/v1/app_instances_sync_controller.rb +36 -0
  24. data/app/controllers/mno_enterprise/jpi/v1/base_resource_controller.rb +32 -0
  25. data/app/controllers/mno_enterprise/jpi/v1/current_users_controller.rb +5 -0
  26. data/app/controllers/mno_enterprise/jpi/v1/deletion_requests_controller.rb +5 -0
  27. data/app/controllers/mno_enterprise/jpi/v1/impac/dashboards_controller.rb +5 -0
  28. data/app/controllers/mno_enterprise/jpi/v1/impac/kpis_controller.rb +80 -0
  29. data/app/controllers/mno_enterprise/jpi/v1/impac/widgets_controller.rb +63 -0
  30. data/app/controllers/mno_enterprise/jpi/v1/industry_bundle_controller.rb +25 -0
  31. data/app/controllers/mno_enterprise/jpi/v1/marketplace_controller.rb +22 -0
  32. data/app/controllers/mno_enterprise/jpi/v1/organizations_controller.rb +5 -0
  33. data/app/controllers/mno_enterprise/jpi/v1/shopping_cart_controller.rb +93 -0
  34. data/app/controllers/mno_enterprise/jpi/v1/teams_controller.rb +88 -0
  35. data/app/controllers/mno_enterprise/org_invites_controller.rb +5 -0
  36. data/app/controllers/mno_enterprise/pages_controller.rb +5 -0
  37. data/app/controllers/mno_enterprise/provision_controller.rb +5 -0
  38. data/app/controllers/mno_enterprise/status_controller.rb +27 -0
  39. data/app/controllers/mno_enterprise/webhook/o_auth_controller.rb +5 -0
  40. data/app/mailers/mno_enterprise/system_notification_mailer.rb +5 -0
  41. data/app/models/mno_enterprise/health_check.rb +16 -0
  42. data/app/views/devise/password_expired/show.html.haml +32 -0
  43. data/app/views/mno_enterprise/auth/confirmations/default/_form.html.haml +49 -0
  44. data/app/views/mno_enterprise/auth/confirmations/default/_lounge.html.haml +34 -0
  45. data/app/views/mno_enterprise/auth/confirmations/default/_show.html.haml +10 -0
  46. data/app/views/mno_enterprise/auth/confirmations/lounge.html.haml +4 -0
  47. data/app/views/mno_enterprise/auth/confirmations/material/_form.html.haml +44 -0
  48. data/app/views/mno_enterprise/auth/confirmations/material/_lounge.html.haml +18 -0
  49. data/app/views/mno_enterprise/auth/confirmations/material/_show.html.haml +21 -0
  50. data/app/views/mno_enterprise/auth/confirmations/new.html.haml +31 -0
  51. data/app/views/mno_enterprise/auth/confirmations/show.html.haml +4 -0
  52. data/app/views/mno_enterprise/auth/mailer/confirmation_instructions.html.haml +4 -0
  53. data/app/views/mno_enterprise/auth/mailer/reset_password_instructions.html.haml +6 -0
  54. data/app/views/mno_enterprise/auth/mailer/unlock_instructions.html.haml +5 -0
  55. data/app/views/mno_enterprise/auth/passwords/edit.html.haml +53 -0
  56. data/app/views/mno_enterprise/auth/passwords/new.html.haml +34 -0
  57. data/app/views/mno_enterprise/auth/registrations/default/_form.html.haml +35 -0
  58. data/app/views/mno_enterprise/auth/registrations/default/_new.html.haml +11 -0
  59. data/app/views/mno_enterprise/auth/registrations/material/_form.html.haml +30 -0
  60. data/app/views/mno_enterprise/auth/registrations/material/_new.html.haml +10 -0
  61. data/app/views/mno_enterprise/auth/registrations/new.html.haml +4 -0
  62. data/app/views/mno_enterprise/auth/sessions/default/_form.html.haml +17 -0
  63. data/app/views/mno_enterprise/auth/sessions/default/_new.html.haml +11 -0
  64. data/app/views/mno_enterprise/auth/sessions/material/_form.html.haml +26 -0
  65. data/app/views/mno_enterprise/auth/sessions/material/_new.html.haml +11 -0
  66. data/app/views/mno_enterprise/auth/sessions/new.html.haml +4 -0
  67. data/app/views/mno_enterprise/auth/shared/_links.html.haml +24 -0
  68. data/app/views/mno_enterprise/auth/unlocks/new.html.haml +10 -0
  69. data/app/views/mno_enterprise/deletion_requests/show.html.haml +131 -0
  70. data/app/views/mno_enterprise/jpi/v1/admin/audit_events/_audit_event.json.jbuilder +5 -0
  71. data/app/views/mno_enterprise/jpi/v1/admin/audit_events/index.json.jbuilder +4 -0
  72. data/app/views/mno_enterprise/jpi/v1/admin/cloud_apps/_cloud_app.json.jbuilder +1 -0
  73. data/app/views/mno_enterprise/jpi/v1/admin/cloud_apps/index.json.jbuilder +1 -0
  74. data/app/views/mno_enterprise/jpi/v1/admin/cloud_apps/show.json.jbuilder +1 -0
  75. data/app/views/mno_enterprise/jpi/v1/admin/invoices/_invoice.json.jbuilder +2 -0
  76. data/app/views/mno_enterprise/jpi/v1/admin/invoices/index.json.jbuilder +1 -0
  77. data/app/views/mno_enterprise/jpi/v1/admin/invoices/show.json.jbuilder +2 -0
  78. data/app/views/mno_enterprise/jpi/v1/admin/organizations/_credit_card.json.jbuilder +7 -0
  79. data/app/views/mno_enterprise/jpi/v1/admin/organizations/_invoices.json.jbuilder +8 -0
  80. data/app/views/mno_enterprise/jpi/v1/admin/organizations/_member.json.jbuilder +14 -0
  81. data/app/views/mno_enterprise/jpi/v1/admin/organizations/_organization.json.jbuilder +1 -0
  82. data/app/views/mno_enterprise/jpi/v1/admin/organizations/in_arrears.json.jbuilder +8 -0
  83. data/app/views/mno_enterprise/jpi/v1/admin/organizations/index.json.jbuilder +7 -0
  84. data/app/views/mno_enterprise/jpi/v1/admin/organizations/show.json.jbuilder +11 -0
  85. data/app/views/mno_enterprise/jpi/v1/admin/tenant_invoices/_tenant_invoice.json.jbuilder +5 -0
  86. data/app/views/mno_enterprise/jpi/v1/admin/tenant_invoices/index.json.jbuilder +1 -0
  87. data/app/views/mno_enterprise/jpi/v1/admin/tenant_invoices/show.json.jbuilder +1 -0
  88. data/app/views/mno_enterprise/jpi/v1/admin/users/_user.json.jbuilder +1 -0
  89. data/app/views/mno_enterprise/jpi/v1/admin/users/index.json.jbuilder +2 -0
  90. data/app/views/mno_enterprise/jpi/v1/admin/users/show.json.jbuilder +9 -0
  91. data/app/views/mno_enterprise/jpi/v1/app_instances/_resource.json.jbuilder +23 -0
  92. data/app/views/mno_enterprise/jpi/v1/app_instances/index.json.jbuilder +9 -0
  93. data/app/views/mno_enterprise/jpi/v1/app_instances/show.json.jbuilder +3 -0
  94. data/app/views/mno_enterprise/jpi/v1/billing/index.json.jbuilder +0 -0
  95. data/app/views/mno_enterprise/jpi/v1/current_users/show.json.jbuilder +37 -0
  96. data/app/views/mno_enterprise/jpi/v1/impac/dashboards/_dashboard.json.jbuilder +9 -0
  97. data/app/views/mno_enterprise/jpi/v1/impac/dashboards/index.json.jbuilder +1 -0
  98. data/app/views/mno_enterprise/jpi/v1/impac/dashboards/show.json.jbuilder +1 -0
  99. data/app/views/mno_enterprise/jpi/v1/impac/kpis/_kpi.json.jbuilder +1 -0
  100. data/app/views/mno_enterprise/jpi/v1/impac/kpis/show.json.jbuilder +1 -0
  101. data/app/views/mno_enterprise/jpi/v1/impac/widgets/_widget.json.jbuilder +6 -0
  102. data/app/views/mno_enterprise/jpi/v1/impac/widgets/show.json.jbuilder +1 -0
  103. data/app/views/mno_enterprise/jpi/v1/marketplace/_app.json.jbuilder +14 -0
  104. data/app/views/mno_enterprise/jpi/v1/marketplace/index.json.jbuilder +3 -0
  105. data/app/views/mno_enterprise/jpi/v1/marketplace/show.json.jbuilder +3 -0
  106. data/app/views/mno_enterprise/jpi/v1/organizations/_arrears.json.jbuilder +11 -0
  107. data/app/views/mno_enterprise/jpi/v1/organizations/_billing.json.jbuilder +4 -0
  108. data/app/views/mno_enterprise/jpi/v1/organizations/_credit_card.json.jbuilder +7 -0
  109. data/app/views/mno_enterprise/jpi/v1/organizations/_current_user.json.jbuilder +5 -0
  110. data/app/views/mno_enterprise/jpi/v1/organizations/_invoices.json.jbuilder +8 -0
  111. data/app/views/mno_enterprise/jpi/v1/organizations/_member.json.jbuilder +13 -0
  112. data/app/views/mno_enterprise/jpi/v1/organizations/_organization.json.jbuilder +13 -0
  113. data/app/views/mno_enterprise/jpi/v1/organizations/credit_card.json.jbuilder +1 -0
  114. data/app/views/mno_enterprise/jpi/v1/organizations/index.json.jbuilder +1 -0
  115. data/app/views/mno_enterprise/jpi/v1/organizations/members.json.jbuilder +3 -0
  116. data/app/views/mno_enterprise/jpi/v1/organizations/show.json.jbuilder +15 -0
  117. data/app/views/mno_enterprise/jpi/v1/organizations/show_reduced.json.jbuilder +3 -0
  118. data/app/views/mno_enterprise/jpi/v1/shopping_cart/organizations.json.jbuilder +5 -0
  119. data/app/views/mno_enterprise/jpi/v1/shopping_cart/show.json.jbuilder +59 -0
  120. data/app/views/mno_enterprise/jpi/v1/shopping_cart/show_item.json.jbuilder +34 -0
  121. data/app/views/mno_enterprise/jpi/v1/teams/_team.json.jbuilder +20 -0
  122. data/app/views/mno_enterprise/jpi/v1/teams/index.json.jbuilder +1 -0
  123. data/app/views/mno_enterprise/jpi/v1/teams/show.json.jbuilder +3 -0
  124. data/app/views/mno_enterprise/pages/app_access_unauthorized.html.haml +19 -0
  125. data/app/views/mno_enterprise/pages/app_logout.html.haml +18 -0
  126. data/app/views/mno_enterprise/pages/billing_details_required.html.haml +19 -0
  127. data/app/views/mno_enterprise/pages/loading.html.erb +69 -0
  128. data/app/views/mno_enterprise/provision/_provision_apps.html.haml +42 -0
  129. data/app/views/mno_enterprise/provision/_select_organization.html.haml +17 -0
  130. data/app/views/mno_enterprise/provision/new.html.haml +4 -0
  131. data/app/views/mno_enterprise/webhook/o_auth/authorize.html.haml +26 -0
  132. data/app/views/mno_enterprise/webhook/o_auth/providers/myob.html.haml +29 -0
  133. data/app/views/mno_enterprise/webhook/o_auth/providers/xero.html.haml +34 -0
  134. data/config/initializers/devise.rb +273 -0
  135. data/config/initializers/devise_extension.rb +9 -0
  136. data/config/initializers/devise_log.rb +12 -0
  137. data/config/initializers/health_check.rb +35 -0
  138. data/config/initializers/main_app_version.rb +6 -0
  139. data/config/routes.rb +152 -0
  140. data/lib/mno-enterprise-api.rb +1 -0
  141. data/lib/mno_enterprise/api.rb +14 -0
  142. data/lib/mno_enterprise/api/engine.rb +9 -0
  143. data/lib/mno_enterprise/concerns/controllers/deletion_requests_controller.rb +108 -0
  144. data/lib/mno_enterprise/concerns/controllers/jpi/v1/admin/base_resource_controller.rb +34 -0
  145. data/lib/mno_enterprise/concerns/controllers/jpi/v1/current_users_controller.rb +58 -0
  146. data/lib/mno_enterprise/concerns/controllers/jpi/v1/deletion_requests_controller.rb +69 -0
  147. data/lib/mno_enterprise/concerns/controllers/jpi/v1/impac/dashboards_controller.rb +76 -0
  148. data/lib/mno_enterprise/concerns/controllers/jpi/v1/organizations_controller.rb +180 -0
  149. data/lib/mno_enterprise/concerns/controllers/org_invites_controller.rb +44 -0
  150. data/lib/mno_enterprise/concerns/controllers/pages_controller.rb +78 -0
  151. data/lib/mno_enterprise/concerns/controllers/provision_controller.rb +71 -0
  152. data/lib/mno_enterprise/concerns/controllers/webhook/o_auth_controller.rb +107 -0
  153. data/lib/mno_enterprise/concerns/mailers/system_notification_mailer.rb +158 -0
  154. data/lib/mno_enterprise/event_logger.rb +32 -0
  155. data/spec/controllers/mno_enterprise/auth/confirmation_controller_spec.rb +68 -0
  156. data/spec/controllers/mno_enterprise/deletion_requests_controller_spec.rb +141 -0
  157. data/spec/controllers/mno_enterprise/impersonate_controller_spec.rb +48 -0
  158. data/spec/controllers/mno_enterprise/jpi/v1/admin/audit_events_controller_spec.rb +51 -0
  159. data/spec/controllers/mno_enterprise/jpi/v1/admin/cloud_apps_controller_spec.rb +92 -0
  160. data/spec/controllers/mno_enterprise/jpi/v1/admin/invoices_controller_spec.rb +159 -0
  161. data/spec/controllers/mno_enterprise/jpi/v1/admin/organizations_controller_spec.rb +116 -0
  162. data/spec/controllers/mno_enterprise/jpi/v1/admin/tenant_invoices_controller_spec.rb +92 -0
  163. data/spec/controllers/mno_enterprise/jpi/v1/admin/users_controller_spec.rb +136 -0
  164. data/spec/controllers/mno_enterprise/jpi/v1/app_instances_controller_spec.rb +76 -0
  165. data/spec/controllers/mno_enterprise/jpi/v1/app_instances_sync_controller_spec.rb +94 -0
  166. data/spec/controllers/mno_enterprise/jpi/v1/current_users_controller_spec.rb +128 -0
  167. data/spec/controllers/mno_enterprise/jpi/v1/deletion_requests_controller_spec.rb +72 -0
  168. data/spec/controllers/mno_enterprise/jpi/v1/impac/kpis_controller_spec.rb +80 -0
  169. data/spec/controllers/mno_enterprise/jpi/v1/marketplace_controller_spec.rb +115 -0
  170. data/spec/controllers/mno_enterprise/jpi/v1/organizations_controller_spec.rb +516 -0
  171. data/spec/controllers/mno_enterprise/jpi/v1/team_controller_spec.rb +86 -0
  172. data/spec/controllers/mno_enterprise/org_invites_controller_spec.rb +29 -0
  173. data/spec/controllers/mno_enterprise/pages_controller_spec.rb +49 -0
  174. data/spec/controllers/mno_enterprise/provision_controller_spec.rb +94 -0
  175. data/spec/controllers/mno_enterprise/status_controller_spec.rb +34 -0
  176. data/spec/controllers/mno_enterprise/webhook/o_auth_controller_spec.rb +104 -0
  177. data/spec/lib/mno_enterprise/event_logger_spec.rb +28 -0
  178. data/spec/mailer/mno_enterprise/system_notification_mailer_spec.rb +132 -0
  179. data/spec/rails_helper.rb +94 -0
  180. data/spec/requests/devise/authentication_spec.rb +43 -0
  181. data/spec/requests/devise/registration_spec.rb +64 -0
  182. data/spec/routing/devise/confirmation_routing_spec.rb +20 -0
  183. data/spec/routing/devise/passwords_routing_spec.rb +24 -0
  184. data/spec/routing/devise/registrations_routing_spec.rb +16 -0
  185. data/spec/routing/devise/sessions_routing_spec.rb +20 -0
  186. data/spec/routing/mno_enterprise/deletion_requests_controller_routing_spec.rb +20 -0
  187. data/spec/routing/mno_enterprise/impersonate_controller_routing.spec.rb +15 -0
  188. data/spec/routing/mno_enterprise/jpi/v1/admin/audit_events_controller_routing_spec.rb +11 -0
  189. data/spec/routing/mno_enterprise/jpi/v1/admin/cloud_apps_controller_routing_spec.rb +24 -0
  190. data/spec/routing/mno_enterprise/jpi/v1/admin/invoices_controller_routing_spec.rb +37 -0
  191. data/spec/routing/mno_enterprise/jpi/v1/admin/organizations_controller_routing_spec.rb +20 -0
  192. data/spec/routing/mno_enterprise/jpi/v1/admin/tenant_invoices_controller_routing_spec.rb +16 -0
  193. data/spec/routing/mno_enterprise/jpi/v1/admin/users_controller_routing_spec.rb +24 -0
  194. data/spec/routing/mno_enterprise/jpi/v1/app_instances_controller_routing_spec.rb +12 -0
  195. data/spec/routing/mno_enterprise/jpi/v1/app_instances_sync_controller_routing_spec.rb +15 -0
  196. data/spec/routing/mno_enterprise/jpi/v1/current_users_controller_routing_spec.rb +28 -0
  197. data/spec/routing/mno_enterprise/jpi/v1/deletion_requests_controller_routing_spec.rb +24 -0
  198. data/spec/routing/mno_enterprise/jpi/v1/impac/kpis_controller_routing_spec.rb +22 -0
  199. data/spec/routing/mno_enterprise/jpi/v1/marketplace_controller_routing_spec.rb +16 -0
  200. data/spec/routing/mno_enterprise/jpi/v1/organizations_controller_routing_spec.rb +44 -0
  201. data/spec/routing/mno_enterprise/jpi/v1/teams_controller_routing_spec.rb +36 -0
  202. data/spec/routing/mno_enterprise/org_invites_controller_routing_spec.rb +12 -0
  203. data/spec/routing/mno_enterprise/pages_controller_routing_spec.rb +29 -0
  204. data/spec/routing/mno_enterprise/provision_controller_routing_spec.rb +15 -0
  205. data/spec/routing/mno_enterprise/status_controller_routing_spec.rb +19 -0
  206. data/spec/routing/mno_enterprise/webhook/o_auth_controller_routing_spec.rb +27 -0
  207. data/spec/spec_helper.rb +88 -0
  208. metadata +402 -0
@@ -0,0 +1,47 @@
1
+ module MnoEnterprise
2
+ class Jpi::V1::Admin::InvoicesController < Jpi::V1::Admin::BaseResourceController
3
+
4
+ # GET /mnoe/jpi/v1/admin/invoices
5
+ def index
6
+ @invoices = MnoEnterprise::Invoice.all
7
+ end
8
+
9
+ # GET /mnoe/jpi/v1/admin/invoices/1
10
+ def show
11
+ @invoice = MnoEnterprise::Invoice.find(params[:id])
12
+ end
13
+
14
+ # GET /mnoe/jpi/v1/admin/invoices/current_billing_amount
15
+ def current_billing_amount
16
+ data = Rails.cache.fetch('tenant_admin/current_billing_amount', expires_in: ADMIN_CACHE_DURATION) do
17
+ billing = MnoEnterprise::Organization.all.map(&:current_billing).sum(Money.new(0))
18
+ {current_billing_amount: {amount: billing.amount, currency: billing.currency_as_string}}
19
+ end
20
+ render json: data
21
+ end
22
+
23
+ # GET /mnoe/jpi/v1/admin/invoices/last_invoicing_amount
24
+ def last_invoicing_amount
25
+ tenant_billing = MnoEnterprise::Tenant.get('tenant').last_customers_invoicing_amount
26
+ render json: {last_invoicing_amount: {amount: tenant_billing.amount, currency: tenant_billing.currency_as_string}}
27
+ end
28
+
29
+ # GET /mnoe/jpi/v1/admin/invoices/outstanding_amount
30
+ def outstanding_amount
31
+ tenant_billing = MnoEnterprise::Tenant.get('tenant').last_customers_outstanding_amount
32
+ render json: {outstanding_amount: {amount: tenant_billing.amount, currency: tenant_billing.currency_as_string}}
33
+ end
34
+
35
+ # GET /mnoe/jpi/v1/admin/invoices/last_portfolio_amount
36
+ def last_portfolio_amount
37
+ tenant_billing = MnoEnterprise::Tenant.get('tenant').last_portfolio_amount
38
+ render json: {last_portfolio_amount: {amount: tenant_billing.amount, currency: tenant_billing.currency_as_string}}
39
+ end
40
+
41
+ # GET /mnoe/jpi/v1/admin/invoices/last_commission_amount
42
+ def last_commission_amount
43
+ tenant_billing = MnoEnterprise::Tenant.get('tenant').last_commission_amount
44
+ render json: {last_commission_amount: {amount: tenant_billing.amount, currency: tenant_billing.currency_as_string}}
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,27 @@
1
+ module MnoEnterprise
2
+ class Jpi::V1::Admin::OrganizationsController < Jpi::V1::Admin::BaseResourceController
3
+
4
+ # GET /mnoe/jpi/v1/admin/organizations
5
+ def index
6
+ @organizations = MnoEnterprise::Organization
7
+ @organizations = @organizations.limit(params[:limit]) if params[:limit]
8
+ @organizations = @organizations.skip(params[:offset]) if params[:offset]
9
+ @organizations = @organizations.order_by(params[:order_by]) if params[:order_by]
10
+ @organizations = @organizations.where(params[:where]) if params[:where]
11
+ @organizations = @organizations.all
12
+
13
+ response.headers['X-Total-Count'] = @organizations.metadata[:pagination][:count]
14
+ end
15
+
16
+ # GET /mnoe/jpi/v1/admin/organizations/1
17
+ def show
18
+ @organization = MnoEnterprise::Organization.find(params[:id])
19
+ @organization_active_apps = @organization.app_instances.select { |app| app.status == "running" }
20
+ end
21
+
22
+ # GET /mnoe/jpi/v1/admin/organizations/in_arrears
23
+ def in_arrears
24
+ @arrears = MnoEnterprise::ArrearsSituation.all
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,14 @@
1
+ module MnoEnterprise
2
+ class Jpi::V1::Admin::TenantInvoicesController < Jpi::V1::Admin::BaseResourceController
3
+
4
+ # GET /mnoe/jpi/v1/admin/tenant_invoices
5
+ def index
6
+ @tenant_invoices = MnoEnterprise::TenantInvoice.all
7
+ end
8
+
9
+ # GET /mnoe/jpi/v1/admin/tenant_invoices/1
10
+ def show
11
+ @tenant_invoice = MnoEnterprise::TenantInvoice.find(params[:id])
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,63 @@
1
+ module MnoEnterprise
2
+ class Jpi::V1::Admin::UsersController < Jpi::V1::Admin::BaseResourceController
3
+
4
+ # GET /mnoe/jpi/v1/admin/users
5
+ def index
6
+ @users = MnoEnterprise::User
7
+ @users = @users.limit(params[:limit]) if params[:limit]
8
+ @users = @users.skip(params[:offset]) if params[:offset]
9
+ @users = @users.order_by(params[:order_by]) if params[:order_by]
10
+ @users = @users.where(params[:where]) if params[:where]
11
+ @users = @users.all
12
+
13
+ response.headers['X-Total-Count'] = @users.metadata[:pagination][:count]
14
+ end
15
+
16
+ # GET /mnoe/jpi/v1/admin/users/1
17
+ def show
18
+ @user = MnoEnterprise::User.find(params[:id])
19
+ @user_organizations = @user.organizations
20
+ end
21
+
22
+ # POST /mnoe/jpi/v1/admin/users
23
+ def create
24
+ @user = MnoEnterprise::User.build(user_create_params)
25
+ @user.admin_role = params[:user][:admin_role].presence
26
+
27
+ if @user.save
28
+ render :show
29
+ else
30
+ render json: @user.errors, status: :bad_request
31
+ end
32
+ end
33
+
34
+ # PATCH /mnoe/jpi/v1/admin/users/:id
35
+ def update
36
+ @user = MnoEnterprise::User.find(params[:id])
37
+ @user.update(user_params)
38
+
39
+ render :show
40
+ end
41
+
42
+ # DELETE /mnoe/jpi/v1/admin/users/1
43
+ def destroy
44
+ user = MnoEnterprise::User.find(params[:id])
45
+ user.destroy
46
+
47
+ head :no_content
48
+ end
49
+
50
+ private
51
+
52
+ def user_params
53
+ params.require(:user).permit(:admin_role)
54
+ end
55
+
56
+ def user_create_params
57
+ params.require(:user).permit(:name, :surname, :email, :phone).merge(
58
+ password: 'Password1',
59
+ confirmed_at: Time.zone.now
60
+ )
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,24 @@
1
+ module MnoEnterprise
2
+ class Jpi::V1::AppInstancesController < Jpi::V1::BaseResourceController
3
+
4
+ # GET /mnoe/jpi/v1/organization/1/apps.json?timestamp=151452452345
5
+ def index
6
+ @app_instances = parent_organization.app_instances.select do |i|
7
+ i.active? && i.updated_at > Time.at(timestamp) && can?(:access,i)
8
+ end
9
+ end
10
+
11
+ # DELETE /mnoe/jpi/v1/app_instances/1
12
+ def destroy
13
+ app_instance = MnoEnterprise::AppInstance.find(params[:id])
14
+
15
+ if app_instance
16
+ authorize! :manage_app_instances, app_instance.owner
17
+ MnoEnterprise::EventLogger.info('app_destroy', current_user.id, "App destroyed", app_instance.name,app_instance)
18
+ app_instance.terminate
19
+ end
20
+
21
+ head :accepted
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,36 @@
1
+ module MnoEnterprise
2
+ class Jpi::V1::AppInstancesSyncController < Jpi::V1::BaseResourceController
3
+
4
+ # GET /mnoe/jpi/v1/organization/org-fbba/app_instances_sync
5
+ def index
6
+ authorize! :check_apps_sync, @parent_organization
7
+ # find method is overriden in the mnoe interface to call organization.check_sync_apps_progress
8
+ connectors = @parent_organization.app_instances_sync.find('anything').connectors
9
+ render json: results(connectors)
10
+ end
11
+
12
+ # POST /mnoe/jpi/v1/organizations/org-fbba/app_instances_sync
13
+ def create
14
+ authorize! :sync_apps, @parent_organization
15
+
16
+ # Some weird behaviour with Her and has_one. If app_instances_sync.find is called somewhere before the create,
17
+ # Her won't detect the organization_id as dirty and won't submit it.
18
+ sync = @parent_organization.app_instances_sync.build(mode: params[:mode])
19
+ sync.organization_id_will_change!
20
+ sync.save
21
+
22
+ connectors = sync.connectors
23
+
24
+ render json: results(connectors)
25
+ end
26
+
27
+ private
28
+ def results(connectors)
29
+ {
30
+ connectors: connectors,
31
+ is_syncing: connectors.any?{|c| c[:status]=="RUNNING" }
32
+ }
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,32 @@
1
+ module MnoEnterprise
2
+ class Jpi::V1::BaseResourceController < ApplicationController
3
+ before_filter :check_authorization
4
+
5
+ protected
6
+
7
+ def timestamp
8
+ @timestamp ||= (params[:timestamp] || 0).to_i
9
+ end
10
+
11
+ def parent_organization
12
+ @parent_organization ||= current_user.organizations.to_a.find do |o|
13
+ key = (params[:organization_id].to_i == 0) ? o.uid : o.id.to_s
14
+ key == params[:organization_id].to_s
15
+ end
16
+ end
17
+
18
+ # Check current user is logged in
19
+ # Check organization is valid if specified
20
+ def check_authorization
21
+ unless current_user
22
+ render nothing: true, status: :unauthorized
23
+ return false
24
+ end
25
+ if params[:organization_id] && !parent_organization
26
+ render nothing: true, status: :forbidden
27
+ return false
28
+ end
29
+ true
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,5 @@
1
+ module MnoEnterprise
2
+ class Jpi::V1::CurrentUsersController < ApplicationController
3
+ include MnoEnterprise::Concerns::Controllers::Jpi::V1::CurrentUsersController
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module MnoEnterprise
2
+ class Jpi::V1::DeletionRequestsController < Jpi::V1::BaseResourceController
3
+ include MnoEnterprise::Concerns::Controllers::Jpi::V1::DeletionRequestsController
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module MnoEnterprise
2
+ class Jpi::V1::Impac::DashboardsController < Jpi::V1::BaseResourceController
3
+ include MnoEnterprise::Concerns::Controllers::Jpi::V1::Impac::DashboardsController
4
+ end
5
+ end
@@ -0,0 +1,80 @@
1
+ module MnoEnterprise
2
+ class Jpi::V1::Impac::KpisController < Jpi::V1::BaseResourceController
3
+ respond_to :json
4
+
5
+ # POST /jpi/v1/impac/dashboards/:dashboard_id/kpis
6
+ def create
7
+ whitelist = %w(name endpoint source element_watched targets metadata extra_params)
8
+ attrs = (params[:kpi] || {}).select { |k,v| whitelist.include?(k.to_s) }
9
+
10
+ if dashboard
11
+ authorize! :manage_impac, dashboard
12
+
13
+ # TODO: Her will perform a request there which could be avoided
14
+ @kpi = dashboard.kpis.create(attrs)
15
+ if @kpi
16
+ render 'show'
17
+ else
18
+ render json: @kpi.errors, status: :bad_request
19
+ end
20
+ else
21
+ render json: { errors: "Dashboard id #{params[:dashboard_id]} doesn't exist" }, status: :not_found
22
+ end
23
+ end
24
+
25
+ # PUT /jpi/v1/impac/kpis/:id
26
+ def update
27
+ whitelist = %w(name element_watched targets extra_params)
28
+ attrs = (params[:kpi] || {}).select { |k,v| whitelist.include?(k.to_s) }.symbolize_keys
29
+
30
+ # Find kpi and assign
31
+ # Will call GET kpi route on Maestrano
32
+ @kpi = Impac::Kpi.find(params[:id])
33
+ authorize! :manage_impac, @kpi.dashboard
34
+ if @kpi
35
+ # metadata will be merged instead of replaced
36
+ p = HashWithIndifferentAccess.new(params[:kpi])
37
+ if p[:metadata] && p[:metadata].is_a?(Hash)
38
+ attrs[:metadata] = @kpi.settings.merge(p[:metadata])
39
+ end
40
+
41
+ if @kpi.update(attrs)
42
+ render 'show'
43
+ else
44
+ render json: @kpi.errors, status: :bad_request
45
+ end
46
+ else
47
+ render json: { errors: "Kpi id #{params[:id]} doesn't exist" }, status: :not_found
48
+ end
49
+ end
50
+
51
+ # DELETE /jpi/v1/impac/kpis/:id
52
+ def destroy
53
+ # Will call GET kpi route on Maestrano
54
+ @kpi = MnoEnterprise::Impac::Kpi.find(params[:id])
55
+
56
+ if @kpi
57
+ authorize! :manage_impac, @kpi.dashboard
58
+ if @kpi.destroy
59
+ head status: :ok
60
+ else
61
+ render json: { errors: 'Unable to delete this widget' }, status: :bad_request
62
+ end
63
+ else
64
+ render json: {errors: "Kpi id #{params[:id]} doesn't exist" }, status: :not_found
65
+ end
66
+ end
67
+
68
+
69
+ #=================================================
70
+ # Private methods
71
+ #=================================================
72
+ private
73
+
74
+ def dashboard
75
+ return false unless params[:dashboard_id]
76
+ @dashboard ||= MnoEnterprise::Impac::Dashboard.find(params[:dashboard_id])
77
+ end
78
+
79
+ end
80
+ end
@@ -0,0 +1,63 @@
1
+ module MnoEnterprise
2
+ class Jpi::V1::Impac::WidgetsController < Jpi::V1::BaseResourceController
3
+ respond_to :json
4
+
5
+ # POST /mnoe/jpi/v1/impac/dashboards/:id/widgets
6
+ # -> POST /api/mnoe/v1/dashboards/:id/widgets
7
+ def create
8
+ if widgets
9
+ if @widget = widgets.create(format_attrs(['widget_category','metadata']))
10
+ MnoEnterprise::EventLogger.info('widget_create', current_user.id, 'Widget Creation', nil, @widget)
11
+ @nocontent = true # no data fetch from Connec!
12
+ render 'show'
13
+ else
14
+ render json: @widget.errors, status: :bad_request
15
+ end
16
+ else
17
+ render json: { errors: "Dashboard id #{params[:id]} doesn't exist" }, status: :not_found
18
+ end
19
+ end
20
+
21
+ # PUT /mnoe/jpi/v1/impac/widgets/:id
22
+ def update
23
+ if widget.update(format_attrs(['name','metadata']))
24
+ @nocontent = !params['metadata']
25
+ render 'show'
26
+ else
27
+ render json: @widget.errors, status: :bad_request
28
+ end
29
+ end
30
+
31
+ # DELETE /mnoe/jpi/v1/impac/dashboards/1
32
+ def destroy
33
+ if widget.destroy
34
+ MnoEnterprise::EventLogger.info('widget_delete', current_user.id, 'Widget Deletion', nil, widget)
35
+ head status: :ok
36
+ else
37
+ render json: 'Unable to destroy widget', status: :bad_request
38
+ end
39
+ end
40
+
41
+
42
+ #=================================================
43
+ # Private methods
44
+ #=================================================
45
+ private
46
+
47
+ def widget
48
+ @widget ||= MnoEnterprise::Impac::Widget.find(params[:id])
49
+ end
50
+
51
+ def widgets
52
+ @widgets ||= MnoEnterprise::Impac::Dashboard.find(params[:dashboard_id]).widgets
53
+ end
54
+
55
+ def format_attrs(whitelist)
56
+ attrs = (params[:widget] || {}).select { |k,v| whitelist.include?(k.to_s) }
57
+ attrs['settings'] = widget ? widget.settings || {} : {}
58
+ attrs['settings'].merge!(attrs['metadata']) if attrs['metadata']
59
+ attrs.except!('metadata')
60
+ end
61
+
62
+ end
63
+ end
@@ -0,0 +1,25 @@
1
+ module MnoEnterprise
2
+ class Jpi::V1::IndustryBundleController < ApplicationController
3
+
4
+ # GET /mnoe/jpi/v1/industry_bundles/app_descriptions/pr.json
5
+ # def app_descriptions
6
+ # @bundle = IndustryBundle.find_by_name(params[:bundle_name])
7
+ # if @bundle
8
+ # app_descriptions_array = @bundle.apps.map do |app|
9
+ # [app.name, { 'pictures' => app.pictures.map { |picture| {'thumb' => picture.thumb.to_s, 'url' => picture.url.to_s } } }.merge(
10
+ # @bundle.app_descriptions[app.name]) ]
11
+ # end
12
+ # @app_descriptions = Hash[*(app_descriptions_array.flatten)]
13
+ # @bundle_description = { appNames: @bundle.apps.map { |app| app.name }, appDescriptions: @app_descriptions }
14
+ # respond_to do |format|
15
+ # format.json { render json: @bundle_description, status: :ok }
16
+ # end
17
+ # else
18
+ # respond_to do |format|
19
+ # format.json { render json: "That bundle does not exist", status: :bad_request }
20
+ # end
21
+ # end
22
+ # end
23
+
24
+ end
25
+ end