added hourly and money budgets to activity, project and customer (#843)
This commit is contained in:
@@ -51,23 +51,24 @@ class ActivityRepository extends AbstractRepository
|
||||
*/
|
||||
public function getActivityStatistics(Activity $activity)
|
||||
{
|
||||
$stats = new ActivityStatistic();
|
||||
|
||||
$qb = $this->getEntityManager()->createQueryBuilder();
|
||||
|
||||
$qb->select('COUNT(t.id) as totalRecords', 'SUM(t.duration) as totalDuration')
|
||||
$qb
|
||||
->addSelect('COUNT(t.id) as recordAmount')
|
||||
->addSelect('SUM(t.duration) as recordDuration')
|
||||
->addSelect('SUM(t.rate) as recordRate')
|
||||
->from(Timesheet::class, 't')
|
||||
->where('t.activity = :activity')
|
||||
;
|
||||
|
||||
$result = $qb->getQuery()->execute(['activity' => $activity], Query::HYDRATE_ARRAY);
|
||||
$timesheetResult = $qb->getQuery()->execute(['activity' => $activity], Query::HYDRATE_ARRAY);
|
||||
|
||||
$stats = new ActivityStatistic();
|
||||
|
||||
if (isset($result[0])) {
|
||||
$dbStats = $result[0];
|
||||
|
||||
$stats->setCount(1);
|
||||
$stats->setRecordAmount($dbStats['totalRecords']);
|
||||
$stats->setRecordDuration($dbStats['totalDuration']);
|
||||
if (isset($timesheetResult[0])) {
|
||||
$stats->setRecordAmount($timesheetResult[0]['recordAmount']);
|
||||
$stats->setRecordDuration($timesheetResult[0]['recordDuration']);
|
||||
$stats->setRecordRate($timesheetResult[0]['recordRate']);
|
||||
}
|
||||
|
||||
return $stats;
|
||||
|
||||
@@ -53,12 +53,12 @@ class CustomerRepository extends AbstractRepository
|
||||
public function getCustomerStatistics(Customer $customer)
|
||||
{
|
||||
$stats = new CustomerStatistic();
|
||||
$stats->setCount(1);
|
||||
|
||||
$qb = $this->getEntityManager()->createQueryBuilder();
|
||||
$qb
|
||||
->addSelect('COUNT(t.id) as recordAmount')
|
||||
->addSelect('SUM(t.duration) as recordDuration')
|
||||
->addSelect('SUM(t.rate) as recordRate')
|
||||
->from(Timesheet::class, 't')
|
||||
->join(Project::class, 'p', Query\Expr\Join::WITH, 't.project = p.id')
|
||||
->andWhere('p.customer = :customer')
|
||||
@@ -68,6 +68,7 @@ class CustomerRepository extends AbstractRepository
|
||||
if (isset($timesheetResult[0])) {
|
||||
$stats->setRecordAmount($timesheetResult[0]['recordAmount']);
|
||||
$stats->setRecordDuration($timesheetResult[0]['recordDuration']);
|
||||
$stats->setRecordRate($timesheetResult[0]['recordRate']);
|
||||
}
|
||||
|
||||
$qb = $this->getEntityManager()->createQueryBuilder();
|
||||
|
||||
@@ -49,14 +49,24 @@ class ProjectRepository extends AbstractRepository
|
||||
|
||||
public function getProjectStatistics(Project $project): ProjectStatistic
|
||||
{
|
||||
$stats = new ProjectStatistic();
|
||||
|
||||
$qb = $this->getEntityManager()->createQueryBuilder();
|
||||
|
||||
$qb->select('COUNT(t.id) as recordAmount')
|
||||
$qb
|
||||
->addSelect('COUNT(t.id) as recordAmount')
|
||||
->addSelect('SUM(t.duration) as recordDuration')
|
||||
->addSelect('SUM(t.rate) as recordRate')
|
||||
->from(Timesheet::class, 't')
|
||||
->andWhere('t.project = :project')
|
||||
;
|
||||
$resultTimesheets = $qb->getQuery()->execute(['project' => $project], Query::HYDRATE_ARRAY);
|
||||
$timesheetResult = $qb->getQuery()->execute(['project' => $project], Query::HYDRATE_ARRAY);
|
||||
|
||||
if (isset($timesheetResult[0])) {
|
||||
$stats->setRecordAmount($timesheetResult[0]['recordAmount']);
|
||||
$stats->setRecordDuration($timesheetResult[0]['recordDuration']);
|
||||
$stats->setRecordRate($timesheetResult[0]['recordRate']);
|
||||
}
|
||||
|
||||
$qb = $this->getEntityManager()->createQueryBuilder();
|
||||
$qb->select('COUNT(a.id) as activityAmount')
|
||||
@@ -65,16 +75,6 @@ class ProjectRepository extends AbstractRepository
|
||||
;
|
||||
$resultActivities = $qb->getQuery()->execute(['project' => $project], Query::HYDRATE_ARRAY);
|
||||
|
||||
$stats = new ProjectStatistic();
|
||||
$stats->setCount(1);
|
||||
|
||||
if (isset($resultTimesheets[0])) {
|
||||
$resultTimesheets = $resultTimesheets[0];
|
||||
|
||||
$stats->setRecordAmount($resultTimesheets['recordAmount']);
|
||||
$stats->setRecordDuration($resultTimesheets['recordDuration']);
|
||||
}
|
||||
|
||||
if (isset($resultActivities[0])) {
|
||||
$resultActivities = $resultActivities[0];
|
||||
|
||||
|
||||
@@ -75,6 +75,7 @@ class TagRepository extends AbstractRepository
|
||||
->select('tag.id, tag.name, count(timesheets.id) as amount')
|
||||
->leftJoin('tag.timesheets', 'timesheets')
|
||||
->addGroupBy('tag.id')
|
||||
->addGroupBy('tag.name')
|
||||
->orderBy('tag.name')
|
||||
;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user