public function performScan($fileNames) { $i = 0; $filesArray = []; foreach ($fileNames as $file) { // $i++; //Test code starts here // $fileUrl = $this->_downloadFile($file); // Yii::$app->LSRParser->url = $fileUrl; // Yii::$app->LSRParser->fileName = $file; // $fileArray = Yii::$app->LSRParser->getContent(); //Test code ends here if (preg_match($this->fileNameFormat, $file)) { $lastModifiedDate = $this->_getLastModifiedDateForFile($file); $isFileRecordExists = models\ProcessedLSR::find()->where('fileName = :filename', [':filename' => $file])->one(); if ($isFileRecordExists && $isFileRecordExists->modifiedDate != $lastModifiedDate || !$isFileRecordExists || $this->forceScan) { $fileUrl = $this->_downloadFile($file); Yii::$app->LSRParser->url = $fileUrl; Yii::$app->LSRParser->fileName = $file; $fileArray = Yii::$app->LSRParser->getContent(); $validationString = $fileArray['state'] . ' ' . $fileArray['city'] . ' ' . $fileArray['date'] . ' ' . $fileArray['time']; if ($isFileRecordExists) { if ($isFileRecordExists->validationString != $validationString || $this->forceScan) { //Update required $isFileRecordExists->validationString = $validationString; $isFileRecordExists->modifiedDate = $lastModifiedDate; $isFileRecordExists->save(); $this->insertNewLSRRecords($fileArray); } } else { //We need to add a new record $ProcessedLSRModel = new models\ProcessedLSR(); $ProcessedLSRModel->fileName = $file; $ProcessedLSRModel->validationString = $validationString; $ProcessedLSRModel->modifiedDate = $lastModifiedDate; $ProcessedLSRModel->save(); $this->insertNewLSRRecords($fileArray); } $filesArray[] = $fileArray; } $i++; @unlink(\Yii::getAlias('@app') . '/tmp/' . $file); } } return $filesArray; }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = ProcessedLSR::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'modifiedDate' => $this->modifiedDate]); $query->andFilterWhere(['like', 'fileName', $this->fileName])->andFilterWhere(['like', 'validationString', $this->validationString]); return $dataProvider; }