Proyectos de Subversion LeadersLinked - Services

Rev

Rev 1 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1 Rev 345
Línea 1... Línea 1...
1
<?php
1
<?php
2
 
-
 
3
declare(strict_types=1);
2
declare(strict_types = 1);
4
 
-
 
5
namespace LeadersLinked\Command;
3
namespace LeadersLinked\Command;
Línea 6... Línea 4...
6
 
4
 
7
use Symfony\Component\Console\Command\Command;
5
use Symfony\Component\Console\Command\Command;
8
use Symfony\Component\Console\Input\InputInterface;
6
use Symfony\Component\Console\Input\InputInterface;
9
//use Symfony\Component\Console\Input\InputOption;
7
// use Symfony\Component\Console\Input\InputOption;
10
use Symfony\Component\Console\Output\OutputInterface;
8
use Symfony\Component\Console\Output\OutputInterface;
11
use Laminas\Db\Adapter\AdapterInterface;
-
 
12
 
9
use Laminas\Db\Adapter\AdapterInterface;
13
use Laminas\Log\LoggerInterface;
10
use Laminas\Log\LoggerInterface;
14
use LeadersLinked\Mapper\QueryMapper;
11
use LeadersLinked\Mapper\QueryMapper;
15
use LeadersLinked\Mapper\EngagementMapper;
12
use LeadersLinked\Mapper\EngagementMapper;
16
use LeadersLinked\Mapper\EngagementRecordMapper;
13
use LeadersLinked\Mapper\EngagementRecordMapper;
Línea 22... Línea 19...
22
use LeadersLinked\Model\EngagementUser;
19
use LeadersLinked\Model\EngagementUser;
23
use LeadersLinked\Model\EngagementRecord;
20
use LeadersLinked\Model\EngagementRecord;
24
use Laminas\Mvc\I18n\Translator;
21
use Laminas\Mvc\I18n\Translator;
25
use LeadersLinked\Cache\CacheInterface;
22
use LeadersLinked\Cache\CacheInterface;
Línea 26... Línea -...
26
 
-
 
27
 
23
 
28
class DailyPulseSimulateCommand extends Command
24
class DailyPulseSimulateCommand extends Command
-
 
25
{
29
{
26
 
30
    /**
27
    /**
31
     *
28
     *
32
     * @var \Laminas\Db\Adapter\AdapterInterface
29
     * @var \Laminas\Db\Adapter\AdapterInterface
33
     */
30
     */
34
    private $adapter;
31
    private $adapter;
35
    
32
 
36
    /**
33
    /**
37
     *
34
     *
38
     * @var \LeadersLinked\Cache\CacheInterface
35
     * @var \LeadersLinked\Cache\CacheInterface
39
     */
36
     */
40
    private $cache;
-
 
41
    
37
    private $cache;
42
    
38
 
43
    /**
39
    /**
44
     *
40
     *
45
     * @var \Laminas\Log\LoggerInterface
41
     * @var \Laminas\Log\LoggerInterface
46
     */
42
     */
47
    private $logger;
43
    private $logger;
48
    
44
 
49
    /**
45
    /**
50
     *
46
     *
51
     * @var array
47
     * @var array
52
     */
48
     */
53
    private $config;
-
 
54
    
49
    private $config;
55
    
50
 
56
    /**
51
    /**
57
     *
52
     *
58
     * @var \Laminas\Mvc\I18n\Translator
53
     * @var \Laminas\Mvc\I18n\Translator
59
     */
54
     */
60
    private $translator;
-
 
61
    
55
    private $translator;
62
    
56
 
63
    /**
57
    /**
64
     *
58
     *
65
     * @param \Laminas\Db\Adapter\AdapterInterface $adapter
59
     * @param \Laminas\Db\Adapter\AdapterInterface $adapter
-
 
60
     * @param \LeadersLinked\Cache\CacheInterface $cache
66
     * @param \LeadersLinked\Cache\CacheInterface $cache
61
     * @param
67
     * @param \Laminas\Log\LoggerInterface
62
     *            \Laminas\Log\LoggerInterface
68
     * @param array $config
63
     * @param array $config
69
     * @param \Laminas\Mvc\I18n\Translator $translator
64
     * @param \Laminas\Mvc\I18n\Translator $translator
70
     */
65
     */
71
    public function __construct($adapter, $cache, $logger, $config, $translator)
66
    public function __construct($adapter, $cache, $logger, $config, $translator)
72
    {
67
    {
73
        $this->adapter      = $adapter;
68
        $this->adapter = $adapter;
74
        $this->cache        = $cache;
69
        $this->cache = $cache;
75
        $this->logger       = $logger;
70
        $this->logger = $logger;
76
        $this->config       = $config;
71
        $this->config = $config;
77
        $this->translator   = $translator;
72
        $this->translator = $translator;
78
        
73
 
79
        parent::__construct();
74
        parent::__construct();
80
    }
75
    }
81
    
76
 
82
    protected function execute(InputInterface $input, OutputInterface $output) : int
77
    protected function execute(InputInterface $input, OutputInterface $output): int
83
    {
-
 
84
        
78
    {
Línea 85... Línea -...
85
        $output->writeln('Comenzamos a generar Daily Pulse de los últimos 30 días');
-
 
86
 
79
        $output->writeln('Comenzamos a generar Daily Pulse de los últimos 30 días');
87
        
80
 
88
        $company_id = 1;
81
        $company_id = 1;
89
        $engagementMapper = EngagementMapper::getInstance($this->adapter);
82
        $engagementMapper = EngagementMapper::getInstance($this->adapter);
90
        $engagement = $engagementMapper->fetchOneByCompanyId($company_id);
83
        $engagement = $engagementMapper->fetchOneByCompanyId($company_id);
91
        
84
 
92
        $engagementRecordMapper = EngagementRecordMapper::getInstance($this->adapter);
-
 
93
        $engagementUserMapper = EngagementUserMapper::getInstance($this->adapter);
-
 
Línea 94... Línea -...
94
        
-
 
95
        
85
        $engagementRecordMapper = EngagementRecordMapper::getInstance($this->adapter);
96
 
86
        $engagementUserMapper = EngagementUserMapper::getInstance($this->adapter);
97
        
87
 
98
        $dailyPulseEmojiMapper = DailyPulseEmojiMapper::getInstance($this->adapter);
88
        $dailyPulseEmojiMapper = DailyPulseEmojiMapper::getInstance($this->adapter);
99
        $emojis_climate = $dailyPulseEmojiMapper->fetchAllActiveTypeClimateOnYourOrganizationByCompanyId($company_id);
89
        $emojis_climate = $dailyPulseEmojiMapper->fetchAllActiveTypeClimateOnYourOrganizationByCompanyId($company_id);
100
        $max_emojis_climate = count($emojis_climate) - 1;
90
        $max_emojis_climate = count($emojis_climate) - 1;
101
        
-
 
102
        $emojis_feel = $dailyPulseEmojiMapper->fetchAllActiveTypeHowAreYouFeelByCompanyId($company_id);
91
 
103
        $max_emojis_feel = count($emojis_feel) - 1;
92
        $emojis_feel = $dailyPulseEmojiMapper->fetchAllActiveTypeHowAreYouFeelByCompanyId($company_id);
104
        
-
 
105
        
93
        $max_emojis_feel = count($emojis_feel) - 1;
106
        $dailyPulseRecordMapper = DailyPulseRecordMapper::getInstance($this->adapter);
94
 
107
        
95
        $dailyPulseRecordMapper = DailyPulseRecordMapper::getInstance($this->adapter);
108
        
96
 
109
        $endDate = date('Y-m-d');
97
        $endDate = date('Y-m-d');
110
        $startDate = date('Y-m-d', strtotime('-1 MONTH'));
98
        $startDate = date('Y-m-d', strtotime('-1 MONTH'));
111
        
99
 
112
        $seed = (int) (floor(time()/86400));
100
        $seed = (int) (floor(time() / 86400));
113
        srand($seed);
101
        srand($seed);
114
        $min_users = 100;
102
        $min_users = 100;
115
        $max_users = 300;
-
 
116
        
103
        $max_users = 300;
117
        $queryMapper = QueryMapper::getInstance($this->adapter);
-
 
118
        
104
 
119
        
105
        $queryMapper = QueryMapper::getInstance($this->adapter);
120
        
106
 
121
        $output->writeln('$startDate = ' .  $startDate); 
107
        $output->writeln('$startDate = ' . $startDate);
122
        $output->writeln('$endDate = ' .  $endDate); 
108
        $output->writeln('$endDate = ' . $endDate);
Línea 123... Línea 109...
123
        
109
 
124
        $dt = \DateTime::createFromFormat('Y-m-d', $startDate);
110
        $dt = \DateTime::createFromFormat('Y-m-d', $startDate);
125
        do {
111
        do {
126
 
112
 
127
            $date = $dt->format('Y-m-d');
113
            $date = $dt->format('Y-m-d');
128
            
114
 
129
            $limit = rand($min_users, $max_users);
115
            $limit = rand($min_users, $max_users);
130
            
116
 
131
            $sql  = " SELECT id FROM " . UserMapper::_TABLE;
117
            $sql = " SELECT id FROM " . UserMapper::_TABLE;
132
            $sql .= " ORDER BY RAND() LIMIT $limit";
118
            $sql .= " ORDER BY RAND() LIMIT $limit";
133
            
119
 
134
            $output->writeln('$sql = ' . $sql);
120
            $output->writeln('$sql = ' . $sql);
135
           
121
 
136
            $user_ids = [];
-
 
137
            
122
            $user_ids = [];
138
            $records = $queryMapper->fetchAllUsingParameters($sql);
123
 
139
            foreach($records as $record) 
124
            $records = $queryMapper->fetchAllUsingParameters($sql);
140
            {
125
            foreach ($records as $record) {
141
                array_push($user_ids, $record['id']);
126
                array_push($user_ids, $record['id']);
142
            }
-
 
143
  
127
            }
144
            $max = count($user_ids);
-
 
145
            for ($i = 0; $i < $max; $i++)
128
 
146
            {
129
            $max = count($user_ids);
147
                $user_id = $user_ids[$i];
130
            for ($i = 0; $i < $max; $i ++) {
148
                
-
 
149
                
131
                $user_id = $user_ids[$i];
150
                $idx = rand(0, $max_emojis_feel);
-
 
151
                $emoji = $emojis_feel[$idx];
132
 
152
                
133
                $idx = rand(0, $max_emojis_feel);
153
                
134
                $emoji = $emojis_feel[$idx];
154
                
135
 
155
                $dailyPulse = new DailyPulseRecord();
136
                $dailyPulse = new DailyPulseRecord();
156
                $dailyPulse->company_id = $company_id;
137
                $dailyPulse->company_id = $company_id;
157
                $dailyPulse->user_id = $user_id;
138
                $dailyPulse->user_id = $user_id;
158
                $dailyPulse->emoji_id = $emoji->id;
139
                $dailyPulse->emoji_id = $emoji->id;
159
                $dailyPulse->date = $date;
140
                $dailyPulse->date = $date;
160
                $dailyPulse->type = DailyPulseRecord::TYPE_HOW_ARE_YOU_FEEL;
141
                $dailyPulse->type = DailyPulseRecord::TYPE_HOW_ARE_YOU_FEEL;
161
                $dailyPulse->engagement = $engagement ? $engagement->daily_pulse_how_are_you_feel : 0;
142
                $dailyPulse->engagement = $engagement ? $engagement->daily_pulse_how_are_you_feel : 0;
162
                $dailyPulse->points = $emoji->points;
-
 
163
                
-
 
164
                $result = $dailyPulseRecordMapper->insert($dailyPulse);
-
 
165
                if($result) {
-
 
166
                    
143
                $dailyPulse->points = $emoji->points;
167
                    
144
 
168
                    
145
                $result = $dailyPulseRecordMapper->insert($dailyPulse);
169
                    
146
                if ($result) {
170
                    
147
 
171
                    $engagementUserMapper = EngagementUserMapper::getInstance($this->adapter);
148
                    $engagementUserMapper = EngagementUserMapper::getInstance($this->adapter);
172
                    $engagementUser = $engagementUserMapper->fetchOneByCompanyIdAndUserId($company_id, $user_id);
149
                    $engagementUser = $engagementUserMapper->fetchOneByCompanyIdAndUserId($company_id, $user_id);
173
                    
150
 
174
                    if($engagementUser) {
151
                    if ($engagementUser) {
175
                        $engagementUser->points = $engagementUser->points + ($engagement ? $engagement->daily_pulse_how_are_you_feel : 0);
152
                        $engagementUser->points = $engagementUser->points + ($engagement ? $engagement->daily_pulse_how_are_you_feel : 0);
176
                        $engagementUserMapper->update( $engagementUser );
153
                        $engagementUserMapper->update($engagementUser);
177
                    } else {
154
                    } else {
178
                        $engagementUser = new EngagementUser();
155
                        $engagementUser = new EngagementUser();
179
                        $engagementUser->company_id = $company_id;
156
                        $engagementUser->company_id = $company_id;
180
                        $engagementUser->user_id = $user_id;
157
                        $engagementUser->user_id = $user_id;
181
                        $engagementUser->points = $engagement ? $engagement->daily_pulse_how_are_you_feel : 0;
158
                        $engagementUser->points = $engagement ? $engagement->daily_pulse_how_are_you_feel : 0;
182
                        $engagementUserMapper->insert( $engagementUser );
159
                        $engagementUserMapper->insert($engagementUser);
183
                    }
160
                    }
184
                    
161
 
185
                    $engagementRecord = new EngagementRecord();
162
                    $engagementRecord = new EngagementRecord();
186
                    $engagementRecord->company_id = $company_id;
163
                    $engagementRecord->company_id = $company_id;
187
                    $engagementRecord->user_id = $user_id;
164
                    $engagementRecord->user_id = $user_id;
188
                    $engagementRecord->date = $date;
165
                    $engagementRecord->date = $date;
189
                    $engagementRecord->points = $engagement->daily_pulse_how_are_you_feel;
166
                    $engagementRecord->points = $engagement->daily_pulse_how_are_you_feel;
190
                    $engagementRecord->type = EngagementRecord::TYPE_DAILY_PULSE_HOW_ARE_YOU_FEEL;
-
 
191
                    
-
 
192
                    $engagementRecordMapper = EngagementRecordMapper::getInstance($this->adapter);
167
                    $engagementRecord->type = EngagementRecord::TYPE_DAILY_PULSE_HOW_ARE_YOU_FEEL;
193
                    $engagementRecordMapper->insert($engagementRecord);
-
 
194
                    
168
 
195
                  
-
 
196
                } 
169
                    $engagementRecordMapper = EngagementRecordMapper::getInstance($this->adapter);
197
                
170
                    $engagementRecordMapper->insert($engagementRecord);
198
            }
171
                }
199
            
172
            }
200
            
173
 
201
            $percentaje = rand(20, 80);
-
 
202
            
174
            $percentaje = rand(20, 80);
203
            $max = (int) (($percentaje * 100) / $max);
-
 
204
            for ($i = 0; $i < $max; $i++)
175
 
205
            {
176
            $max = (int) (($percentaje * 100) / $max);
206
                $user_id = $user_ids[$i];
177
            for ($i = 0; $i < $max; $i ++) {
207
                
178
                $user_id = $user_ids[$i];
208
                
179
 
209
                $idx = rand(0, $max_emojis_climate);
180
                $idx = rand(0, $max_emojis_climate);
210
                $emoji = $emojis_climate[$idx];
181
                $emoji = $emojis_climate[$idx];
211
                
182
 
212
                $dailyPulse = new DailyPulseRecord();
183
                $dailyPulse = new DailyPulseRecord();
213
                $dailyPulse->company_id = $company_id;
184
                $dailyPulse->company_id = $company_id;
214
                $dailyPulse->user_id = $user_id;
185
                $dailyPulse->user_id = $user_id;
215
                $dailyPulse->emoji_id = $emoji->id;
186
                $dailyPulse->emoji_id = $emoji->id;
216
                $dailyPulse->type = DailyPulseRecord::TYPE_CLIMATE_ON_YOUR_ORGANIZATION;
187
                $dailyPulse->type = DailyPulseRecord::TYPE_CLIMATE_ON_YOUR_ORGANIZATION;
217
                $dailyPulse->date = $date;
188
                $dailyPulse->date = $date;
218
                $dailyPulse->engagement = $engagement ? $engagement->daily_pulse_climate_on_your_organization : 0;
189
                $dailyPulse->engagement = $engagement ? $engagement->daily_pulse_climate_on_your_organization : 0;
219
                $dailyPulse->points = $emoji->points;
190
                $dailyPulse->points = $emoji->points;
220
                
191
 
221
                $result = $dailyPulseRecordMapper->insert($dailyPulse);
192
                $result = $dailyPulseRecordMapper->insert($dailyPulse);
222
                if($result) {
193
                if ($result) {
223
                    
194
 
224
                    $engagementUserMapper = EngagementUserMapper::getInstance($this->adapter);
195
                    $engagementUserMapper = EngagementUserMapper::getInstance($this->adapter);
225
                    $engagementUser = $engagementUserMapper->fetchOneByCompanyIdAndUserId($company_id, $user_id);
196
                    $engagementUser = $engagementUserMapper->fetchOneByCompanyIdAndUserId($company_id, $user_id);
226
                    
-
 
227
                    if($engagementUser) {
197
 
228
                        $engagementUser->points = $engagementUser->points + ($engagement ? $engagement->daily_pulse_climate_on_your_organization : 0);
198
                    if ($engagementUser) {
229
                        $engagementUserMapper->update( $engagementUser );
199
                        $engagementUser->points = $engagementUser->points + ($engagement ? $engagement->daily_pulse_climate_on_your_organization : 0);
230
                        
200
                        $engagementUserMapper->update($engagementUser);
231
                    } else {
201
                    } else {
232
                        $engagementUser = new EngagementUser();
202
                        $engagementUser = new EngagementUser();
233
                        $engagementUser->company_id = $company_id;
203
                        $engagementUser->company_id = $company_id;
234
                        $engagementUser->user_id = $user_id;
204
                        $engagementUser->user_id = $user_id;
235
                        $engagementUser->points = $engagement ? $engagement->daily_pulse_climate_on_your_organization : 0;
205
                        $engagementUser->points = $engagement ? $engagement->daily_pulse_climate_on_your_organization : 0;
236
                        $engagementUserMapper->insert( $engagementUser );
206
                        $engagementUserMapper->insert($engagementUser);
237
                    }
207
                    }
238
                    
208
 
239
                    $engagementRecord = new EngagementRecord();
209
                    $engagementRecord = new EngagementRecord();
240
                    $engagementRecord->company_id = $company_id;
210
                    $engagementRecord->company_id = $company_id;
241
                    $engagementRecord->user_id = $user_id;
211
                    $engagementRecord->user_id = $user_id;
242
                    $engagementRecord->date = $date;
212
                    $engagementRecord->date = $date;
243
                    $engagementRecord->points = $engagement->daily_pulse_climate_on_your_organization;
213
                    $engagementRecord->points = $engagement->daily_pulse_climate_on_your_organization;
244
                    $engagementRecord->type = EngagementRecord::TYPE_DAILY_PULSE_CLIMATE_ON_YOUR_ORGANIZATION;
-
 
245
                    
-
 
246
                    $engagementRecordMapper = EngagementRecordMapper::getInstance($this->adapter);
214
                    $engagementRecord->type = EngagementRecord::TYPE_DAILY_PULSE_CLIMATE_ON_YOUR_ORGANIZATION;
247
                    $engagementRecordMapper->insert($engagementRecord);
-
 
248
                    
215
 
249
 
-
 
250
                }
216
                    $engagementRecordMapper = EngagementRecordMapper::getInstance($this->adapter);
251
                
-
 
252
            }
-
 
253
            
217
                    $engagementRecordMapper->insert($engagementRecord);
254
            
-
 
255
            
218
                }
256
            
-
 
257
            $output->writeln('$percentaje = ' . $percentaje);
-
 
258
           
-
 
259
            
219
            }
260
            
-
 
261
            
-
 
262
            
220
 
263
            $dt->add(new \DateInterval('P1D'));
-
 
264
            
221
            $output->writeln('$percentaje = ' . $percentaje);
265
            
222
 
266
        } while($date < $endDate);
-
 
267
        
223
            $dt->add(new \DateInterval('P1D'));
268
       
224
        } while ($date < $endDate);
269
        $output->writeln('Terminamos a generar Daily Pulse de los últimos 30 días');
225
 
270
        
-
 
271
        
-
 
272
        return 0;
-
 
273
    }
226
        $output->writeln('Terminamos a generar Daily Pulse de los últimos 30 días');
274
    
227