summaryrefslogtreecommitdiff
path: root/src/web/_model/apps
diff options
context:
space:
mode:
Diffstat (limited to 'src/web/_model/apps')
-rw-r--r--src/web/_model/apps/people.php88
1 files changed, 88 insertions, 0 deletions
diff --git a/src/web/_model/apps/people.php b/src/web/_model/apps/people.php
new file mode 100644
index 0000000..4b6bab4
--- /dev/null
+++ b/src/web/_model/apps/people.php
@@ -0,0 +1,88 @@
+<?php /* Copyright (c) 2024 Freya Murphy */
+class People_model extends Model {
+
+ private $request_model;
+
+ function __construct($load) {
+ parent::__construct($load);
+ $this->request_model = $this->load->model('request');
+ }
+
+ private function get_filted_query($select) {
+ $filter_username = $this->request_model->get_str('filter_username', FALSE);
+ $filter_fisrt_name = $this->request_model->get_str('filter_first_name', FALSE);
+ $filter_last_name = $this->request_model->get_str('filter_last_name', FALSE);
+ $filter_email = $this->request_model->get_str('filter_email', FALSE);
+ $max = $this->request_model->get_int('max', FALSE);
+
+ $query = $this->db
+ ->select($select)
+ ->from('api.user u');
+
+ if ($filter_username) {
+ $query = $query
+ ->where('u.username')
+ ->like('%' . $filter_username . '%');
+ }
+
+ if ($filter_fisrt_name) {
+ $query = $query
+ ->where('u.first_name')
+ ->like('%'. $filter_fisrt_name . '%');
+ }
+
+ if ($filter_last_name) {
+ $query = $query
+ ->where('u.last_name')
+ ->like('%' . $filter_last_name . '%');
+ }
+
+ if ($filter_email) {
+ $query = $query
+ ->where('u.email')
+ ->like('%' . $filter_email . '%');
+ }
+
+ if ($max) {
+ $query = $query
+ ->where('u.id')
+ ->le($max);
+ }
+
+ return $query;
+ }
+
+ public function get_users(): array {
+ $page = $this->request_model->get_int('page', 0);
+ $page_size = 24;
+ $offset = $page_size * $page;
+
+ $users = $this->get_filted_query('*')
+ ->order_by('u.id', 'DESC')
+ ->offset($offset)
+ ->limit($page_size)
+ ->rows();
+
+ $count = $this->get_filted_query('COUNT(u.id) AS count')
+ ->row()['count'];
+
+ $max = 0;
+
+ foreach ($users as $user) {
+ $max = max($max, $user['id']);
+ }
+
+ return array(
+ 'users' => $users,
+ 'count' => $count,
+ 'page_size' => $page_size,
+ 'max_id' => $max
+ );
+ }
+
+ public function get_data(): array {
+ $data = parent::get_data();
+ $data['title'] = lang('title');
+ return $data;
+ }
+}