mirror of
https://github.com/sitelease/sugar-cube-client.git
synced 2025-10-31 20:12:29 +01:00
Added the TrackedTime model
This commit is contained in:
6
.semver
6
.semver
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
:major: 0
|
:major: 0
|
||||||
:minor: 1
|
:minor: 2
|
||||||
:patch: 1
|
:patch: 0
|
||||||
:special: ''
|
:special: ''
|
||||||
:metadata: ''
|
:metadata: ''
|
||||||
@ -1,5 +1,11 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## Version [0.2.0](https://github.com/sab-international/gitea.php/compare/v0.1.1...v0.2.0)
|
||||||
|
- Added `__toString()` methods to the model classes.
|
||||||
|
- Added the `TrackedTime` model.
|
||||||
|
- Added a user guide based on [MkDocs](http://www.mkdocs.org).
|
||||||
|
- Updated the package dependencies.
|
||||||
|
|
||||||
## Version [0.1.1](https://github.com/sab-international/gitea.php/compare/v0.1.0...v0.1.1)
|
## Version [0.1.1](https://github.com/sab-international/gitea.php/compare/v0.1.0...v0.1.1)
|
||||||
- Fixed [issue #1](https://github.com/sab-international/gitea.php/issues/1): the `PushEvent::jsonSerialize()` method returns `"TODO"` strings.
|
- Fixed [issue #1](https://github.com/sab-international/gitea.php/issues/1): the `PushEvent::jsonSerialize()` method returns `"TODO"` strings.
|
||||||
|
|
||||||
|
|||||||
@ -13,6 +13,5 @@ function main(): PushEvent {
|
|||||||
|
|
||||||
$data = json_decode((string) file_get_contents('php://input'));
|
$data = json_decode((string) file_get_contents('php://input'));
|
||||||
if (!is_object($data)) throw new UnexpectedValueException('Invalid payload data.');
|
if (!is_object($data)) throw new UnexpectedValueException('Invalid payload data.');
|
||||||
|
|
||||||
return PushEvent::fromJson($data);
|
return PushEvent::fromJson($data);
|
||||||
}
|
}
|
||||||
|
|||||||
159
lib/models/TrackedTime.php
Normal file
159
lib/models/TrackedTime.php
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
<?php
|
||||||
|
declare(strict_types=1);
|
||||||
|
namespace Gitea\Models;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents the worked time for an issue or pull request.
|
||||||
|
*/
|
||||||
|
class TrackedTime implements \JsonSerializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var \DateTime|null The date the entry was created.
|
||||||
|
*/
|
||||||
|
private $createdAt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var int The entry identifier.
|
||||||
|
*/
|
||||||
|
private $id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var int The identifier of the associated issue or pull request.
|
||||||
|
*/
|
||||||
|
private $issueId = -1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var int The elapsed time, in seconds.
|
||||||
|
*/
|
||||||
|
private $time;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var int The identifier of the initiating user.
|
||||||
|
*/
|
||||||
|
private $userId = -1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new entry.
|
||||||
|
* @param int $id The entry identifier.
|
||||||
|
* @param int $time The elapsed time, in seconds.
|
||||||
|
*/
|
||||||
|
function __construct(int $id, int $time) {
|
||||||
|
$this->id = $id;
|
||||||
|
$this->setTime($time);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a string representation of this object.
|
||||||
|
* @return string The string representation of this object.
|
||||||
|
*/
|
||||||
|
function __toString(): string {
|
||||||
|
$json = json_encode($this, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
|
||||||
|
return static::class." $json";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new entry from the specified JSON map.
|
||||||
|
* @param object $map A JSON map representing a entry.
|
||||||
|
* @return static The instance corresponding to the specified JSON map.
|
||||||
|
*/
|
||||||
|
static function fromJson(object $map): self {
|
||||||
|
return (new static(isset($map->id) && is_int($map->id) ? $map->id : -1, isset($map->time) && is_int($map->time) ? $map->time : 0))
|
||||||
|
->setCreatedAt(isset($map->created) && is_string($map->created) ? $map->created : null)
|
||||||
|
->setIssueId(isset($map->issue_id) && is_int($map->issue_id) ? $map->issue_id : -1)
|
||||||
|
->setUserId(isset($map->user_id) && is_int($map->user_id) ? $map->user_id : -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the date the entry was created.
|
||||||
|
* @return \DateTime|null The date the entry was created.
|
||||||
|
*/
|
||||||
|
function getCreatedAt(): ?\DateTime {
|
||||||
|
return $this->createdAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the entry identifier.
|
||||||
|
* @return int The entry identifier.
|
||||||
|
*/
|
||||||
|
function getId(): int {
|
||||||
|
return $this->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the identifier of the associated issue or pull request.
|
||||||
|
* @return int The identifier of the associated issue or pull request.
|
||||||
|
*/
|
||||||
|
function getIssueId(): int {
|
||||||
|
return $this->issueId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the elapsed time, in seconds.
|
||||||
|
* @return int The elapsed time, in seconds.
|
||||||
|
*/
|
||||||
|
function getTime(): int {
|
||||||
|
return $this->time;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the identifier of the initiating user.
|
||||||
|
* @return int The identifier of the initiating user.
|
||||||
|
*/
|
||||||
|
function getUserId(): int {
|
||||||
|
return $this->userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts this object to a map in JSON format.
|
||||||
|
* @return \stdClass The map in JSON format corresponding to this object.
|
||||||
|
*/
|
||||||
|
function jsonSerialize(): \stdClass {
|
||||||
|
return (object) [
|
||||||
|
'created' => ($date = $this->getCreatedAt()) ? $date->format('c') : null,
|
||||||
|
'id' => $this->getId(),
|
||||||
|
'issue_id' => $this->getIssueId(),
|
||||||
|
'time' => $this->getTime(),
|
||||||
|
'user_id' => $this->getUserId()
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the date the entry was created.
|
||||||
|
* @param \DateTime|string|null $value The new date of creation.
|
||||||
|
* @return $this This instance.
|
||||||
|
*/
|
||||||
|
function setCreatedAt($value): self {
|
||||||
|
$this->createdAt = is_string($value) ? new \DateTime($value) : $value;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the identifier of the associated issue or pull request.
|
||||||
|
* @param int $value The new issue identifier.
|
||||||
|
* @return $this This instance.
|
||||||
|
*/
|
||||||
|
function setIssueId(int $value): self {
|
||||||
|
$this->issueId = $value;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the elapsed time, in seconds.
|
||||||
|
* @param int $value The new elapsed time, in seconds.
|
||||||
|
* @return $this This instance.
|
||||||
|
*/
|
||||||
|
function setTime(int $value): self {
|
||||||
|
$this->time = $value;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the identifier of the initiating user.
|
||||||
|
* @param int $value The new user identifier.
|
||||||
|
* @return $this This instance.
|
||||||
|
*/
|
||||||
|
function setUserId(int $value): self {
|
||||||
|
$this->userId = $value;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user