Skip to content

Commit e517cba

Browse files
JhumanJformsdev
andauthored
Fix issue with form analytics for submissions (#362)
* Password not working when Notion embed - Fixed (#360) * fix tests --------- Co-authored-by: formsdev <136701234+formsdev@users.noreply.github.com>
1 parent 659dc50 commit e517cba

File tree

4 files changed

+7
-32
lines changed

4 files changed

+7
-32
lines changed

app/Console/Commands/CleanDatabase.php

+1-25
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
namespace App\Console\Commands;
44

55
use App\Models\Forms\FormStatistic;
6-
use App\Models\Forms\FormSubmission;
76
use App\Models\Forms\FormView;
87
use Illuminate\Console\Command;
98
use Illuminate\Support\Facades\DB;
@@ -61,29 +60,6 @@ private function cleanFormStatistics()
6160
];
6261
});
6362

64-
// Form Submissions
65-
$this->line('Aggregating form submissions...');
66-
FormSubmission::select('form_id', DB::raw('DATE(created_at) as date'), DB::raw('count(*) as submissions'))
67-
->whereDate('created_at', '<=', now()->startOfDay())
68-
->orderBy('date')
69-
->groupBy('form_id', 'date')
70-
->get()->each(function ($row) use (&$finalData) {
71-
$key = $row->form_id.'-'.$row->date;
72-
if (isset($finalData[$key])) {
73-
$finalData[$key]['data']['submissions'] = $row->submissions;
74-
} else {
75-
$finalData[$key] = [
76-
'form_id' => $row->form_id,
77-
'date' => $row->date,
78-
'data' => [
79-
'views' => 0,
80-
'submissions' => $row->submissions,
81-
],
82-
];
83-
}
84-
85-
});
86-
8763
if ($finalData) {
8864
$this->line('Storing aggregated data...');
8965
$created = 0;
@@ -94,7 +70,7 @@ private function cleanFormStatistics()
9470
if ($found !== null) { // If found update
9571
$newData = $found->data;
9672
$newData['views'] = $newData['views'] + $row['data']['views'];
97-
$newData['submissions'] = $newData['submissions'] + $row['data']['submissions'];
73+
$newData['submissions'] = 0;
9874
$found->update(['data' => $newData]);
9975
$updated++;
10076
} else { // Otherwise create new

app/Http/Controllers/Forms/FormStatsController.php

+1-2
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,10 @@ public function getFormStats(string $workspaceId, string $formId)
2626

2727
$statisticData = $formStats->where('date', $dateObj->format('Y-m-d'))->first();
2828
$periodStats['views'][$date] = $statisticData->data['views'] ?? 0;
29-
$periodStats['submissions'][$date] = $statisticData->data['submissions'] ?? 0;
29+
$periodStats['submissions'][$date] = $form->submissions()->whereDate('created_at', $dateObj)->count();
3030

3131
if ($dateObj->toDateString() === now()->toDateString()) {
3232
$periodStats['views'][$date] += $form->views()->count();
33-
$periodStats['submissions'][$date] += $form->submissions()->whereDate('created_at', '>=', now()->startOfDay())->count();
3433
}
3534
}
3635

tests/Feature/Forms/CleanDatabaseTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
expect($form->submissions()->count())->toBe(16);
4343
expect(count($statistics))->toBe(2); // 1 per day for 2 different dates
4444
expect($statistics[0]['date'])->toBe(now()->subDays(2)->toDateString());
45-
expect($statistics[0]['data'])->toBe(['views' => 1, 'submissions' => 1]);
45+
expect($statistics[0]['data'])->toBe(['views' => 1, 'submissions' => 0]);
4646
expect($statistics[1]['date'])->toBe(now()->subDay()->toDateString());
47-
expect($statistics[1]['data'])->toBe(['views' => 10, 'submissions' => 10]);
47+
expect($statistics[1]['data'])->toBe(['views' => 10, 'submissions' => 0]);
4848
});

tests/Feature/Forms/FormStatTest.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,17 @@
4646
->whereType('submissions', 'array')
4747
->where('views', function ($values) use ($views) {
4848
foreach ($values as $date => $count) {
49-
if ((isset($views[$date]) && $views[$date] != $count) || (! isset($views[$date]) && $count != 0)) {
49+
if ((isset($views[$date]) && $views[$date] != $count) || (!isset($views[$date]) && $count != 0)) {
5050
return false;
5151
}
5252
}
5353

5454
return true;
5555
})
5656
->where('submissions', function ($values) use ($submissions) {
57+
ray($values, $submissions);
5758
foreach ($values as $date => $count) {
58-
if ((isset($submissions[$date]) && $submissions[$date] != $count) || (! isset($submissions[$date]) && $count != 0)) {
59+
if ((isset($submissions[$date]) && $submissions[$date] != $count) || (!isset($submissions[$date]) && $count != 0)) {
5960
return false;
6061
}
6162
}
@@ -64,5 +65,4 @@
6465
})
6566
->etc();
6667
});
67-
6868
});

0 commit comments

Comments
 (0)