. */ namespace SP\Core\Messages; use JsonSerializable; use SP\Domain\Common\Adapters\Serde; use SP\Domain\Core\Exceptions\SPException; use SP\Domain\Core\Messages\MessageInterface; /** * Class TaskMessage * * @package SP\Core\Messages */ final class TaskMessage implements MessageInterface, JsonSerializable { protected ?string $message = null; protected int $time = 0; protected int $progress = 0; protected int $end = 0; public function __construct(private string $taskId, private string $task) { } public function getTask(): string { return $this->task; } public function setTask(string $task): TaskMessage { $this->task = $task; return $this; } public function getMessage(): ?string { return $this->message; } public function setMessage(string $message): TaskMessage { $this->message = $message; return $this; } public function getTime(): int { return $this->time; } public function setTime(int $time): TaskMessage { $this->time = $time; return $this; } public function getProgress(): int { return $this->progress; } public function setProgress(int $progress): TaskMessage { $this->progress = $progress; return $this; } public function getEnd(): int { return $this->end; } public function setEnd(int $end): TaskMessage { $this->end = $end; return $this; } /** * Componer un mensaje en formato HTML */ public function composeHtml(): string { return $this->composeText(); } /** * Componer un mensaje en formato texto */ public function composeText(string $delimiter = ';'): string { return implode($delimiter, [ 'taskId' => $this->taskId, 'task' => $this->task, 'message' => $this->message, 'time' => $this->time, 'progress' => $this->progress, 'end' => $this->end, ]); } /** * Componer un mensaje en formato JSON * * @throws SPException */ public function composeJson(): bool|string { return Serde::serializeJson($this); } /** * Specify data which should be serialized to JSON * * @link http://php.net/manual/en/jsonserializable.jsonserialize.php * @return array data which can be serialized by json_encode, * which is a value of any type other than a resource. * @since 5.4.0 */ public function jsonSerialize(): array { return get_object_vars($this); } public function getTaskId(): string { return $this->taskId; } public function setTaskId(string $taskId): TaskMessage { $this->taskId = $taskId; return $this; } }