コード例 #1
0
ファイル: JobStatsController.php プロジェクト: quynhvv/stepup
 /**
  * Tong hop du lieu theo thoi gian
  *
  * @param string $from_time
  * @param string $to_time
  * @param string $dateInterval P1D: từng ngày | P1W: từng tuần | P1M: từng tháng
  * @throws \yii\mongodb\Exception
  *
  * Use: php yii job-stats
  *      php yii job-stats 2015/08/01
  *      php yii job-stats 2015/08/01 2015/08/30
  */
 public function actionIndex($from_time = '', $to_time = '', $dateInterval = 'P1D')
 {
     JobStats::deleteAll();
     //        if (empty($from_time) AND empty($to_time)) { // Chay ngay hom qua
     //            $from_time = date('Y/m/d 00:00:00', strtotime("-1 days"));
     //            $to_time = date('Y/m/d 23:59:59', strtotime("-1 days"));
     //        }
     if (empty($from_time) and empty($to_time)) {
         // Chay ngay hien tai
         $from_time = date('Y/m/d 00:00:00');
         $to_time = date('Y/m/d 23:59:59');
     } elseif (empty($from_time)) {
         // Chay tu dau den $to_time
         $from_time = date('Y/m/d 00:00:00', JobStats::find()->min('date_time')->sec);
         $to_time = date('Y/m/d 23:59:59', strtotime($to_time));
     } elseif (empty($to_time)) {
         // Chay tu $from_time den ngay hien tai
         $from_time = date('Y/m/d 00:00:00', strtotime($from_time));
         $to_time = date('Y/m/d 23:59:59');
     } else {
         // Chay trong khoang $from_time den $to_time
         $from_time = date('Y/m/d 00:00:00', strtotime($from_time));
         $to_time = date('Y/m/d 23:59:59', strtotime($to_time));
     }
     // Create range date
     $data = [];
     $interval = new DateInterval($dateInterval);
     $daterange = new DatePeriod(new DateTime($from_time), $interval, new DateTime($to_time));
     foreach ($daterange as $key => $date) {
         // Update du lieu vao bang job_stats
         $currentDate = new MongoDate($date->getTimestamp());
         $model = JobStats::find()->where(['date_time' => $currentDate])->one();
         if (!$model) {
             $model = new JobStats();
             $model->date_time = $currentDate;
         }
         // Tu danh sach ma loi, count xem trong ngay co bao nhieu tin nhan
         $count = Job::find()->where(['created_time' => ['$gte' => new MongoDate(strtotime($date->format("Y-m-d 00:00:00"))), '$lte' => new MongoDate(strtotime($date->format("Y-m-d 23:59:59")))]])->count('_id');
         $data['job'] = $count;
         $model->data = $data;
         $model->save();
         echo 'Tao bao cao thong ke Job ngay ' . $date->format("Y-m-d");
         echo "\n";
     }
 }
コード例 #2
0
ファイル: JobReport.php プロジェクト: quynhvv/stepup
 /**
  * Ham render gridview thong ke theo tung ngay, tuan, thang
  * @return gridview
  */
 private function buildGridview()
 {
     // Colum mac dinh
     $columns = [];
     $searchModel = new JobStats();
     array_push($columns, ['attribute' => 'date_time', 'filterType' => GridView::FILTER_DATE_RANGE, 'format' => 'raw', 'width' => '270px', 'filterWidgetOptions' => ['pluginOptions' => ['format' => 'Y-m-d', 'separator' => ' to ', 'opens' => 'left'], 'presetDropdown' => true, 'hideInput' => true, 'convertFormat' => true], 'value' => function ($model, $key, $index, $widget) {
         return date('d/m/Y', $model->date_time->sec);
     }]);
     $where = ['date_time' => ['$gte' => new MongoDate($this->from_time['timestamp']), '$lte' => new MongoDate($this->to_time['timestamp'])]];
     foreach ($this->overall_statistics as $key => $count) {
         array_push($columns, ['attribute' => 'data.' . $key, 'header' => $key]);
     }
     $queryParams = Yii::$app->request->getQueryParams();
     $searchModel->scenario = 'search';
     $dataProvider = $searchModel->search($queryParams, 20, $where);
     $gridview = GridView::widget(['panel' => ['heading' => Yii::t('job', 'Job'), 'tableOptions' => ['id' => 'listDefault']], 'pjax' => TRUE, 'dataProvider' => $dataProvider, 'columns' => $columns]);
     return $gridview;
 }