9-manage_groups_activity.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace cx_newsletter;
  3. use \cx_appengine\string_builder;
  4. use \exception;
  5. class manage_groups_activity
  6. extends activity {
  7. public function show_after_button() : null {
  8. return null;
  9. }
  10. public function get_site_template_name() : string {
  11. return 'manage_groups';
  12. }
  13. public function inside_buttons() : array {
  14. return [ 'delete', 'save', 'add' ];
  15. }
  16. public function inside_inputs() : array {
  17. return [
  18. 'id' => 'int',
  19. 'name' => 'string'
  20. ];
  21. }
  22. public function process() : self {
  23. if ($this->is_received('save')) {
  24. $this->save();
  25. }
  26. if ($this->is_received('add')) {
  27. $this->add();
  28. }
  29. if ($this->is_received('delete')) {
  30. $this->delete();
  31. }
  32. $this->set('groups', $this->load_groups());
  33. return $this;
  34. }
  35. private function save() : void {
  36. try {
  37. $group = new group($this->get_validated('id'));
  38. $group->prepare_name($this->get_validated('name'));
  39. $this->get_mapper()->save($group);
  40. } catch (exception $exception) {
  41. $error = 'An error exception when saving group. More info: ';
  42. $error .= $exception->getMessage();
  43. $this->error_toast($error);
  44. }
  45. }
  46. private function add() : void {
  47. try {
  48. $group = new group();
  49. $group->prepare_name($this->get_validated('name'));
  50. $this->get_mapper()->create($group);
  51. } catch (exception $exception) {
  52. $error = 'An error exception when saving group. More info: ';
  53. $error .= $exception->getMessage();
  54. $this->error_toast($error);
  55. }
  56. }
  57. private function delete() : void {
  58. try {
  59. $group = new group($this->get_validated('id'));
  60. $this->get_mapper()->remove($group);
  61. } catch (exception $exception) {
  62. $error = 'An error exception when removing group. More info: ';
  63. $error .= $exception->getMessage();
  64. $this->error_toast($error);
  65. }
  66. }
  67. private function load_groups() : string_builder {
  68. $converter = new group_converter();
  69. $groups = new string_builder();
  70. foreach ($this->get_mapper()->load_all() as $group) {
  71. $groups->push(
  72. $this
  73. ->get_templates()
  74. ->prepare('single_group')
  75. ->render($converter->load_object($group)->get_array())
  76. );
  77. }
  78. return $groups;
  79. }
  80. private function get_mapper() : groups_mapper {
  81. return new groups_mapper(
  82. $this->get_database(),
  83. $this->get_tables()
  84. );
  85. }
  86. }