forked from kriskbx/gitlab-time-tracker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEstimation.php
More file actions
117 lines (99 loc) · 2.5 KB
/
Estimation.php
File metadata and controls
117 lines (99 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?php
namespace kriskbx\gtt;
use Illuminate\Contracts\Support\Arrayable;
use kriskbx\gtt\Helper\ArrayAccessForGetterMethods;
/**
* Class Estimation
* @package kriskbx\gtt
*/
class Estimation implements Arrayable, \ArrayAccess
{
use ArrayAccessForGetterMethods;
protected $timeEstimate;
protected $totalTimeSpent;
protected $humanTimeEstimate;
protected $humanTotalTimeSpent;
/**
* @return mixed
*/
public function getTimeEstimate()
{
return $this->timeEstimate;
}
/**
* @return mixed
*/
public function getTotalTimeSpent()
{
return $this->totalTimeSpent;
}
/**
* @return mixed
*/
public function getHumanTimeEstimate()
{
return $this->humanTimeEstimate;
}
/**
* @return mixed
*/
public function getHumanTotalTimeSpent()
{
return $this->humanTotalTimeSpent;
}
/**
* Estimation constructor.
*
* @param $timeEstimate
* @param $totalTimeSpent
* @param $humanTimeEstimate
* @param $humanTotalTimeSpent
*/
public function __construct($timeEstimate, $totalTimeSpent, $humanTimeEstimate, $humanTotalTimeSpent)
{
$this->timeEstimate = $timeEstimate;
$this->totalTimeSpent = $totalTimeSpent;
$this->humanTimeEstimate = $humanTimeEstimate;
$this->humanTotalTimeSpent = $humanTotalTimeSpent;
}
/**
* Get a string representative of this.
*
* @param array $params
*
* @return string
*/
public function toString($params = [])
{
$params['displayEstimationFunction'] = @$params['displayEstimationFunction'] ?: false;
if ($params['displayEstimationFunction']) {
return call_user_func_array($params['displayEstimationFunction'], [$this, $params]);
} else {
return $this->displayEstimation();
}
}
/**
* Default display estimation function.
* @return string
*/
protected function displayEstimation()
{
return $this->humanTimeEstimate . ' / ' . $this->humanTotalTimeSpent;
}
/**
* Create new object by the given array.
*
* @param array $data
*
* @return static
*/
public static function fromArray(array $data)
{
return new static(
@$data['time_estimate'],
@$data['total_time_spent'],
@$data['human_time_estimate'],
@$data['human_total_time_spent']
);
}
}