Class: PublisherListController

Inherits:
Object
  • Object
show all
Defined in:
lib/publisher/controllers/publisher_list_controller.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(view) ⇒ PublisherListController

Returns a new instance of PublisherListController.



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/publisher/controllers/publisher_list_controller.rb', line 13

def initialize(view)
  @view = view
  @state_notifier = ListStateNotifier.new
  @state_notifier.add_listener(@view)
  @publisher_rep = PublisherDBDataSource.new

  @sort_columns = %w[PublisherID Name Email]
  @sort_by = @sort_columns.first

  @email_filter_columns = [nil, true, false]
  @email_filter = @email_filter_columns.first
end

Instance Attribute Details

#state_notifierObject (readonly)

Returns the value of attribute state_notifier.



12
13
14
# File 'lib/publisher/controllers/publisher_list_controller.rb', line 12

def state_notifier
  @state_notifier
end

Instance Method Details

#delete_selected(current_page, per_page, selected_row) ⇒ Object



58
59
60
61
62
63
64
65
66
67
# File 'lib/publisher/controllers/publisher_list_controller.rb', line 58

def delete_selected(current_page, per_page, selected_row)
  begin
    item = @state_notifier.get(selected_row)
    @publisher_rep.delete(item.publisher_id)
    @state_notifier.delete(item)
  rescue
    api = Win32API.new('user32', 'MessageBox', ['L', 'P', 'P', 'L'], 'I')
    api.call(0, "You cannot delete the author because he is associated with some book", "Error", 0)
  end
end

#filter_email(page, per_page, filter_index) ⇒ Object



86
87
88
89
# File 'lib/publisher/controllers/publisher_list_controller.rb', line 86

def filter_email(page, per_page, filter_index)
  @email_filter = @email_filter_columns[filter_index]
  refresh_data(page, per_page)
end

#on_view_createdObject



28
29
30
31
32
33
34
# File 'lib/publisher/controllers/publisher_list_controller.rb', line 28

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



69
70
71
72
73
74
75
76
77
78
79
# File 'lib/publisher/controllers/publisher_list_controller.rb', line 69

def refresh_data(page, per_page)
  # begin
  #   @data_list = @student_rep.paginated_short_students(page, per_page, @data_list)
  #   @view.update_student_count(@student_rep.student_count)
  # rescue
  #   on_db_conn_error
  # end
  items = @publisher_rep.get_list(per_page, page, @sort_by, 'ASC', @email_filter)
  @state_notifier.set_all(items)
  @view.update_student_count(@publisher_rep.count)
end

#show_modal_addObject



40
41
42
43
44
45
# File 'lib/publisher/controllers/publisher_list_controller.rb', line 40

def show_modal_add
  controller = PublisherInputFormControllerCreate.new(self)
  view = PublisherInputForm.new(controller)
  controller.set_view(view)
  view.create.show
end

#show_modal_edit(current_page, per_page, selected_row) ⇒ Object



47
48
49
50
51
52
53
54
55
56
# File 'lib/publisher/controllers/publisher_list_controller.rb', line 47

def show_modal_edit(current_page, per_page, selected_row)
  # item_num = (current_page - 1) * per_page + selected_row

  item = @state_notifier.get(selected_row)

  controller = PublisherInputFormControllerEdit.new(self, item)
  view = PublisherInputForm.new(controller)
  controller.set_view(view)
  view.create.show
end

#show_viewObject



36
37
38
# File 'lib/publisher/controllers/publisher_list_controller.rb', line 36

def show_view
  @view.create.show
end

#sort(page, per_page, sort_index) ⇒ Object



81
82
83
84
# File 'lib/publisher/controllers/publisher_list_controller.rb', line 81

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