Add progress_alert_frequency to goals_criteria with JSON parsing and export support
- Introduce `goals_criteria_progress_alert_frequency` property in `goals_criteria` class to handle alert frequencies. - Extend `fromJson` to parse `progress_alert_frequency` with support for camelCase input. - Update `toArray` to include `progress_alert_frequency` in serialized output.
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
namespace goals\classes;
|
||||
|
||||
use goals\helpers\goals_criteria_type;
|
||||
use goals\helpers\goals_criteria_progress_alert_frequency;
|
||||
use goals\interfaces\goals_criteria_i;
|
||||
use goals\traits\goals_result_parser_t;
|
||||
use goals\traits\goals_target_t;
|
||||
@@ -36,6 +37,11 @@ class goals_criteria implements goals_criteria_i
|
||||
* @var goals_criteria_products|null $products
|
||||
*/
|
||||
public ?goals_criteria_products $products;
|
||||
/**
|
||||
* Progress alert frequency for the goal
|
||||
* @var goals_criteria_progress_alert_frequency $progress_alert_frequency
|
||||
*/
|
||||
public goals_criteria_progress_alert_frequency $progress_alert_frequency;
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
@@ -46,6 +52,7 @@ class goals_criteria implements goals_criteria_i
|
||||
$this->products = new goals_criteria_products();
|
||||
$this->start = new \DateTime();
|
||||
$this->end = new \DateTime();
|
||||
$this->progress_alert_frequency = goals_criteria_progress_alert_frequency::NONE;
|
||||
|
||||
}
|
||||
|
||||
@@ -89,6 +96,19 @@ class goals_criteria implements goals_criteria_i
|
||||
$criteria->label = ($label === '') ? null : $label;
|
||||
}
|
||||
|
||||
// Parse progress alert frequency (ignore unknowns)
|
||||
if (isset($data['progress_alert_frequency']) && is_string($data['progress_alert_frequency'])) {
|
||||
$freq = goals_criteria_progress_alert_frequency::tryFrom($data['progress_alert_frequency']);
|
||||
if ($freq !== null) {
|
||||
$criteria->progress_alert_frequency = $freq;
|
||||
}
|
||||
} elseif (isset($data['progressAlertFrequency']) && is_string($data['progressAlertFrequency'])) { // allow camelCase
|
||||
$freq = goals_criteria_progress_alert_frequency::tryFrom($data['progressAlertFrequency']);
|
||||
if ($freq !== null) {
|
||||
$criteria->progress_alert_frequency = $freq;
|
||||
}
|
||||
}
|
||||
|
||||
// Parse timeframe with validation
|
||||
if (isset($data['start']) && is_string($data['start'])) {
|
||||
try {
|
||||
@@ -229,6 +249,7 @@ class goals_criteria implements goals_criteria_i
|
||||
'users' => $users,
|
||||
'departments' => $departments,
|
||||
'products' => $products,
|
||||
'progress_alert_frequency' => $this->progress_alert_frequency?->name ?? goals_criteria_progress_alert_frequency::NONE->name,
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user