Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 32
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
FlyMsgUserDailyUsage
0.00% covered (danger)
0.00%
0 / 32
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 1
 GenerateNewRecord
0.00% covered (danger)
0.00%
0 / 32
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2
3namespace App\Http\Models;
4
5use App\Http\Models\Admin\CompanyGroup;
6use App\Http\Models\Auth\User;
7use App\Observers\FlyMsgUserDailyUsageObserver;
8use Carbon\Carbon;
9use Illuminate\Database\Eloquent\Attributes\ObservedBy;
10use Illuminate\Database\Eloquent\Factories\HasFactory;
11use Illuminate\Notifications\Notifiable;
12
13#[ObservedBy([FlyMsgUserDailyUsageObserver::class])]
14class FlyMsgUserDailyUsage extends Moloquent
15{
16    use Notifiable;
17    protected $table = 'fly_msg_user_daily_usage';
18
19    protected $fillable = [
20        'user_id',
21        'hubspot_id',
22        'year',
23        'month',
24        'day',
25        'date',
26        'company_id',
27        'email_domain',
28        'user_status',
29        'group_id',
30        'subgroup_id',
31        'category',
32        'time_saved',
33        'cost_savings',
34        'characters_typed',
35        'flycuts_created',
36        'flyplates_added',
37        'flyengage_count',
38        'sentence_rewrite_count',
39        'paragraph_rewrite_count',
40        'flypost_count',
41        'flycut_count',
42        'fly_grammar_actions',
43        'fly_grammar_accepted',
44        'fly_grammar_autocorrect',
45        'fly_grammar_autocomplete',
46        'updated_at',
47        'created_at',
48    ];
49
50    public static function GenerateNewRecord(
51        int $year,
52        int $month,
53        int $day,
54        string $user_id,
55        float $time_saved,
56        float $cost_savings,
57        int $characters_typed,
58        int $flycuts_created,
59        int $flyplates_added,
60        int $flyengage_count,
61        int $sentence_rewrite_count,
62        int $paragraph_rewrite_count,
63        int $flypost_count,
64        int $flycut_count,
65        int $fly_grammar_actions,
66        int $fly_grammar_accepted,
67        int $fly_grammar_autocorrect,
68        int $fly_grammar_autocomplete,
69    ) {
70        $user = User::find($user_id);
71        $findByDate = new FlyMsgUserDailyUsage();
72        $findByDate->user_id = $user_id;
73        $findByDate->hubspot_id = $user->hubspot_id;
74        $findByDate->year = $year;
75        $findByDate->month = $month;
76        $findByDate->day = $day;
77        $findByDate->date = new \MongoDB\BSON\UTCDateTime(Carbon::create($year, $month, $day)->timestamp * 1000);
78        $findByDate->email_domain = strrchr($user->email, "@");
79        $findByDate->user_status = $user->status ?? 'Active';
80        $findByDate->company_id = $user->company_id;
81
82        $group = CompanyGroup::find($user->company_group_id);
83        if (!empty($group?->parent_id)) {
84            $findByDate->subgroup_id = $user->company_group_id;
85            $findByDate->group_id = $group->parent_id;
86        } else {
87            $findByDate->group_id = $user->company_group_id;
88        }
89
90        $findByDate->category = $user->company_id ? 'corporate' : 'individual';
91        $findByDate->time_saved = $time_saved;
92        $findByDate->cost_savings = $cost_savings;
93        $findByDate->characters_typed = $characters_typed;
94        $findByDate->flycuts_created = $flycuts_created;
95        $findByDate->flyplates_added = $flyplates_added;
96        $findByDate->flyengage_count = $flyengage_count;
97        $findByDate->sentence_rewrite_count = $sentence_rewrite_count;
98        $findByDate->paragraph_rewrite_count = $paragraph_rewrite_count;
99        $findByDate->flypost_count = $flypost_count;
100        $findByDate->flycut_count = $flycut_count;
101        $findByDate->fly_grammar_actions = $fly_grammar_actions;
102        $findByDate->fly_grammar_accepted = $fly_grammar_accepted;
103        $findByDate->fly_grammar_autocorrect = $fly_grammar_autocorrect;
104        $findByDate->fly_grammar_autocomplete = $fly_grammar_autocomplete;
105        $findByDate->save();
106    }
107}