request = wpFluentForm('request'); $this->formModel = wpFluent()->table('fluentform_forms'); $this->responseModel = wpFluent()->table('fluentform_submissions'); } public function getResponses() { $query = $this->responseModel ->where('form_id', $this->formId) ->orderBy('id', Helper::sanitizeOrderValue($this->sort_by)); if ($this->per_page > 0) { $query = $query->limit($this->per_page); } if ($this->page_number > 0) { $query = $query->offset(($this->page_number - 1) * $this->per_page); } if ($this->is_favourite) { $query->where('is_favourite', $this->is_favourite); $query->where('status', '!=', 'trashed'); } else { if (!$this->status) { $query->where('status', '!=', 'trashed'); } else { $query->where('status', $this->status); } } if ($this->startDate && $this->endDate) { $endDate = $this->endDate . ' 23:59:59'; $query->where('created_at', '>=', $this->startDate); $query->where('created_at', '<=', $endDate); } if ($this->search) { $searchString = $this->search; $query->where(function ($q) use ($searchString) { $q->where('id', 'LIKE', "%{$searchString}%") ->orWhere('response', 'LIKE', "%{$searchString}%") ->orWhere('status', 'LIKE', "%{$searchString}%") ->orWhere('created_at', 'LIKE', "%{$searchString}%"); }); } if ($this->wheres) { foreach ($this->wheres as $where) { if (is_array($where) && count($where) > 1) { if (count($where) > 2) { $column = $where[0]; $operator = $where[1]; $value = $where[2]; } else { $column = $where[0]; $operator = '='; $value = $where[1]; } if (is_array($value)) { $query->whereIn($column, $value); } else { $query->where($column, $operator, $value); } } } } $total = $query->count(); $responses = $query->get(); $responses = apply_filters('fluentform/get_raw_responses', $responses, $this->formId); return [ 'data' => $responses, 'paginate' => [ 'total' => $total, 'per_page' => $this->per_page, 'current_page' => $this->page_number, 'last_page' => ceil($total / $this->per_page), ], ]; } }