Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 35
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
TotalFlyGrammarSpotlightAction
0.00% covered (danger)
0.00%
0 / 35
0.00% covered (danger)
0.00%
0 / 1
110
0.00% covered (danger)
0.00%
0 / 1
 execute
0.00% covered (danger)
0.00%
0 / 35
0.00% covered (danger)
0.00%
0 / 1
110
1<?php
2
3namespace App\Actions\AccountCenter\Reporting;
4
5use App\DTO\AccountCenter\Reporting\ReportingRequestDTO;
6use Carbon\Carbon;
7
8class TotalFlyGrammarSpotlightAction extends AccountCenterReporting
9{
10    public function execute(ReportingRequestDTO $filter)
11    {
12        $query = $this->getFilteredQuery($filter);
13
14        $flycut_usages = $query->get();
15
16        $firstDate = ! empty($filter->fromDate) ? Carbon::parse($filter->fromDate)->startOfDay() : null;
17        $lastDate = ! empty($filter->toDate) ? Carbon::parse($filter->toDate)->endOfDay() : null;
18
19        if (! $firstDate) {
20            $firstDate = $flycut_usages->min('created_at');
21        }
22
23        if (! $lastDate) {
24            $lastDate = $flycut_usages->max('created_at');
25        }
26
27        $months = $lastDate->diffInMonths($firstDate);
28        $chart = $this->buildLineChartData2($flycut_usages, $months);
29        $total = $flycut_usages->sum('fly_grammar_actions');
30        $total_accepted = $flycut_usages->sum('fly_grammar_accepted');
31        $total_autocorrect = $flycut_usages->sum('fly_grammar_autocorrect');
32        $total_autocomplete = $flycut_usages->sum('fly_grammar_autocomplete');
33        $paragraph_rewrite_count = $flycut_usages->sum('paragraph_rewrite_count');
34        $userIds = $query->distinct('user_id')->get();
35        $total_users = count($userIds);
36        $average = $total_users > 0 ? $total / $total_users : 0;
37        $average_accepted = $total_users > 0 ? $total_accepted / $total_users : 0;
38        $average_autocorrect = $total_users > 0 ? $total_autocorrect / $total_users : 0;
39        $average_autocomplete = $total_users > 0 ? $total_autocomplete / $total_users : 0;
40        $average_paragraph_rewrite = $total_users > 0 ? $paragraph_rewrite_count / $total_users : 0;
41
42        return [
43            'chart' => $chart,
44            'total_issues_fixed' => number_format($total, 0, '.', ','),
45            'average_issues_fixed' => round($average, 0),
46            'total_issues_accepted' => number_format($total_accepted, 0, '.', ','),
47            'average_issues_accepted' => round($average_accepted, 0),
48            'total_issues_autocorrect' => number_format($total_autocorrect, 0, '.', ','),
49            'average_issues_autocorrect' => round($average_autocorrect, 0),
50            'total_issues_autocomplete' => number_format($total_autocomplete, 0, '.', ','),
51            'average_issues_autocomplete' => round($average_autocomplete, 0),
52            'total_paragraph_rewrite_count' => number_format($paragraph_rewrite_count, 0, '.', ','),
53            'average_paragraph_rewrite_count' => round($average_paragraph_rewrite, 0),
54        ];
55    }
56}