Browse Source

Move work_duration calculation to Project model

Remove days count on multi-years worjk_duration
pull/18/head
Nafies Luthfi 7 years ago
parent
commit
b7305f1753
  1. 17
      app/Entities/Projects/Project.php
  2. 19
      app/Entities/Projects/ProjectPresenter.php
  3. 2
      tests/Unit/Models/ProjectTest.php

17
app/Entities/Projects/Project.php

@ -227,6 +227,21 @@ class Project extends Model
public function getWorkDurationAttribute() public function getWorkDurationAttribute()
{ {
return $this->present()->workDuration;
$startDate = $this->start_date;
$endDate = $this->end_date;
if (is_null($endDate)) {
return '-';
}
$workDuration = dateDifference($startDate, $endDate);
if ((int) $workDuration > 365) {
return dateDifference($startDate, $endDate, '%y Year(s) %m Month(s)');
} elseif ((int) $workDuration > 30) {
return dateDifference($startDate, $endDate, '%m Month(s) %d Day(s)');
}
return $workDuration.' Day(s)';
} }
} }

19
app/Entities/Projects/ProjectPresenter.php

@ -21,23 +21,4 @@ class ProjectPresenter extends Presenter
{ {
return ProjectStatus::getNameById($this->entity->status_id); return ProjectStatus::getNameById($this->entity->status_id);
} }
public function workDuration()
{
$startDate = $this->entity->start_date;
$endDate = $this->entity->end_date;
if (is_null($endDate)) {
return '-';
}
$workDuration = dateDifference($startDate, $endDate);
if ((int) $workDuration > 365) {
return dateDifference($startDate, $endDate, '%y Year(s) %m Month(s) %d Day(s)');
} elseif ((int) $workDuration > 30) {
return dateDifference($startDate, $endDate, '%m Month(s) %d Day(s)');
}
return $workDuration.' Day(s)';
}
} }

2
tests/Unit/Models/ProjectTest.php

@ -229,6 +229,6 @@ class ProjectTest extends TestCase
'end_date' => '2017-07-21', 'end_date' => '2017-07-21',
]); ]);
$this->assertEquals('2 Year(s) 3 Month(s) 11 Day(s)', $project->work_duration);
$this->assertEquals('2 Year(s) 3 Month(s)', $project->work_duration);
} }
} }
Loading…
Cancel
Save