Sha256: ab6efbc93336149fbc2588dc5fc5e4325e7c86bde2924ab09d00f832a2a01501

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

# frozen_string_literal: true

require './views/main_window'
require './repositories/student_repository'
require './repositories/adapters/db_source_adapter'
require './repositories/containers/data_list_student_short'
require 'win32api'

class TabStudentsController
  def initialize(view)
    @view = view
    @data_list = DataListStudentShort.new([])
    @data_list.add_listener(@view)
  end

  def on_view_created
    begin
      @student_rep = StudentRepository.new(DBSourceAdapter.new)
    rescue Mysql2::Error::ConnectionError
      on_db_conn_error
    end
  end

  def show_view
    @view.create.show
  end

  def refresh_data(page, per_page)
    begin
      @data_list = @student_rep.paginated_short_students(page, per_page, @data_list)
      @view.update_count(@student_rep.student_count)
    rescue
      on_db_conn_error
    end
  end

  def on_db_conn_error
    api = Win32API.new('user32', 'MessageBox', ['L', 'P', 'P', 'L'], 'I')
    api.call(0, "No connection to DB", "Error", 0)
    # TODO: Возможность переключения на JSON помимо exit
    exit(false)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shnaider_carproj-0.1.0 lib/controllers/tab_students_controller.rb