mno-enterprise-api 3.1.4 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (139) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/mno_enterprise/config.js.coffee.erb +7 -1
  3. data/app/controllers/mno_enterprise/auth/omniauth_callbacks_controller.rb +3 -27
  4. data/app/controllers/mno_enterprise/auth/sessions_controller.rb +1 -3
  5. data/app/controllers/mno_enterprise/jpi/v1/admin/app_answers_controller.rb +26 -0
  6. data/app/controllers/mno_enterprise/jpi/v1/admin/app_comments_controller.rb +28 -0
  7. data/app/controllers/mno_enterprise/jpi/v1/admin/app_instances_controller.rb +16 -0
  8. data/app/controllers/mno_enterprise/jpi/v1/admin/app_reviews_controller.rb +30 -0
  9. data/app/controllers/mno_enterprise/jpi/v1/admin/invites_controller.rb +1 -1
  10. data/app/controllers/mno_enterprise/jpi/v1/admin/organizations_controller.rb +55 -37
  11. data/app/controllers/mno_enterprise/jpi/v1/app_answers_controller.rb +22 -0
  12. data/app/controllers/mno_enterprise/jpi/v1/app_comments_controller.rb +22 -0
  13. data/app/controllers/mno_enterprise/jpi/v1/app_feedbacks_controller.rb +14 -0
  14. data/app/controllers/mno_enterprise/jpi/v1/app_instances_controller.rb +1 -20
  15. data/app/controllers/mno_enterprise/jpi/v1/app_questions_controller.rb +25 -0
  16. data/app/controllers/mno_enterprise/jpi/v1/app_reviews_controller.rb +94 -0
  17. data/app/controllers/mno_enterprise/jpi/v1/base_resource_controller.rb +12 -0
  18. data/app/controllers/mno_enterprise/jpi/v1/impac/alerts_controller.rb +5 -0
  19. data/app/controllers/mno_enterprise/jpi/v1/impac/kpis_controller.rb +1 -76
  20. data/app/controllers/mno_enterprise/jpi/v1/marketplace_controller.rb +1 -18
  21. data/app/controllers/mno_enterprise/jpi/v1/teams_controller.rb +1 -83
  22. data/app/jobs/mno_enterprise/event_logger_job.rb +10 -0
  23. data/app/views/mno_enterprise/auth/confirmations/new.html.haml +6 -6
  24. data/app/views/mno_enterprise/auth/passwords/new.html.haml +8 -8
  25. data/app/views/mno_enterprise/auth/registrations/new.html.haml +1 -0
  26. data/app/views/mno_enterprise/auth/sessions/new.html.haml +1 -0
  27. data/app/views/mno_enterprise/auth/shared/_links.html.haml +0 -5
  28. data/app/views/mno_enterprise/auth/shared/_omniauth.html.haml +10 -0
  29. data/app/views/mno_enterprise/jpi/v1/admin/app_answers/show.json.jbuilder +15 -0
  30. data/app/views/mno_enterprise/jpi/v1/admin/app_comments/show.json.jbuilder +15 -0
  31. data/app/views/mno_enterprise/jpi/v1/admin/app_reviews/_app_review.json.jbuilder +13 -0
  32. data/app/views/mno_enterprise/jpi/v1/admin/app_reviews/index.json.jbuilder +1 -0
  33. data/app/views/mno_enterprise/jpi/v1/admin/app_reviews/show.json.jbuilder +3 -0
  34. data/app/views/mno_enterprise/jpi/v1/admin/organizations/show.json.jbuilder +1 -0
  35. data/app/views/mno_enterprise/jpi/v1/admin/users/_user.json.jbuilder +1 -1
  36. data/app/views/mno_enterprise/jpi/v1/app_answers/_resource.json.jbuilder +4 -0
  37. data/app/views/mno_enterprise/jpi/v1/app_answers/index.json.jbuilder +5 -0
  38. data/app/views/mno_enterprise/jpi/v1/app_answers/show.json.jbuilder +3 -0
  39. data/app/views/mno_enterprise/jpi/v1/app_comments/_resource.json.jbuilder +3 -0
  40. data/app/views/mno_enterprise/jpi/v1/app_comments/index.json.jbuilder +5 -0
  41. data/app/views/mno_enterprise/jpi/v1/app_comments/show.json.jbuilder +3 -0
  42. data/app/views/mno_enterprise/jpi/v1/app_feedbacks/_comment.json.jbuilder +10 -0
  43. data/app/views/mno_enterprise/jpi/v1/app_feedbacks/_resource.json.jbuilder +7 -0
  44. data/app/views/mno_enterprise/jpi/v1/app_feedbacks/index.json.jbuilder +5 -0
  45. data/app/views/mno_enterprise/jpi/v1/app_feedbacks/show.json.jbuilder +4 -0
  46. data/app/views/mno_enterprise/jpi/v1/app_instances/_resource.json.jbuilder +9 -0
  47. data/app/views/mno_enterprise/jpi/v1/app_questions/_answer.json.jbuilder +3 -0
  48. data/app/views/mno_enterprise/jpi/v1/app_questions/_resource.json.jbuilder +8 -0
  49. data/app/views/mno_enterprise/jpi/v1/app_questions/index.json.jbuilder +5 -0
  50. data/app/views/mno_enterprise/jpi/v1/app_questions/show.json.jbuilder +3 -0
  51. data/app/views/mno_enterprise/jpi/v1/app_reviews/_resource.json.jbuilder +13 -0
  52. data/app/views/mno_enterprise/jpi/v1/app_reviews/index.json.jbuilder +5 -0
  53. data/app/views/mno_enterprise/jpi/v1/app_reviews/show.json.jbuilder +4 -0
  54. data/app/views/mno_enterprise/jpi/v1/base_resource/_app_review.json.jbuilder +17 -0
  55. data/app/views/mno_enterprise/jpi/v1/current_users/show.json.jbuilder +9 -1
  56. data/app/views/mno_enterprise/jpi/v1/impac/alerts/_alert.json.jbuilder +7 -0
  57. data/app/views/mno_enterprise/jpi/v1/impac/alerts/index.json.jbuilder +1 -0
  58. data/app/views/mno_enterprise/jpi/v1/impac/alerts/show.json.jbuilder +1 -0
  59. data/app/views/mno_enterprise/jpi/v1/impac/dashboards/_dashboard.json.jbuilder +8 -3
  60. data/app/views/mno_enterprise/jpi/v1/impac/kpis/_kpi.json.jbuilder +4 -1
  61. data/app/views/mno_enterprise/jpi/v1/impac/widgets/_widget.json.jbuilder +1 -1
  62. data/app/views/mno_enterprise/jpi/v1/impac/widgets/index.json.jbuilder +3 -0
  63. data/app/views/mno_enterprise/jpi/v1/marketplace/_app.json.jbuilder +4 -0
  64. data/app/views/mno_enterprise/jpi/v1/marketplace/index.json.jbuilder +1 -2
  65. data/app/views/mno_enterprise/jpi/v1/marketplace/show.json.jbuilder +1 -1
  66. data/app/views/mno_enterprise/jpi/v1/organizations/_current_user.json.jbuilder +1 -1
  67. data/app/views/mno_enterprise/jpi/v1/organizations/_invoices.json.jbuilder +3 -2
  68. data/app/views/mno_enterprise/jpi/v1/organizations/_member.json.jbuilder +2 -2
  69. data/app/views/mno_enterprise/jpi/v1/organizations/_organization.json.jbuilder +2 -2
  70. data/app/views/mno_enterprise/jpi/v1/teams/_team.json.jbuilder +11 -5
  71. data/app/views/mno_enterprise/pages/terms.html.haml +219 -0
  72. data/app/views/mno_enterprise/provision/_select_organization.html.haml +6 -2
  73. data/config/initializers/devise.rb +31 -9
  74. data/config/initializers/devise_log.rb +4 -4
  75. data/config/routes.rb +41 -6
  76. data/lib/mno_enterprise/api.rb +1 -0
  77. data/lib/mno_enterprise/audit_events_listener.rb +28 -0
  78. data/lib/mno_enterprise/concerns/controllers/jpi/v1/app_instances_controller.rb +45 -0
  79. data/lib/mno_enterprise/concerns/controllers/jpi/v1/current_users_controller.rb +14 -4
  80. data/lib/mno_enterprise/concerns/controllers/jpi/v1/impac/alerts_controller.rb +76 -0
  81. data/lib/mno_enterprise/concerns/controllers/jpi/v1/impac/dashboards_controller.rb +49 -23
  82. data/lib/mno_enterprise/concerns/controllers/jpi/v1/impac/kpis_controller.rb +167 -0
  83. data/lib/mno_enterprise/concerns/controllers/jpi/v1/impac/widgets_controller.rb +33 -17
  84. data/lib/mno_enterprise/concerns/controllers/jpi/v1/marketplace_controller.rb +32 -0
  85. data/lib/mno_enterprise/concerns/controllers/jpi/v1/organizations_controller.rb +68 -28
  86. data/lib/mno_enterprise/concerns/controllers/jpi/v1/teams_controller.rb +92 -0
  87. data/lib/mno_enterprise/concerns/controllers/pages_controller.rb +17 -3
  88. data/lib/mno_enterprise/concerns/controllers/provision_controller.rb +17 -2
  89. data/lib/mno_enterprise/concerns/mailers/system_notification_mailer.rb +27 -3
  90. data/lib/mno_enterprise/event_logger.rb +34 -16
  91. data/lib/mno_enterprise/intercom_events_listener.rb +96 -0
  92. data/spec/controllers/mno_enterprise/auth/confirmation_controller_spec.rb +28 -0
  93. data/spec/controllers/mno_enterprise/auth/omniauth_callback_controller_spec.rb +34 -0
  94. data/spec/controllers/mno_enterprise/jpi/v1/admin/app_answers_controller_spec.rb +45 -0
  95. data/spec/controllers/mno_enterprise/jpi/v1/admin/app_comments_controller_spec.rb +45 -0
  96. data/spec/controllers/mno_enterprise/jpi/v1/admin/app_instances_controller_spec.rb +31 -0
  97. data/spec/controllers/mno_enterprise/jpi/v1/admin/app_reviews_controller_spec.rb +103 -0
  98. data/spec/controllers/mno_enterprise/jpi/v1/admin/audit_events_controller_spec.rb +4 -15
  99. data/spec/controllers/mno_enterprise/jpi/v1/admin/cloud_apps_controller_spec.rb +12 -3
  100. data/spec/controllers/mno_enterprise/jpi/v1/admin/invites_controller_spec.rb +4 -0
  101. data/spec/controllers/mno_enterprise/jpi/v1/admin/invoices_controller_spec.rb +15 -0
  102. data/spec/controllers/mno_enterprise/jpi/v1/admin/organizations_controller_spec.rb +17 -1
  103. data/spec/controllers/mno_enterprise/jpi/v1/admin/tenant_invoices_controller_spec.rb +5 -0
  104. data/spec/controllers/mno_enterprise/jpi/v1/admin/users_controller_spec.rb +30 -16
  105. data/spec/controllers/mno_enterprise/jpi/v1/app_answers_controller_spec.rb +74 -0
  106. data/spec/controllers/mno_enterprise/jpi/v1/app_comments_controller_spec.rb +74 -0
  107. data/spec/controllers/mno_enterprise/jpi/v1/app_feedbacks_controller_spec.rb +84 -0
  108. data/spec/controllers/mno_enterprise/jpi/v1/app_instances_controller_spec.rb +36 -22
  109. data/spec/controllers/mno_enterprise/jpi/v1/app_questions_controller_spec.rb +80 -0
  110. data/spec/controllers/mno_enterprise/jpi/v1/app_reviews_controller_spec.rb +107 -0
  111. data/spec/controllers/mno_enterprise/jpi/v1/current_users_controller_spec.rb +16 -1
  112. data/spec/controllers/mno_enterprise/jpi/v1/impac/alerts_controller_spec.rb +82 -0
  113. data/spec/controllers/mno_enterprise/jpi/v1/impac/kpis_controller_spec.rb +147 -10
  114. data/spec/controllers/mno_enterprise/jpi/v1/impac/widgets_controller_spec.rb +39 -0
  115. data/spec/controllers/mno_enterprise/jpi/v1/marketplace_controller_spec.rb +19 -26
  116. data/spec/controllers/mno_enterprise/jpi/v1/organizations_controller_spec.rb +248 -303
  117. data/spec/controllers/mno_enterprise/jpi/v1/team_controller_spec.rb +4 -1
  118. data/spec/controllers/mno_enterprise/pages_controller_spec.rb +21 -0
  119. data/spec/controllers/mno_enterprise/provision_controller_spec.rb +65 -22
  120. data/spec/controllers/mno_enterprise/webhook/o_auth_controller_spec.rb +1 -1
  121. data/spec/jobs/mno_enterprise/event_logger_job_spec.rb +11 -0
  122. data/spec/lib/mno_enterprise/audit_events_listener_spec.rb +28 -0
  123. data/spec/lib/mno_enterprise/intercom_events_listener_spec.rb +110 -0
  124. data/spec/mailer/mno_enterprise/system_notification_mailer_spec.rb +81 -46
  125. data/spec/routing/mno_enterprise/jpi/v1/admin/app_instances_controller_routing_spec.rb +11 -0
  126. data/spec/routing/mno_enterprise/jpi/v1/admin/app_reviews_controller_routing_spec.rb +19 -0
  127. data/spec/routing/mno_enterprise/jpi/v1/app_instances_controller_routing_spec.rb +9 -2
  128. data/spec/routing/mno_enterprise/jpi/v1/app_reviews_controller_routing_spec.rb +15 -0
  129. data/spec/routing/mno_enterprise/jpi/v1/current_users_controller_routing_spec.rb +5 -0
  130. data/spec/routing/mno_enterprise/jpi/v1/impac/alerts_controller_routing_spec.rb +24 -0
  131. data/spec/routing/mno_enterprise/jpi/v1/impac/dashboards_controller_routing_spec.rb +28 -0
  132. data/spec/routing/mno_enterprise/jpi/v1/impac/kpis_controller_routing_spec.rb +17 -11
  133. data/spec/routing/mno_enterprise/jpi/v1/impac/widgets_controller_routing_spec.rb +24 -0
  134. data/spec/routing/mno_enterprise/jpi/v1/marketplace_controller_routing_spec.rb +2 -2
  135. data/spec/routing/mno_enterprise/pages_controller_routing_spec.rb +4 -0
  136. metadata +178 -9
  137. data/app/controllers/mno_enterprise/jpi/v1/industry_bundle_controller.rb +0 -25
  138. data/app/controllers/mno_enterprise/jpi/v1/shopping_cart_controller.rb +0 -93
  139. data/spec/lib/mno_enterprise/event_logger_spec.rb +0 -28
@@ -0,0 +1,10 @@
1
+ json.partial! 'app_review', app_review: app_comment, show_rating: false
2
+
3
+ json.feedback_id app_comment[:feedback_id]
4
+ if app_comment[:versions]
5
+ json.versions do
6
+ json.array! app_comment[:versions] do |version|
7
+ json.extract! version, :id, :event, :description
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ json.partial! 'app_review', app_review: app_feedback
2
+
3
+ json.comments do
4
+ json.array! app_feedback[:comments] do |app_comment|
5
+ json.partial! 'comment', app_comment: app_comment
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ json.app_feedbacks do
2
+ json.array! @app_reviews do |app_feedback|
3
+ json.partial! 'resource', app_feedback: app_feedback
4
+ end
5
+ end
@@ -0,0 +1,4 @@
1
+ json.app_feedback do
2
+ json.partial! 'resource', app_feedback: @app_review
3
+ end
4
+ json.average_rating @average_rating
@@ -8,6 +8,13 @@ json.oauth_keys_valid app_instance.oauth_keys_valid
8
8
  #json.microsoft_trial_url app_instance.microsoft_trial_url
9
9
  json.created_at app_instance.created_at
10
10
 
11
+ json.per_user_licence app_instance.per_user_licence
12
+ json.licences_count app_instance.active_licences_count if app_instance.per_user_licence?
13
+
14
+ if app_instance.under_free_trial?
15
+ json.free_trial_end_at app_instance.free_trial_end_at
16
+ end
17
+
11
18
  if app_instance.oauth_company
12
19
  json.oauth_company_name app_instance.oauth_company
13
20
  end
@@ -17,7 +24,9 @@ end
17
24
  # end
18
25
 
19
26
  app_instance.app.tap do |a|
27
+ json.app_id a.id
20
28
  json.app_name a.name
21
29
  json.app_nid a.nid
22
30
  json.logo a.logo
31
+ json.add_on a.add_on?
23
32
  end
@@ -0,0 +1,3 @@
1
+ json.partial! 'app_review', app_review: app_answer, show_rating: false
2
+
3
+ json.question_id app_answer[:question_id]
@@ -0,0 +1,8 @@
1
+ json.partial! 'app_review', app_review: app_question, show_rating: false
2
+
3
+ json.answers do
4
+ json.array! app_question[:answers] do |app_answer|
5
+ json.partial! 'answer', app_answer: app_answer
6
+ end
7
+ end
8
+
@@ -0,0 +1,5 @@
1
+ json.app_questions do
2
+ json.array! @app_reviews do |app_question|
3
+ json.partial! 'resource', app_question: app_question
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+ json.app_question do
2
+ json.partial! 'resource', app_question: @app_review
3
+ end
@@ -0,0 +1,13 @@
1
+ json.id app_review[:id]
2
+ json.rating app_review[:rating]
3
+ json.description app_review[:description]
4
+ json.status app_review[:status]
5
+ json.user_id app_review[:user_id]
6
+ json.user_name app_review[:user_name]
7
+ json.organization_id app_review[:organization_id]
8
+ json.organization_name app_review[:organization_name]
9
+ json.app_id app_review[:app_id]
10
+ json.app_name app_review[:app_name]
11
+ json.user_admin_role app_review[:user_admin_role]
12
+ json.created_at app_review[:created_at]
13
+ json.updated_at app_review[:updated_at]
@@ -0,0 +1,5 @@
1
+ json.app_reviews do
2
+ json.array! @app_reviews do |app_review|
3
+ json.partial! 'app_review', app_review: app_review
4
+ end
5
+ end
@@ -0,0 +1,4 @@
1
+ json.app_review do
2
+ json.partial! 'app_review', app_review: @app_review, rating: true
3
+ end
4
+ json.average_rating @average_rating
@@ -0,0 +1,17 @@
1
+ json.extract! app_review, :id, :description, :status,
2
+ :user_id, :user_name, :organization_id, :organization_name,
3
+ :app_id, :app_name, :user_admin_role, :created_at, :updated_at,
4
+ :edited, :edited_by_name, :edited_by_admin_role, :edited_by_id
5
+
6
+ show_rating = local_assigns.fetch(:show_rating, true)
7
+ if app_review.respond_to?(:rating) && show_rating
8
+ json.rating app_review.rating
9
+ end
10
+
11
+ if app_review[:versions]
12
+ json.versions do
13
+ json.array! app_review[:versions] do |version|
14
+ json.extract! version, :id, :event, :description, :created_at, :author
15
+ end
16
+ end
17
+ end
@@ -8,6 +8,8 @@ json.cache! ['v1', @user.cache_key] do
8
8
  json.created_at @user.created_at ? @user.created_at.iso8601 : nil
9
9
  json.company @user.company
10
10
  json.phone @user.phone
11
+ json.api_secret @user.api_secret
12
+ json.api_key @user.api_key
11
13
  json.phone_country_code @user.phone_country_code
12
14
  json.country_code @user.geo_country_code || 'US'
13
15
  json.website @user.website
@@ -17,7 +19,11 @@ json.cache! ['v1', @user.cache_key] do
17
19
  if current_impersonator
18
20
  json.current_impersonator true
19
21
  end
20
-
22
+
23
+ if @user.respond_to?(:intercom_user_hash)
24
+ json.user_hash @user.intercom_user_hash
25
+ end
26
+
21
27
  # Embed association if user is persisted
22
28
  if @user.id
23
29
  json.organizations do
@@ -37,6 +43,8 @@ json.cache! ['v1', @user.cache_key] do
37
43
  json.extract! @user.deletion_request, :id, :token
38
44
  end
39
45
  end
46
+
47
+ json.kpi_enabled !!@user.kpi_enabled
40
48
  end
41
49
  end
42
50
  end
@@ -0,0 +1,7 @@
1
+ json.ignore_nil!
2
+ json.extract! alert, :id, :title, :webhook, :service, :sent
3
+ json.metadata alert.settings
4
+ json.kpi_id alert.impac_kpi_id
5
+ json.recipients alert.recipients.map do |recipient|
6
+ json.extract! recipient, :id, :email
7
+ end
@@ -0,0 +1 @@
1
+ json.array! @alerts, partial: 'alert', as: :alert
@@ -0,0 +1 @@
1
+ json.partial! 'alert', alert: @alert
@@ -1,10 +1,15 @@
1
1
  json.extract! dashboard, :id, :name, :full_name, :currency
2
2
 
3
- json.data_sources dashboard.organizations.compact.map do |org|
3
+ json.metadata dashboard.settings
4
+
5
+ json.data_sources dashboard.organizations(current_user.organizations).compact.map do |org|
4
6
  json.id org.id
5
7
  json.uid org.uid
6
8
  json.label org.name
7
9
  end
8
- json.widgets dashboard.sorted_widgets, partial: 'mno_enterprise/jpi/v1/impac/widgets/widget', as: :widget
9
- json.widgets_templates dashboard.filtered_widgets_templates
10
+
10
11
  json.kpis dashboard.kpis, partial: 'mno_enterprise/jpi/v1/impac/kpis/kpi', as: :kpi
12
+
13
+ json.widgets dashboard.widgets, partial: 'mno_enterprise/jpi/v1/impac/widgets/widget', as: :widget
14
+
15
+ json.widgets_templates dashboard.filtered_widgets_templates
@@ -1 +1,4 @@
1
- json.extract! kpi, :id, :element_watched, :endpoint, :source, :targets, :settings, :extra_params
1
+ json.ignore_nil!
2
+ json.extract! kpi, :id, :element_watched, :endpoint, :source, :targets, :settings, :extra_watchables, :extra_params
3
+
4
+ json.alerts kpi.alerts, partial: 'mno_enterprise/jpi/v1/impac/alerts/alert', as: :alert
@@ -3,4 +3,4 @@ json.name widget.name
3
3
  json.category widget.widget_category
4
4
  json.width widget.width
5
5
  json.metadata widget.settings
6
- json.owner widget.owner
6
+ json.owner widget.owner
@@ -0,0 +1,3 @@
1
+ json.widgets @widgets.map do |widget|
2
+ json.extract! widget, :id, :endpoint, :settings
3
+ end
@@ -8,6 +8,10 @@ json.is_star_ready app.star_ready?
8
8
  json.is_connec_ready app.connec_ready?
9
9
  json.is_coming_soon app.coming_soon?
10
10
  json.single_billing app.single_billing?
11
+ json.multi_instantiable app.multi_instantiable
12
+ json.subcategories app.subcategories
13
+ json.average_rating app.average_rating
14
+ json.running_instances_count app.running_instances_count
11
15
 
12
16
  if app.logo
13
17
  json.logo app.logo.to_s
@@ -1,3 +1,2 @@
1
1
  json.categories @categories
2
-
3
- json.apps @apps, partial: 'app', as: :app
2
+ json.apps @apps, partial: 'app', as: :app
@@ -1,3 +1,3 @@
1
1
  json.app do
2
2
  json.partial! 'app', app: @app
3
- end
3
+ end
@@ -2,4 +2,4 @@ json.id user.id
2
2
  json.name user.name
3
3
  json.surname user.surname
4
4
  json.email user.email
5
- json.role user.role(organization)
5
+ json.role organization.members.to_a.find { |e| e.id == user.id }.role
@@ -1,8 +1,9 @@
1
1
  json.invoices do
2
- json.array! organization.invoices.order_by('ended_at.desc') do |invoice|
2
+ # TODO: Introduce pagination
3
+ json.array! organization.invoices.order_by('ended_at.desc').limit(12) do |invoice|
3
4
  json.period invoice.period_label
4
5
  json.amount AccountingjsSerializer.serialize(invoice.total_due)
5
6
  json.paid invoice.paid?
6
7
  json.link mno_enterprise.invoice_path(invoice.slug)
7
8
  end
8
- end
9
+ end
@@ -4,10 +4,10 @@ if member.is_a?(MnoEnterprise::User)
4
4
  json.name member.name
5
5
  json.surname member.surname
6
6
  json.email member.email
7
- json.role member.role(organization)
7
+ json.role member.role
8
8
  elsif member.is_a?(MnoEnterprise::OrgInvite)
9
9
  json.id member.id
10
10
  json.entity 'OrgInvite'
11
11
  json.email member.user_email
12
12
  json.role member.user_role
13
- end
13
+ end
@@ -1,4 +1,4 @@
1
- json.extract! organization, :id, :name, :soa_enabled #, :current_support_plan
1
+ json.extract! organization, :id, :name, :soa_enabled, :payment_restriction #, :current_support_plan
2
2
  # json.show_new_db_features !!organization.get_meta_data(:show_new_db_features)
3
3
  # if organization.support_plan
4
4
  # json.custom_training_credits organization.support_plan.custom_training_credits
@@ -10,4 +10,4 @@ json.extract! organization, :id, :name, :soa_enabled #, :current_support_plan
10
10
  # json.data_uploaded !!@organization.get_meta_data(:data_uploaded)
11
11
  # json.colleagues_invited (@organization.orga_invites.count > 0)
12
12
  # json.connec_promo !!@organization.get_meta_data(:connec_promo)
13
- # end
13
+ # end
@@ -1,10 +1,16 @@
1
+ org = @parent_organization || team.organization
2
+ @all_apps ||= MnoEnterprise::App.all.to_a
3
+
1
4
  json.id team.id
2
5
  json.name team.name
3
6
 
4
7
  json.users do
5
8
  json.array! team.users do |user|
6
9
  json.extract! user, :id, :name, :surname, :email
7
- json.role user.role(team.organization)
10
+
11
+ # Retrieve role from cached version (org user list)
12
+ org_user = org.users.to_a.find { |e| e.id == user.id }
13
+ json.role org_user ? org_user.role : nil
8
14
  end
9
15
  end
10
16
 
@@ -12,9 +18,9 @@ json.app_instances do
12
18
  json.array! team.app_instances do |app_instance|
13
19
  json.id app_instance.id
14
20
  json.name app_instance.name
15
-
16
- if app_instance.app
17
- json.logo app_instance.app.logo.to_s
21
+
22
+ if app = @all_apps.find { |e| e.id == app_instance.app_id }
23
+ json.logo app.logo.to_s
18
24
  end
19
25
  end
20
- end
26
+ end
@@ -0,0 +1,219 @@
1
+ .container
2
+ .row{ :style => 'text-align:justify;' }
3
+ .col-md-12
4
+
5
+ %h1
6
+ Terms of Use
7
+ %br
8
+ %h4
9
+ %small Version 2.4 – Updated April 15th, 2015
10
+
11
+ %hr
12
+
13
+ %p
14
+ By using the
15
+ %b= link_to("maestrano.com", "http://maestrano.com")
16
+ web site ("Service"), or any services of Maestrano ("Maestrano"), you are agreeing to be bound by the following terms and conditions ("Terms of Service").
17
+
18
+ %p
19
+ IF YOU ARE ENTERING INTO THIS AGREEMENT ON BEHALF OF A COMPANY OR OTHER LEGAL ENTITY, YOU REPRESENT THAT YOU HAVE THE AUTHORITY TO BIND SUCH ENTITY, ITS AFFILIATES AND ALL USERS WHO ACCESS OUR SERVICES THROUGH YOUR ACCOUNT TO THESE TERMS AND CONDITIONS, IN WHICH CASE THE TERMS "YOU" OR "YOUR" SHALL REFER TO SUCH ENTITY, ITS AFFILIATES AND USERS ASSOCIATED WITH IT. IF YOU DO NOT HAVE SUCH AUTHORITY, OR IF YOU DO NOT AGREE WITH THESE TERMS AND CONDITIONS, YOU MUST NOT ACCEPT THIS AGREEMENT AND MAY NOT USE THE SERVICES.
20
+
21
+ %p
22
+ "Maestrano" is a service of Maestrano Pty Ltd, located at Suite 504, 46 Market Street, Sydney, NSW 2000 Australia. Maestrano is a service provided by Maestrano Pty Ltd which is the legal entity representing Maestrano. Those Terms of Use are specific to the use of Maestrano.com and are not related to the use of any other service provided by Maestrano Pty Ltd.
23
+
24
+ %p
25
+ Maestrano reserves the right to update and change the Terms of Service at any time without notice. Any new features that augment or enhance the current Service, including the release of new tools and resources, shall be subject to the Terms of Service. Continued use of the Service after any such changes shall constitute your consent to such changes. You can review the most current version of the Terms of Service at any time at:
26
+ %b= link_to(mno_enterprise.terms_url)
27
+
28
+ %p
29
+ Violation of any of the terms below will result in the termination of your Account. While Maestrano prohibits such conduct and Content on the Service, you understand and agree that Maestrano cannot be responsible for the Content posted on the Service. You agree to use the Service at your own risk.
30
+
31
+ %hr
32
+
33
+ %div
34
+ %h3 A. Account Terms
35
+ %ol
36
+ %li You must be 18 years or older to use this Service.
37
+ %li You must be a human. Accounts registered by "bots" or other automated methods are not permitted.
38
+ %li You must provide your legal full name, a valid email address, and any other information requested in order to complete the signup process.
39
+ %li Your login may only be used by one person - a single login shared by multiple people is not permitted. You may create separate logins for as many people as your plan allows.
40
+ %li You are responsible for maintaining the security of your account and password. Maestrano cannot and will not be liable for any loss or damage from your failure to comply with this security obligation.
41
+ %li You are responsible for all Content posted and activity that occurs under your account (even when Content is posted by others who have accounts under your account).
42
+ %li You may not use the Service for any illegal or unauthorized purpose. You must not, in the use of the Service, violate any laws in your jurisdiction (including but not limited to copyright or trademark laws).
43
+
44
+ %div
45
+ %h3 B. Use of Application Software Products
46
+ %p Maestrano provides the use of various application software products that are the property of their respective owners.
47
+ %ol
48
+ %li By using an application software product on Maestrano, you agree to be bound by the terms of service and/or license of the relevant product owner and/or product. The terms of service and/or license of the owner(s) of the application software products provided on Maestrano can be read in Annexure A to these Terms of Use.
49
+
50
+ %div
51
+ %h3 C. API Terms
52
+ %p Customers may access their Maestrano account data via an API (Application Program Interface). Any use of the API, including use of the API through a third-party product that accesses Maestrano, is bound by these Terms of Service plus the following specific terms:
53
+ %ol
54
+ %li You expressly understand and agree that Maestrano shall not be liable for any direct, indirect, incidental, special, consequential or exemplary damages, including but not limited to, damages for loss of profits, goodwill, use, data or other intangible losses (even if Maestrano has been advised of the possibility of such damages), resulting from your use of the API or third-party products that access data via the API.
55
+ %li Abuse or excessively frequent requests to Maestrano via the API may result in the temporary or permanent suspension of your account's access to the API. Maestrano, in its sole discretion, will determine abuse or excessive usage of the API. Maestrano will make a reasonable attempt via email to warn the account owner prior to suspension.
56
+ %li Maestrano reserves the right at any time to modify or discontinue, temporarily or permanently, your access to the API (or any part thereof) with or without notice.
57
+
58
+ %div
59
+ %h3 D. Payment, Refunds, Upgrading and Downgrading Terms
60
+ %ol
61
+ %li All paid plans must enter a valid credit card.
62
+ %li An upgrade between plans for applications provided by Maestrano will bill you in accordance with the conditions of the newly selected plan. Change of plans are effective immediately and the billing of the current invoicing period is calculated with a pro-rata of the old plan and the new plan. For applications provided by third party providers, please refer to their respective terms and conditions.
63
+ %li The Service is billed on a monthly basis, in accordance with the conditions of the contracted plan and the value used on the Service and is non-refundable. There will be no upgrade/downgrade refunds, or refunds for months unused with an open account. In order to treat everyone equally, no exceptions will be made.
64
+ %li Maestrano’s billing period runs from the 25th of each calendar month until the 24th of the following calendar month. Invoices will be sent to customers within 5 days following the monthly closure (24th). All credit cards will be invoiced on the 2nd of each calendar month following the elapsed billing period.
65
+ %li All fees are exclusive of all taxes, levies, or duties imposed by taxing authorities, and you shall be responsible for payment of all such taxes, levies, or duties.
66
+ %li Late payments may bear interest at the rate of 1.5% per month (or the highest rate permitted by law, if less)
67
+ %li For any upgrade or downgrade in plan level, your credit card that you provided will automatically be charged the new rate on your next billing cycle.
68
+ %li Downgrading your Service may cause the loss of content, features, or capacity of your Account albeit Maestrano will endeavor to apply best practices to prevent such an event. Maestrano does not accept any liability for such loss.
69
+
70
+ %div
71
+ %h3 E. Cancelation and Termination
72
+ %ol
73
+ %li You are solely responsible for properly canceling your account. An email or phone request to cancel your account is not considered cancelation. You can cancel your account at any time by clicking on the Account link in the menu “My Apps” at the top of the screen. The Account screen provides a simple no questions asked cancelation process.
74
+ %li All of your Content will be immediately deleted from the Service upon cancelation. This information cannot be recovered once your account is canceled.
75
+ %li At termination of your account, Maestrano will charge your credit card with any outstanding amount left unpaid on your account. All clauses of this contractual agreement remain valid and active until all due amounts have been paid.
76
+ %li Maestrano, in its sole discretion, has the right to suspend or terminate your account and refuse any and all current or future use of the Service, or any other Maestrano service, for any reason at any time. Such termination of the Service will result in the deactivation or deletion of your Account or your access to your Account, and the forfeiture and relinquishment of all Content in your Account. Maestrano reserves the right to refuse service to anyone for any reason at any time. Maestrano will make a reasonable attempt via email to warn the account owner prior to suspension.
77
+
78
+ %div
79
+ %h3 F. Modifications to the Service and Prices
80
+ %ol
81
+ %li Maestrano reserves the right at any time and from time to time to modify or discontinue, temporarily or permanently, the Service (or any part thereof) with notice provided by email in a reasonable timeframe preceding the discontinuation.
82
+ %li Prices of all Services, including but not limited to monthly subscription plan fees to the Service, are subject to change upon 30 days notice from us. Such notice may be provided at any time by posting the changes to the Maestrano Site (maestrano.com) or the Service itself.
83
+ %li Maestrano shall not be liable to you or to any third party for any modification, price change, suspension or discontinuance of the Service.
84
+
85
+ %div
86
+ %h3 G. Copyright and Content Ownership
87
+ %ol
88
+ %li We claim no intellectual property rights over the material you provide to the Service. Your profile and materials uploaded remain yours. However, if you set your pages to be viewed publicly or give right to third parties to access your Content, you agree to allow others to view your Content.
89
+ %li
90
+ You shall defend Maestrano against any claim, demand, suit or proceeding made or brought against Maestrano by a third party alleging that Your Content, or Your use of the Service in violation of this Agreement, infringes or misappropriates the intellectual property rights of a third party or violates applicable law, and shall indemnify Maestrano for any damages finally awarded against, and for reasonable attorney’s fees incurred by, Maestrano in connection with any such claim, demand, suit or proceeding; provided, that Maestrano
91
+ %ol{:style => "list-style-type: lower-alpha;"}
92
+ %li promptly gives You written notice of the claim, demand, suit or proceeding;
93
+ %li gives You sole control of the defense and settlement of the claim, demand, suit or proceeding (provided that You may not settle any claim, demand, suit or proceeding unless the settlement unconditionally releases Maestrano of all liability) and
94
+ %li provides to You all reasonable assistance, at Your expense.
95
+ %li
96
+ The look and feel of the Service is copyright
97
+ = "©#{Time.now.year}"
98
+ Maestrano Pty Ltd. All rights reserved. You may not duplicate, copy, or reuse any portion of the HTML/CSS, Javascript, or visual design elements or concepts without express written permission from Maestrano and Maestrano Pty Ltd.
99
+
100
+ %div
101
+ %h3 H. General Conditions
102
+ %ol
103
+ %li Your use of the Service is at your sole risk. The service is provided on an "as is" and "as available" basis.
104
+ %li Technical support is only provided to paying account holders and is only available via email. Support is only available in English.
105
+ %li You understand that Maestrano uses third party vendors and hosting partners to provide the necessary hardware, software, networking, storage, and related technology required to run the Service.
106
+ %li You must not modify, adapt or hack the Service or modify another website so as to falsely imply that it is associated with the Service, Maestrano, or any other Maestrano service.
107
+ %li You may use Maestrano subdomains (e.g., yourname.maestrano.com) solely as permitted and intended by the Maestrano Pages tool to host your company pages, personal pages, or open source project pages, and for no other purpose. You may not use Maestrano subdomains in violation of Maestrano's trademark or other rights or in violation of applicable law. Maestrano reserves the right at all times to reclaim any Maestrano subdomain without liability to you.
108
+ %li You agree not to reproduce, duplicate, copy, sell, resell or exploit any portion of the Service, use of the Service, or access to the Service without the express written permission by Maestrano.
109
+ %li We may, but have no obligation to, remove Content and Accounts containing Content that we determine in our sole discretion are unlawful, offensive, threatening, libelous, defamatory, pornographic, obscene or otherwise objectionable or violates any party's intellectual property or these Terms of Service.
110
+ %li Verbal, physical, written or other abuse (including threats of abuse or retribution) of any Maestrano customer, employee, member, or officer will result in immediate account termination.
111
+ %li You understand that the technical processing and transmission of the Service, including your Content, may be transferred unencrypted and involve (a) transmissions over various networks; and (b) changes to conform and adapt to technical requirements of connecting networks or devices.
112
+ %li You must not upload, post, host, or transmit unsolicited email, SMSs, or "spam" messages.
113
+ %li You must not transmit any worms or viruses or any code of a destructive nature.
114
+ %li If your bandwidth usage significantly exceeds the average bandwidth usage (as determined solely by Maestrano) of other Maestrano customers, we reserve the right to immediately disable your account or throttle your file hosting until you can reduce your bandwidth consumption. Maestrano will make a reasonable attempt via email to warn the account owner prior to engaging such actions.
115
+ %li
116
+ Maestrano does not warrant that
117
+ %ol{:style => "list-style-type: lower-alpha;"}
118
+ %li the service will meet your specific requirements
119
+ %li the service will be uninterrupted or error-free
120
+ %li the quality of any products, services, information, or other material purchased or obtained by you through the service will meet your expectations, and
121
+ %li any errors in the Service will be corrected.
122
+
123
+ %li
124
+ You expressly understand and agree that Maestrano, its subsidiaries, affiliates, officers, agents, representatives, members, principals, employees and partners shall not be liable for any direct, indirect, incidental, special, consequential or exemplary damages, including but not limited to, damages for loss of profits, goodwill, use, data or other intangible losses (even if Maestrano has been advised of the possibility of such damages), resulting from:
125
+ %ol{:style => "list-style-type: lower-alpha;"}
126
+ %li the use or the inability to use the service
127
+ %li the cost of procurement of substitute goods and services resulting from any goods, data, information or services purchased or obtained or messages received or transactions entered into through or from the service
128
+ %li unauthorized access to or alteration of your transmissions or data
129
+ %li statements or conduct of any third party on the service;
130
+ %li or any other matter relating to the service.
131
+
132
+ %li The failure of Maestrano to exercise or enforce any right or provision of the Terms of Service shall not constitute a waiver of such right or provision. The Terms of Service constitutes the entire agreement between you and Maestrano and govern your use of the Service, superseding any prior agreements between you and Maestrano (including, but not limited to, any prior versions of the Terms of Service). You agree that these Terms of Service and Your use of the Service are governed under Australian law.
133
+ %li Fair usage policy applies to Maestrano’s service, including any free trial; any improper usage of the free trials may lead to the suspension of your account at Maestrano’s sole discretion.
134
+ %li The information and tools provided on Maestrano should not be your only source of information when you are making business decisions. We rely on other people and companies to provide us with information, which may not be accurate or reliable. In particular, business performance feedback provided on Maestrano is generated through Customer feedback. Other benchmarks, like financial information, are based on information that other companies give to us. This information should only be treated as a guide.
135
+ We do not warrant the accuracy of any feedback or benchmarks provided on Maestrano. Use Maestrano as a starting point and then seek independent professional advice.
136
+ %li
137
+ Questions about the Terms of Service should be sent to
138
+ %b= mail_to(MnoEnterprise.support_email)
139
+
140
+ %div
141
+ %h3 I. Special Offers, Promo Codes and Starter Packs
142
+ %ol
143
+ %li Maestrano may issue from time to time promotional offers and promotional codes. The issue of such codes and offers is at the sole discretion of Maestrano.
144
+ %li The offers and codes are valid from a limited period of time only and for specific locations, as specified in the offer's description and/or advertisement.
145
+ %li Maestrano reserves the right to modify the content of promotional offers at any time without notice.
146
+ %li All promotional offers come with applicable conditions. If not directly described in the offer, the conditions are as follows:
147
+ %ol{:style => "list-style-type: lower-alpha;"}
148
+ %li The offer is unique for each company.
149
+ %li Offers are not cumulative and cannot be applied simultaneously on a given company.
150
+ %li Offers related to services (Such as "data upload" for instance) are limited to services requiring less than 2 hours of involvement of a Maestrano's support staff member. Services exceeding this duration are considered out of the scope of any promotional offer.
151
+ %li Maestrano starter packs are for new customers only, only one starter pack can be applied per company.
152
+ %li Starter packs are only applicable to the following applications:
153
+ %ol{:style => "list-style-type: lower-alpha;"}
154
+ %li Allocpsa
155
+ %li Bugzilla
156
+ %li Collabtive
157
+ %li Dolibarr
158
+ %li Drupal
159
+ %li Egroupware
160
+ %li Feng Office
161
+ %li Front Accounting
162
+ %li Group Office
163
+ %li Interleave
164
+ %li Jenkins
165
+ %li Joomla
166
+ %li eEasySurvey
167
+ %li MantisBT
168
+ %li Moodle
169
+ %li Opendocman
170
+ %li OpenERP
171
+ %li Openx
172
+ %li OrangeHRM
173
+ %li Pentaho BI
174
+ %li Phreedom
175
+ %li Plandora
176
+ %li Prestashop
177
+ %li ProcessMaker
178
+ %li Projectpier
179
+ %li SimpleInvoices
180
+ %li SO Planning
181
+ %li SugarCRM
182
+ %li TikiWiki
183
+ %li TimeTrex
184
+ %li TWiki
185
+ %li vTiger
186
+ %li Wordpress
187
+ %li Any promotional offers are conditioned by the current Terms of Use of the Maestrano service. Maestrano reserves the right not to implement a commercial offer, should it be assessed as its sole discretion that implementing the offer will go against any point of the present Terms of Use.
188
+ %li When contacted by a customer wanting to benefit from a promotional offer, Maestrano will inform whether the service required fits within the promotional offer, in regards with points 4 and 5 above and may at its sole discretion elect not to provide the service proposed in the promotional offer.
189
+
190
+ %div
191
+ %h3 J. Intellectual Property
192
+ %ul
193
+ %li All Intellectual Property Rights in the Services, the Website and any documentation relating to the Services remain the property of Maestrano.
194
+ %li All Intellectual Property Rights in, the Data remain Your property. However, Your access to the Data is contingent on full payment of Services rendered on Maestrano when due. You grant Maestrano a licence to use, copy, transmit, store, and back-up Your information and Data for the purposes of enabling You to access and use the Services and for any other purpose related to the provision of services to You.
195
+ %ol
196
+ %li You must maintain copies of all Data inputted into the Service. Maestrano adheres to its best practice policies and procedures to prevent data loss, including at minimum a system data back-up regime, but does not make any guarantees that there will be no loss of Data. Maestrano expressly excludes liability for any loss of Data no matter how caused.
197
+ %li Maestrano can attempt to restore Your Data if there is any loss or damage but does not guarantee successful restoration of all Your data or in its most recent state. This process will take at minimum one business day to complete. If the loss or damage of Your Data has been caused by You, there will be a cost associated with this service.
198
+ %li If You decide to terminate your Service with Maestrano you will be able to take Your Data with You. You can either export Your Data directly from the application(s) or ask our support team to assist you. Assistance provided by our support team may incur a cost depending on the amount of Data and hours required to complete the export of Your Data.
199
+ %li When closing your account on Maestrano, You data and all copies of it will be deleted. This is an irreversible action.
200
+
201
+ %div
202
+ %h3 K. Partner Commission Agreement
203
+ %ol
204
+ %li After execution of this agreement, Maestrano will provide Partner with a unique partner code (a short alphanumeric string) that will be attached to their partner account
205
+ %li When advocating Maestrano’s service, Partner will provide this unique code to their client when they sign up for the Maestrano service. This link will automatically be attached to the partners account when sent via the Maestrano partner platform. For every customer registration received by Maestrano which includes the partner code of Partner, Maestrano will pay a commission fee to Partner on all revenue which Maestrano receives from that customer for the duration of that customer’s relationship with Maestrano, or for a period of three (3) years from the date of execution of this agreement, whichever is the lesser. Partner commissions will be due according to the following commission schedules
206
+ %li Maestrano will provide a monthly statement to Partner itemizing the clients who registered using Partner’s partner code, and the revenues received by Maestrano from them during the previous month. Maestrano will pay the commission fee to Partner on or before the fifteenth (15th) day of the following month. For the avoidance of doubt, Maestrano will not pay the commission fee on unpaid obligations of customers. Revenue received by Maestrano is the only basis for the calculation of commission fee.
207
+
208
+ %ul
209
+ %li Schedule 1: Rate of commission for standard applications (expressed as a percentage of revenue received by Maestrano from customers who initially registered on the Maestrano website using the partner code of Partner): Fifty percent (50%) in Year One; Fifteen percent (15%) thereafter
210
+ %li Schedule 2:Rate of commission for premium applications (expressed as a percentage of next revenue {gross revenue less payment to the application provider} received by Maestrano from customers who initially registered on the Maestrano website using the partner code of Partner. Fifty percent (50%) in Year One; Fifteen percent (15%) thereafter.
211
+ %p For the avoidance of doubt, Maestrano will not pay commission fee on revenue from customers who did not enter the partner code at the time of their registration with Maestrano. Partner will only receive commission based on Maestrano’s revenue from customers who correctly entered Partner’s partner code during their on-line registration or if they follow the link provided by their Partner, sent via the Maestrano partner portal.
212
+
213
+ %div
214
+ %h3 Annexure A - Terms of service and licenses of the application software products provided by third parties to Maestrano
215
+ %p The terms of service and/or license of the owner(s) of the application software products provided on Maestrano can be read by accessing the links below:
216
+ %ol
217
+ - cache ['v1/app-terms-list', @apps] do
218
+ - @apps.each do |app|
219
+ %li= link_to app.name, app.terms_url, target: "_blank"