[VoiceCallHistory]
- implemented VoiceCallHistoryJob for running the jobs - implement /VoiceCallHistory for displaying, importing the Voice Call History - added date-range-picker to tt-table (still todo)
This commit is contained in:
86
application/VoiceCallHistoryJob/VoiceCallHistoryJobModel.php
Normal file
86
application/VoiceCallHistoryJob/VoiceCallHistoryJobModel.php
Normal file
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
class VoiceCallHistoryJobModel {
|
||||
public $id;
|
||||
public $date;
|
||||
public $status;
|
||||
public $create;
|
||||
public $edit;
|
||||
|
||||
|
||||
public function __construct($data = []) {
|
||||
foreach ($data as $field => $value) {
|
||||
if (property_exists(get_called_class(), $field)) {
|
||||
$this->$field = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate SQL Filter condition (space separated) for a given column.
|
||||
*
|
||||
* @param string|null $filterValue The filter value to match against.
|
||||
* @param string $columnName The name of the column in the database table.
|
||||
* @return string The SQL condition generated based on the filter value and column name.
|
||||
*/
|
||||
public static function generateFilterCondition(?string $filterValue, string $columnName): string {
|
||||
$sql = "";
|
||||
if (!empty($filterValue)) {
|
||||
$filterItems = explode(" ", $filterValue);
|
||||
foreach ($filterItems as $item) {
|
||||
$sql .= " AND `$columnName` LIKE '%" . $item . "%'";
|
||||
}
|
||||
}
|
||||
|
||||
return $sql;
|
||||
}
|
||||
|
||||
public static function createJobsUntilToday(): array {
|
||||
$db = FronkDB::singleton();
|
||||
|
||||
// $i = first day of the month; $i <= today; $i += 1 day
|
||||
$values = [];
|
||||
for ($i = strtotime(date("Y-m-01")); $i <= strtotime(date("Y-m-d")); $i += 86400) {
|
||||
$values[] = "('" . date("Y-m-d", $i) . "')";
|
||||
}
|
||||
|
||||
$valueStr = implode(", ", $values);
|
||||
|
||||
$db->query("INSERT INTO `VoiceCallHistoryJob` (`date`) VALUES $valueStr ON DUPLICATE KEY UPDATE date=VALUES(date)");
|
||||
$db->query("UPDATE `VoiceCallHistoryJob` SET `status` = 'created', `finished` = NULL WHERE `date` = '" . date("Y-m-d") . "'");
|
||||
|
||||
return [
|
||||
"message" => "Created " . count($values) . " jobs."
|
||||
];
|
||||
}
|
||||
|
||||
public static function updateJobStatus($id, $status): array {
|
||||
$db = FronkDB::singleton();
|
||||
|
||||
$escapedStatus = $db->escape($status);
|
||||
$escapedId = $db->escape($id);
|
||||
|
||||
$finished = $status == "success" ? ", `finished` = NOW()" : "";
|
||||
|
||||
$db->query("UPDATE `VoiceCallHistoryJob` SET `status` = '$escapedStatus' $finished WHERE `id` = $escapedId");
|
||||
|
||||
return [
|
||||
"message" => "Updated job $id status to $status."
|
||||
];
|
||||
}
|
||||
|
||||
public static function getJobsNotDone(): array {
|
||||
$db = FronkDB::singleton();
|
||||
|
||||
$query = $db->query("SELECT * FROM `VoiceCallHistoryJob` WHERE `status` = 'created' OR `status` = 'failed' OR `status` = 'pending' ORDER BY `date`");
|
||||
|
||||
$items = [];
|
||||
if($db->num_rows($query)) {
|
||||
while($data = $db->fetch_object($query)) {
|
||||
$items[] = new VoiceCallHistoryJobModel($data);
|
||||
}
|
||||
}
|
||||
return $items;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user