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   Request  $request
18     * @param   String   $eventName
19     *
20     * @return null
21     */
22    public function track(Request $request, $eventName)
23    {
24        try {
25            $acceptableValues = [
26                'clicked_help',
27                'clicked_settings',
28                'clicked_download_extension',
29                'clicked_contact_sales'
30            ];
31            if (!in_array($eventName, $acceptableValues)) {
32                return null;
33            }
34
35            $userInfo = UserInfo::where('email', $request->user()->email)->first();
36
37            if (!$userInfo) {
38                return null;
39            }
40            $property_name_count = $eventName . "_count";
41            $property_name_last_date = $eventName . "_last_date";
42
43            $userInfo[$property_name_count] = ($userInfo[$property_name_count] ?? 0) + 1;
44            $userInfo[$property_name_last_date] = new UTCDateTime(now()->getTimestamp() * 1000);
45            $userInfo->save();
46
47            return null;
48        } catch (Exception $ex) {
49            Log::error('Error in tracking contact: ' + $ex);
50        }
51    }
52}