153 lines
4.9 KiB
PHP
153 lines
4.9 KiB
PHP
<?php
|
|
include_once __DIR__ . "/mysql-database-service.php";
|
|
|
|
class ReportModel extends MySqlDatabaseService
|
|
{
|
|
protected $_table = 'report';
|
|
protected $_primary_key = 'id';
|
|
protected $_return_type = 'array';
|
|
protected $_allowed_fields = [
|
|
'id', 'project', 'date', 'new_lead', 'outbound_dial', 'pickup', 'conversation', 'booked_appointment', 'callback_request'
|
|
];
|
|
protected $_label_fields = [
|
|
'ID', 'Project', 'Date', 'New Lead', 'Outbound Dial', 'Pickup', 'Conversation', 'Booked Appointment', 'Callback Request'
|
|
];
|
|
protected $_use_timestamps = true;
|
|
protected $_created_field = 'created_at';
|
|
protected $_updated_field = 'updated_at';
|
|
protected $_validation_rules = [
|
|
['project', 'Project', 'required'],
|
|
|
|
['date', 'Date', 'required'],
|
|
['new_lead', 'New Lead', 'required'],
|
|
['outbound_dial', 'Outbound Dial', 'required'],
|
|
['pickup', 'Pickup', 'required'],
|
|
['conversation', 'Conversation', 'required'],
|
|
['booked_appointment', 'Booked Appointment', 'required'],
|
|
['callback_request', 'Callback Request', 'required']
|
|
];
|
|
|
|
protected $_validation_edit_rules = [
|
|
['project', 'Project', 'required'],
|
|
['date', 'Date', 'required'],
|
|
|
|
['new_lead', 'New Lead', 'required'],
|
|
['outbound_dial', 'Outbound Dial', 'required'],
|
|
['pickup', 'Pickup', 'required'],
|
|
['conversation', 'Conversation', 'required'],
|
|
['booked_appointment', 'Booked Appointment', 'required'],
|
|
['callback_request', 'Callback Request', 'required']
|
|
];
|
|
protected $_validation_messages = [
|
|
['project', 'Project', 'required'],
|
|
['date', 'Date', 'required'],
|
|
|
|
['new_lead', 'New Lead', 'required'],
|
|
['outbound_dial', 'Outbound Dial', 'required'],
|
|
['pickup', 'Pickup', 'required'],
|
|
['conversation', 'Conversation', 'required'],
|
|
['booked_appointment', 'Booked Appointment', 'required'],
|
|
['callback_request', 'Callback Request', 'required']
|
|
];
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
}
|
|
|
|
public function get_mapping()
|
|
{
|
|
return [
|
|
// TODO: ADD MAPPING
|
|
];
|
|
}
|
|
|
|
public function csvToObject($csvString) {
|
|
$lines = explode("\n", $csvString);
|
|
$headers = array_map(function($header) {
|
|
return str_replace(' ', '_', trim(strtolower($header)));
|
|
}, explode(',', $lines[0])); // Convert headers to snake case
|
|
|
|
$object = [];
|
|
|
|
foreach ($headers as $header) {
|
|
$object[$header] = [];
|
|
}
|
|
|
|
for ($i = 1; $i < count($lines) - 1; $i++) {
|
|
$values = explode(',', $lines[$i]);
|
|
for ($j = 0; $j < count($headers) && $j < count($values); $j++) {
|
|
$value = trim($values[$j]);
|
|
if ($headers[$j] == 'duration' && $value === "-") {
|
|
$object[$headers[$j]][] = '00:00';
|
|
continue;
|
|
}
|
|
$object[$headers[$j]][] = $value;
|
|
}
|
|
}
|
|
|
|
return $object;
|
|
}
|
|
|
|
|
|
|
|
// public function get_all_for_csv($where = [], $order_by = '', $direction = 'ASC')
|
|
// {
|
|
|
|
// // if ($order_by === '') {
|
|
// // $order_by = $this->_primary_key;
|
|
// // }
|
|
|
|
// // $this->db->order_by($this->clean_alpha_num_field($order_by), $this->clean_alpha_field($direction));
|
|
|
|
// // if (!empty($where)) {
|
|
// // foreach ($where as $field => $value) {
|
|
// // if (is_numeric($field) && strlen($value) > 0) {
|
|
// // $this->db->where($value);
|
|
// // continue;
|
|
// // }
|
|
|
|
// // if ($field === NULL && $value === NULL) {
|
|
// // continue;
|
|
// // }
|
|
|
|
// // if ($value !== NULL) {
|
|
// // if (is_numeric($value)) {
|
|
// // $this->db->where($field, $value);
|
|
// // continue;
|
|
// // }
|
|
|
|
// // if (is_string($value)) {
|
|
// // $this->db->like($field, $value);
|
|
// // continue;
|
|
// // }
|
|
|
|
// // $this->db->where($field, $value);
|
|
// // }
|
|
// // }
|
|
// // }
|
|
|
|
// // $query = $this->db->get($this->_table);
|
|
|
|
// $sql = [];
|
|
// foreach ($where as $key => $value) {
|
|
// if (is_string($value) && strlen($value) > 0) {
|
|
// $sql[] = "$key";
|
|
// } else {
|
|
// $sql[] = "$key = $value";
|
|
// }
|
|
// }
|
|
|
|
// return R::findAll($this->_table, implode(' AND ', $sql));
|
|
// $result = [];
|
|
|
|
// // if ($query->num_rows() > 0) {
|
|
// // foreach ($query->result() as $row) {
|
|
// // $result[] = $row;
|
|
// // }
|
|
// // }
|
|
|
|
// return $result;
|
|
// }
|
|
}
|