diff --git a/app/Console/Commands/CleanDatabase.php b/app/Console/Commands/CleanDatabase.php index 1f93e52f..0c951cf2 100644 --- a/app/Console/Commands/CleanDatabase.php +++ b/app/Console/Commands/CleanDatabase.php @@ -3,7 +3,6 @@ namespace App\Console\Commands; use App\Models\Forms\FormStatistic; -use App\Models\Forms\FormSubmission; use App\Models\Forms\FormView; use Illuminate\Console\Command; use Illuminate\Support\Facades\DB; @@ -61,29 +60,6 @@ class CleanDatabase extends Command ]; }); - // Form Submissions - $this->line('Aggregating form submissions...'); - FormSubmission::select('form_id', DB::raw('DATE(created_at) as date'), DB::raw('count(*) as submissions')) - ->whereDate('created_at', '<=', now()->startOfDay()) - ->orderBy('date') - ->groupBy('form_id', 'date') - ->get()->each(function ($row) use (&$finalData) { - $key = $row->form_id.'-'.$row->date; - if (isset($finalData[$key])) { - $finalData[$key]['data']['submissions'] = $row->submissions; - } else { - $finalData[$key] = [ - 'form_id' => $row->form_id, - 'date' => $row->date, - 'data' => [ - 'views' => 0, - 'submissions' => $row->submissions, - ], - ]; - } - - }); - if ($finalData) { $this->line('Storing aggregated data...'); $created = 0; @@ -94,7 +70,7 @@ class CleanDatabase extends Command if ($found !== null) { // If found update $newData = $found->data; $newData['views'] = $newData['views'] + $row['data']['views']; - $newData['submissions'] = $newData['submissions'] + $row['data']['submissions']; + $newData['submissions'] = 0; $found->update(['data' => $newData]); $updated++; } else { // Otherwise create new diff --git a/app/Http/Controllers/Forms/FormStatsController.php b/app/Http/Controllers/Forms/FormStatsController.php index 7788f1ad..ecc1bb0e 100644 --- a/app/Http/Controllers/Forms/FormStatsController.php +++ b/app/Http/Controllers/Forms/FormStatsController.php @@ -26,11 +26,10 @@ class FormStatsController extends Controller $statisticData = $formStats->where('date', $dateObj->format('Y-m-d'))->first(); $periodStats['views'][$date] = $statisticData->data['views'] ?? 0; - $periodStats['submissions'][$date] = $statisticData->data['submissions'] ?? 0; + $periodStats['submissions'][$date] = $form->submissions()->whereDate('created_at', $dateObj)->count(); if ($dateObj->toDateString() === now()->toDateString()) { $periodStats['views'][$date] += $form->views()->count(); - $periodStats['submissions'][$date] += $form->submissions()->whereDate('created_at', '>=', now()->startOfDay())->count(); } } diff --git a/tests/Feature/Forms/CleanDatabaseTest.php b/tests/Feature/Forms/CleanDatabaseTest.php index f16d7b9d..c3ca3e9b 100644 --- a/tests/Feature/Forms/CleanDatabaseTest.php +++ b/tests/Feature/Forms/CleanDatabaseTest.php @@ -42,7 +42,7 @@ it('check form statistic for views & submissions counts', function () { expect($form->submissions()->count())->toBe(16); expect(count($statistics))->toBe(2); // 1 per day for 2 different dates expect($statistics[0]['date'])->toBe(now()->subDays(2)->toDateString()); - expect($statistics[0]['data'])->toBe(['views' => 1, 'submissions' => 1]); + expect($statistics[0]['data'])->toBe(['views' => 1, 'submissions' => 0]); expect($statistics[1]['date'])->toBe(now()->subDay()->toDateString()); - expect($statistics[1]['data'])->toBe(['views' => 10, 'submissions' => 10]); + expect($statistics[1]['data'])->toBe(['views' => 10, 'submissions' => 0]); }); diff --git a/tests/Feature/Forms/FormStatTest.php b/tests/Feature/Forms/FormStatTest.php index 7ba64bca..2a3bb762 100644 --- a/tests/Feature/Forms/FormStatTest.php +++ b/tests/Feature/Forms/FormStatTest.php @@ -46,7 +46,7 @@ it('check formstat chart data', function () { ->whereType('submissions', 'array') ->where('views', function ($values) use ($views) { foreach ($values as $date => $count) { - if ((isset($views[$date]) && $views[$date] != $count) || (! isset($views[$date]) && $count != 0)) { + if ((isset($views[$date]) && $views[$date] != $count) || (!isset($views[$date]) && $count != 0)) { return false; } } @@ -54,8 +54,9 @@ it('check formstat chart data', function () { return true; }) ->where('submissions', function ($values) use ($submissions) { + ray($values, $submissions); foreach ($values as $date => $count) { - if ((isset($submissions[$date]) && $submissions[$date] != $count) || (! isset($submissions[$date]) && $count != 0)) { + if ((isset($submissions[$date]) && $submissions[$date] != $count) || (!isset($submissions[$date]) && $count != 0)) { return false; } } @@ -64,5 +65,4 @@ it('check formstat chart data', function () { }) ->etc(); }); - });