Files
FloatBackOfffice/application/models/Onboarding_survey_model.php
dev-chiefworks f76abffdcd first commit
2022-05-31 16:21:53 -04:00

125 lines
4.4 KiB
PHP

<?php
if (!defined('BASEPATH')) {
exit('No direct script access allowed');
}
class Onboarding_survey_model extends CI_Model {
public function __constructor() {
parrent::__constructor();
}
public function getOnboardingSurvey($params = null, $page = 0, $limit = 10) {
$queryString = 'SELECT id, group_key, answers_key, answers FROM onboarding_survey';
$countString = 'SELECT COUNT(*) FROM onboarding_survey';
$whereString = ' WHERE 1=1';
$orderByString = ' ORDER BY id ASC';
$offset = $page * $limit;
$paginationString = " LIMIT $limit OFFSET $offset";
if (empty($params)) {
$queryString .= $orderByString . $paginationString;
$query = $this->db->query($queryString);
$countQuery = $this->db->query($countString);
$data = [
'result' => $query->result_array(),
'total' => $countQuery->result_array()[0]['count'],
'pageSize' => $limit,
'pageNo' => $page
];
return $data;
}
if(!empty($params['answersKey'])) {
$whereString .= " AND answers_key = '" . pg_escape_string($params['answersKey']) . "' ";
}
if(!empty($params['answers'])) {
$whereString .= " AND answers ILIKE '%" . pg_escape_string($params['answers']) . "%' ";
}
$queryString .= $whereString . $orderByString . $paginationString;
$countString .= $whereString;
$query = $this->db->query($queryString);
$countQuery = $this->db->query($countString);
$data = [
'result' => $query->result_array(),
'total' => $countQuery->result_array()[0]['count'],
'pageSize' => $limit,
'pageNo' => $page
];
return $data;
}
public function getAvailableAndAssignedSurveyCards($params)
{
$answersKey = $params['answersKey'];
$cardCat = $params['cardCat'];
$search = $params['search'] ?? '';
$cardCatFilter = '';
if ($cardCat !== '') {
$cardCatFilter .= " AND mc.button1_action = '$cardCat'";
}
if ($search !== '') {
$cardCatFilter .= " AND (mc.name ILIKE '%" . pg_escape_string($search) . "%' OR mc.title ILIKE '%" . pg_escape_string($search) . "%') ";
}
$assignedCardsQueryString = "SELECT mc.id, mc.name, mc.title, TO_CHAR(mc.added, 'YYYY-MM-DD HH24:MI') as added
FROM onboarding_survey_cards osc
LEFT JOIN main_cards mc ON mc.id = osc.card_id
WHERE answers_key = '".pg_escape_string($answersKey)."' $cardCatFilter ORDER BY mc.added ASC";
$assignedCardsQuery = $this->db->query($assignedCardsQueryString);
$assignedCards = $assignedCardsQuery->result_array();
$assignedCardsID = [0];
foreach ($assignedCards as $assignedCard) {
if (!empty($assignedCard['id'])) {
array_push($assignedCardsID, $assignedCard['id']);
}
}
$availableCardsQueryString = "SELECT mc.id, mc.name, mc.title FROM main_cards mc
WHERE id NOT IN ( '" . implode("', '", $assignedCardsID) . "' )
AND status = 1 AND deleted IS NULL " . $cardCatFilter . " ORDER BY mc.id ASC";
$availableCardsQuery = $this->db->query($availableCardsQueryString);
$availableCards = $availableCardsQuery->result_array();
$result = ['assignedCards' => $assignedCards, 'availableCards' => $availableCards];
return $result;
}
public function assignSurveyCard($params) {
$cardID = $params['id'];
$answersKey = $params['answersKey'];
$surveyData = [
'answers_key' => $answersKey,
'card_id' => $cardID
];
return $this->db->insert('onboarding_survey_cards', $surveyData);
}
public function unassignSurveyCard($params) {
$this->db->where('answers_key', $params['answersKey']);
$this->db->where('card_id', $params['id']);
return $this->db->delete('onboarding_survey_cards');
}
public function updateSurvey($id, $data) {
$this->db->where('id', $id);
$this->db->update('onboarding_survey', $data);
}
}
?>