Class: Edit_student_presenter
- Inherits:
-
Object
- Object
- Edit_student_presenter
- Defined in:
- lib/presenters/edit_student/edit_student_presenter.rb
Overview
Edit_student_presenter
Базовый класс для управления данными студентов. Предоставляет общие методы для редактирования информации о студентах.
Direct Known Subclasses
Add_student_presenter, Edit_contacts_presenter, Edit_git_presenter, Replace_student_presenter
Instance Method Summary collapse
-
#get_student ⇒ Object
Получение данных студента из родительского презентера.
-
#initialize(view, parent_presenter) ⇒ Edit_student_presenter
constructor
Инициализация презентера для управления данными студентов.
-
#new_student(student_data) ⇒ Object
Создание нового объекта студента из предоставленных данных.
-
#operation(student_data) ⇒ Object
Основная операция редактирования студента.
-
#populate_fields ⇒ Object
Заполнение полей интерфейса данными студента.
-
#valid_data?(student_data) ⇒ Boolean
Проверка валидности данных студента.
Constructor Details
#initialize(view, parent_presenter) ⇒ Edit_student_presenter
Инициализация презентера для управления данными студентов.
12 13 14 15 16 |
# File 'lib/presenters/edit_student/edit_student_presenter.rb', line 12 def initialize(view, parent_presenter) self.view = view self.parent_presenter = parent_presenter self.logger = App_logger.instance end |
Instance Method Details
#get_student ⇒ Object
Получение данных студента из родительского презентера. Загружает информацию о выбранном студенте.
52 53 54 55 56 57 58 59 60 61 |
# File 'lib/presenters/edit_student/edit_student_presenter.rb', line 52 def get_student id = self.parent_presenter.get_selected[0] begin self.student = self.parent_presenter.get_student(id) rescue => e error_msg = "Ошибка при загрузке данных о студенте: #{e.}" self.logger.error error_msg self.view.(error_msg) end end |
#new_student(student_data) ⇒ Object
Создание нового объекта студента из предоставленных данных.
37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/presenters/edit_student/edit_student_presenter.rb', line 37 def new_student(student_data) data = student_data.transform_values do |value| stripped = value.strip stripped.empty? ? nil : stripped end attributes = self.get_attributes data.each do |key, value| attributes[key.to_sym] = value end self.student = Student.new_from_hash(attributes) end |
#operation(student_data) ⇒ Object
Основная операция редактирования студента.
21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/presenters/edit_student/edit_student_presenter.rb', line 21 def operation(student_data) begin self.logger.debug "Создание объекта студента: #{student_data.to_s}" new_student(student_data) self.parent_presenter.replace_student(self.student) self.view.close rescue => e error_msg = "Ошибка при изменении студента: #{e.}" self.logger.error error_msg self.view.(error_msg) end end |
#populate_fields ⇒ Object
Заполнение полей интерфейса данными студента.
66 67 68 |
# File 'lib/presenters/edit_student/edit_student_presenter.rb', line 66 def populate_fields raise NotImplementedError end |
#valid_data?(student_data) ⇒ Boolean
Проверка валидности данных студента.
74 75 76 77 78 |
# File 'lib/presenters/edit_student/edit_student_presenter.rb', line 74 def valid_data?(student_data) data = student_data.transform_values { |value| value.strip } Student.valid_name?(data["first_name"]) && Student.valid_name?(data["name"]) && Student.valid_name?(data["patronymic"]) && Student.valid_birthdate?(data["birthdate"]) end |