Class: UserListController

Inherits:
Object
  • Object
show all
Defined in:
lib/user/controllers/user_list_controller.rb

Overview

Класс UserListController отвечает за управление списком авторов, используя различные методы для обновления данных и взаимодействия с пользовательским интерфейсом.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(view) ⇒ UserListController



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/user/controllers/user_list_controller.rb', line 17

def initialize(view)
  LoggerHolder.instance.debug('UserListController: initialize')
  @view = view
  @state_notifier = ListStateNotifier.new
  @state_notifier.add_listener(@view)
  @user_rep = UserDbDataSource.new

  @sort_columns = %w[UserID FirstName LastName FatherName]
  @sort_by = @sort_columns.first

  @father_name_filter_columns = [nil, true, false]
  @father_name_filter = @father_name_filter_columns.first
end

Instance Attribute Details

#state_notifierObject (readonly)

Returns the value of attribute state_notifier.



15
16
17
# File 'lib/user/controllers/user_list_controller.rb', line 15

def state_notifier
  @state_notifier
end

Instance Method Details

#delete_selected(current_page, per_page, selected_row) ⇒ Object

метод, который получает выбранный элемент из state_notifier, удаляет его из базы данных и из state_notifier



63
64
65
66
67
68
69
70
71
72
73
# File 'lib/user/controllers/user_list_controller.rb', line 63

def delete_selected(current_page, per_page, selected_row)
  LoggerHolder.instance.debug('UserListController: delete_selected')
  begin
    item = @state_notifier.get(selected_row)
    @user_rep.delete(item.user_id)
    @state_notifier.delete(item)
  rescue
    api = Win32API.new('user32', 'MessageBox', ['L', 'P', 'P', 'L'], 'I')
    api.call(0, "You cannot delete the user because he is associated with some book", "Error", 0)
  end
end

#filter_father_name(page, per_page, filter_index) ⇒ Object



87
88
89
90
# File 'lib/user/controllers/user_list_controller.rb', line 87

def filter_father_name(page, per_page, filter_index)
  @father_name_filter = @father_name_filter_columns[filter_index]
  refresh_data(page, per_page)
end

#on_view_createdObject



31
32
33
34
35
36
37
# File 'lib/user/controllers/user_list_controller.rb', line 31

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

#refresh_data(page, per_page) ⇒ Object

етод, который получает список авторов из базы данных, устанавливает их в state_notifier и обновляет пользовательский интерфейс



76
77
78
79
80
# File 'lib/user/controllers/user_list_controller.rb', line 76

def refresh_data(page, per_page)
  items = @user_rep.get_list(per_page, page, @sort_by, 'ASC', @father_name_filter)
  @state_notifier.set_all(items)
  @view.update_student_count(@user_rep.count)
end

#show_modal_addObject



43
44
45
46
47
48
49
# File 'lib/user/controllers/user_list_controller.rb', line 43

def show_modal_add
  LoggerHolder.instance.debug('UserListController: show_modal_add')
  controller = UserInputFormControllerCreate.new(self)
  view = UserInputForm.new(controller)
  controller.set_view(view)
  view.create.show
end

#show_modal_edit(current_page, per_page, selected_row) ⇒ Object

метод, который создает контроллер UserInputFormControllerEdit, представление UserInputForm, устанавливает связи между ними и показывает модальное окно.



52
53
54
55
56
57
58
59
60
# File 'lib/user/controllers/user_list_controller.rb', line 52

def show_modal_edit(current_page, per_page, selected_row)
    LoggerHolder.instance.debug('UserListController: show_modal_edit')
  # item_num = (current_page - 1) * per_page + selected_row
  item = @state_notifier.get(selected_row)
  controller = UserInputFormControllerEdit.new(self, item)
  view = UserInputForm.new(controller)
  controller.set_view(view)
  view.create.show
end

#show_viewObject



39
40
41
# File 'lib/user/controllers/user_list_controller.rb', line 39

def show_view
  @view.create.show
end

#sort(page, per_page, sort_index) ⇒ Object



82
83
84
85
# File 'lib/user/controllers/user_list_controller.rb', line 82

def sort(page, per_page, sort_index)
  @sort_by = @sort_columns[sort_index]
  refresh_data(page, per_page)
end