Sha256: 73e146deb185e131ca710e73c7dbfa219f471e78f39c4a318738e94407f9f713

Contents?: true

Size: 1.17 KB

Versions: 2

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true

require 'win32api'

class StudentInputFormController
  def initialize(parent_controller)
    @parent_controller = parent_controller
  end

  def set_view(view)
    @view = view
  end

  def on_view_created
    begin
      @student_list = StudentListAdv.new(StudentsListDBAdapter.new(StudentListDB.instance))
    rescue Mysql2::Error::ConnectionError
      on_db_conn_error
    end
  end

  def process_fields(fields)
    begin
      last_name = fields.delete(:last_name)
      first_name = fields.delete(:first_name)
      parental_name = fields.delete(:parental_name)

      return if last_name.nil? || first_name.nil? || parental_name.nil?

      student = Student.new(last_name, first_name, parental_name, **fields)

      @student_list.add_student(student)

      @view.close
    rescue ArgumentError => e
      api = Win32API.new('user32', 'MessageBox', ['L', 'P', 'P', 'L'], 'I')
      api.call(0, e.message, 'Error', 0)
    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)
    @view.close
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
mvcStudentXD-1.0.1 lib/student_input_form_controller.rb
model_XD-0.1.0 lib/student_input_form_controller.rb