Class: AtomicAdmin::V1::ApplicationInstancesController
- Inherits:
-
AdminController
- Object
- ActionController::API
- AdminController
- AtomicAdmin::V1::ApplicationInstancesController
- Includes:
- Filtering
- Defined in:
- app/controllers/atomic_admin/v1/application_instances_controller.rb
Instance Method Summary collapse
- #create ⇒ Object
- #destroy ⇒ Object
- #get_stats_for_instances(instances) ⇒ Object
- #index ⇒ Object
- #interactions ⇒ Object
- #json_for(instance) ⇒ Object
- #request_stats(instance) ⇒ Object
- #show ⇒ Object
- #update ⇒ Object
Methods included from Filtering
Methods inherited from AdminController
Instance Method Details
#create ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 |
# File 'app/controllers/atomic_admin/v1/application_instances_controller.rb', line 32 def create application = Application.find(params[:application_id]) instance = application.application_instances.new(create_params) @stats = get_stats_for_instances([instance]) if instance.save render json: { application_instance: json_for(instance) } else render json: { errors: instance.errors }, status: 422 end end |
#destroy ⇒ Object
62 63 64 65 66 |
# File 'app/controllers/atomic_admin/v1/application_instances_controller.rb', line 62 def destroy instance = ApplicationInstance.find(params[:id]) instance.destroy render json: { success: true } end |
#get_stats_for_instances(instances) ⇒ Object
74 75 76 77 78 79 80 81 82 |
# File 'app/controllers/atomic_admin/v1/application_instances_controller.rb', line 74 def get_stats_for_instances(instances) tenants = instances.pluck(:tenant) stats = {} stats[:errors] = RequestStatistic.total_errors_grouped(tenants) if defined?(RequestStatistic) stats[:unique_users] = CachedUniqueUsersByContractDate.unique_users_by_contract_date(instances) if defined?(CachedUniqueUsersByContractDate) stats[:max_users_month] = CachedUniqueUsersByMonth.max_monthly_unique_users(instances) if defined?(CachedUniqueUsersByMonth) stats end |
#index ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'app/controllers/atomic_admin/v1/application_instances_controller.rb', line 8 def index @application_instances = ApplicationInstance.where(application_id: params[:application_id]) @application_instances = if type == "paid" @application_instances.where.not(paid_at: nil) else @application_instances.where(paid_at: nil) end @application_instances, = filter(@application_instances) @stats = get_stats_for_instances(@application_instances) render json: { application_instances: json_for_collection(@application_instances), meta: } end |
#interactions ⇒ Object
68 69 70 71 72 |
# File 'app/controllers/atomic_admin/v1/application_instances_controller.rb', line 68 def interactions instance = ApplicationInstance.find(params[:id]) interactions = AtomicAdmin.application_instance_interactions.resolve(application_instance: instance) render json: { interactions: interactions } end |
#json_for(instance) ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'app/controllers/atomic_admin/v1/application_instances_controller.rb', line 95 def json_for(instance) json = instance.as_json(include: [:application, :site]) json["trial_start_date"] = instance.trial_start_date&.strftime("%Y-%m-%d") if instance.respond_to?(:trial_start_date) json["trial_end_date"] = instance.trial_end_date&.strftime("%Y-%m-%d") if instance.respond_to?(:trial_end_date) json["license_start_date"] = instance.license_start_date&.strftime("%Y-%m-%d") if instance.respond_to?(:license_start_date) json["license_end_date"] = instance.license_end_date&.strftime("%Y-%m-%d") if instance.respond_to?(:license_end_date) json["paid_at"] = instance.paid_at&.strftime("%Y-%m-%d") if instance.respond_to?(:paid_at) json["is_paid"] = instance.paid_at.present? if instance.respond_to?(:paid_at) json["lti_config_xml"] = instance.lti_config_xml if instance.respond_to?(:lti_config_xml) json["request_stats"] = request_stats(instance) json end |
#request_stats(instance) ⇒ Object
84 85 86 87 88 89 90 91 92 93 |
# File 'app/controllers/atomic_admin/v1/application_instances_controller.rb', line 84 def request_stats(instance) tenant = instance.tenant { unique_users_in_contract: @stats.dig(:unique_users, tenant) || 0, day_1_errors: @stats.dig(:errors, 0, tenant) || 0, day_7_errors: @stats.dig(:errors, 7, tenant) || 0, max_users_month: @stats.dig(:max_users_month, tenant) || 0, } end |
#show ⇒ Object
26 27 28 29 30 |
# File 'app/controllers/atomic_admin/v1/application_instances_controller.rb', line 26 def show @application_instance = ApplicationInstance.find(params[:id]) @stats = get_stats_for_instances([@application_instance]) render json: { application_instance: json_for(@application_instance) } end |
#update ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'app/controllers/atomic_admin/v1/application_instances_controller.rb', line 44 def update instance = ApplicationInstance.find(params[:id]) instance.update(update_params) @stats = get_stats_for_instances([instance]) if params[:application_instance][:is_paid] && instance.paid_at.nil? instance.paid_at = DateTime.now elsif params[:application_instance][:is_paid] == false && instance.paid_at.present? instance.paid_at = nil end if instance.save render json: { application_instance: json_for(instance) } else render json: { errors: instance.errors }, status: 422 end end |