class ZuoraConnect::StaticController

def instance_drop

def instance_drop
  host = request.headers.fetch("HOST", nil)
  if host.present? && (ZuoraConnect::AppInstance::INTERNAL_HOSTS.include?(host) || host =~ Resolv::IPv4::Regex)
    ZuoraConnect::AppInstance.read_master_db do
      instance_id = params[:id]
      @appinstance = ZuoraConnect::AppInstance.find(instance_id)
      if @appinstance.drop_instance
        ZuoraConnect::AppInstance.destroy(instance_id)
        msg = Apartment::Tenant.drop(instance_id)
        if msg.error_message.present?
          render json: { "message" => msg.error_message }, status: :bad_request
        else
          render json: {
            status: 200,
            message: 'Success',
            app_instance_id: instance_id
          }, status: 200
        end
      else
        render json: { "message" => @appinstance.drop_message }, status: :bad_request
      end
    end
  else
    render json: { "message" => "Host #{host} is not internal" }, status: :bad_request
  end
rescue StandardError => e
  message = 'Failed to drop instance'
  if performed?
    Rails.logger.error("#{message}: #{performed?}", e)
  else
    Rails.logger.error(message, e)
    render json: {
      status: 500,
      message: message
    }, status: 500
  end
end