WorkflowConfiguration.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace Twilio\TaskRouter;
  3. /**
  4. * Twilio TaskRouter Workflow Builder
  5. *
  6. * @author Justin Witz <jwitz@twilio.com>
  7. * @license http://creativecommons.org/licenses/MIT/ MIT
  8. */
  9. class WorkflowConfiguration implements \JsonSerializable {
  10. public $filters;
  11. public $default_filter;
  12. public function __construct($filters, $default_filter = null)
  13. {
  14. $this->filters = $filters;
  15. $this->default_filter = $default_filter;
  16. }
  17. public function toJSON() {
  18. return json_encode($this);
  19. }
  20. public static function parse($json) {
  21. return json_decode($json);
  22. }
  23. public static function fromJson($json) {
  24. $configJSON = self::parse($json);
  25. $default_filter = $configJSON->task_routing->default_filter;
  26. $filters = array();
  27. foreach($configJSON->task_routing->filters as $filter) {
  28. // friendly_name and filter_friendly_name should map to same variable
  29. $friendly_name = isset($filter->filter_friendly_name) ? $filter->filter_friendly_name : $filter->friendly_name;
  30. $filter = new WorkflowRule($filter->expression, $filter->targets, $friendly_name);
  31. $filters[] = $filter;
  32. }
  33. return new WorkflowConfiguration($filters, $default_filter);
  34. }
  35. public function jsonSerialize() {
  36. $json = array();
  37. $task_routing = array();
  38. $task_routing["filters"] = $this->filters;
  39. $task_routing["default_filter"] = $this->default_filter;
  40. $json["task_routing"] = $task_routing;
  41. return $json;
  42. }
  43. }