Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 19
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
TrackingController
0.00% covered (danger)
0.00%
0 / 19
0.00% covered (danger)
0.00%
0 / 1
20
0.00% covered (danger)
0.00%
0 / 1
 track
0.00% covered (danger)
0.00%
0 / 19
0.00% covered (danger)
0.00%
0 / 1
20
1<?php
2
3namespace App\Http\Controllers\v1;
4
5use App\Http\Controllers\Controller;
6use App\Http\Models\UserInfo;
7use Exception;
8use Illuminate\Http\Request;
9use Illuminate\Support\Facades\Log;
10use MongoDB\BSON\UTCDateTime;
11
12class TrackingController extends Controller
13{
14    /**
15     * Tracks user events from the frontend
16     *
17     * @param  string  $eventName
18     * @return null
19     */
20    public function track(Request $request, $eventName)
21    {
22        try {
23            $acceptableValues = [
24                'clicked_help',
25                'clicked_settings',
26                'clicked_download_extension',
27                'clicked_contact_sales',
28            ];
29            if (! in_array($eventName, $acceptableValues)) {
30                return null;
31            }
32
33            $userInfo = UserInfo::where('email', $request->user()->email)->first();
34
35            if (! $userInfo) {
36                return null;
37            }
38            $property_name_count = $eventName.'_count';
39            $property_name_last_date = $eventName.'_last_date';
40
41            $userInfo[$property_name_count] = ($userInfo[$property_name_count] ?? 0) + 1;
42            $userInfo[$property_name_last_date] = new UTCDateTime(now()->getTimestamp() * 1000);
43            $userInfo->save();
44
45            return null;
46        } catch (Exception $ex) {
47            Log::error('Error in tracking contact: ' + $ex);
48        }
49    }
50}