public static function getInstance()
 {
     if (!self::$WQDDataDataStore) {
         self::$WQDDataDataStore = new WQDDataDataStore();
         return self::$WQDDataDataStore;
     }
     return self::$WQDDataDataStore;
 }
Beispiel #2
0
 private function getLatestInfo($locSeq)
 {
     $folders = FolderDataStore::getInstance()->FindByLocation($locSeq);
     $WQD = WQDDataDataStore::getInstance();
     $channelInfo = new ArrayObject();
     foreach ($folders as $folder) {
         $cifo = $WQD->getChannelsLatestInfo($folder->getSeq());
         $cifo['folderSeq'] = $folder->getSeq();
         $cifo['folderName'] = $folder->getFolderName();
         $channelInfo[$folder->getSeq()] = $cifo;
     }
     return $channelInfo;
 }
 public function Save(HighValueRule $highValueRule)
 {
     try {
         $SQL = self::$INSERT;
         if ($highValueRule->getSeq() != null && $highValueRule->getSeq() != "" && $highValueRule->getSeq() > 0) {
             $SQL = self::$UPDATE;
         }
         $conn = self::$db->getConnection();
         $stmt = $conn->prepare($SQL);
         $stmt->bindValue(':folderseq', $highValueRule->getFolderSeq());
         $stmt->bindValue(':email', $highValueRule->getEmail());
         $stmt->bindValue(':mobile', $highValueRule->getMobile());
         $stmt->bindValue(':parameterchannelno', $highValueRule->getParameter());
         $stmt->bindValue(':highvalue', $highValueRule->getHighValue());
         $stmt->bindValue(':frequency', $highValueRule->getFrequency());
         $isActive = 0;
         if ($highValueRule->getIsActive() == "true" || $highValueRule->getIsActive() == 1) {
             $isActive = 1;
         }
         $stmt->bindValue(':isactive', $isActive);
         $stmt->bindValue(':rulehits', $highValueRule->getRuleHits());
         $type = $highValueRule->getStationType();
         $maxSeq = $highValueRule->getLastRuleHitFileDataSeq();
         $seq = $highValueRule->getSeq();
         if (empty($seq)) {
             if ($type == "stack" || $type == "effluent") {
                 $wqdsds = WQDStackDataStore::getInstance();
                 $maxSeq = $wqdsds->getMaxSeq();
             } else {
                 $WQDDS = WQDDataDataStore::getInstance();
                 $maxSeq = $WQDDS->getMaxSeq();
             }
         }
         $highValueRule->setLastRuleHitFileDataSeq($maxSeq);
         //$stmt->bindValue(':lastrulehitwqdfiledataseq',$maxSeq);
         $stmt->bindValue(':lastrulehitwqdfiledataseq', $highValueRule->getLastRuleHitFileDataSeq());
         if ($SQL == self::$UPDATE) {
             $stmt->bindValue(':seq', $highValueRule->getSeq());
         } else {
             $stmt->bindValue(':rulestartwqdfiledataseq', $maxSeq);
         }
         $stmt->execute();
         $error = $stmt->errorInfo();
         if ($error[2] != "") {
             throw new Exception($error[2]);
         }
     } catch (Exception $e) {
         $logger = Logger::getLogger($ConstantsArray["logger"]);
         $logger->error("Error During Save High Value Rule : - " . $e->getMessage());
     }
 }
 private function getDataJSON($fromDate, $toDate, $folSeq, $timeInterval, $channelNoArr, $periodType)
 {
     $CCDS = ChannelConfigurationDataStore::getInstance();
     $ChannelsInfo = $CCDS->FindByFolderAndChannelNos($folSeq, $channelNoArr);
     $chArr = new ArrayObject();
     $chNumbersArr = array();
     foreach ($ChannelsInfo as $channel) {
         $channelUnit = $channel->getChannelUnit();
         $channelName = $channel->getChannelName();
         if (ConvertorUtils::getPrescribedUnit($channelName) != null) {
             $channelUnit = ConvertorUtils::getPrescribedUnit($channelName);
         }
         $channelUnit = mb_check_encoding($channelUnit, 'UTF-8') ? $channelUnit : utf8_encode($channelUnit);
         $chArr[$channelName] = $channelUnit;
         array_push($chNumbersArr, $channel->getChannelNumber());
     }
     $jsonData['channels'] = $chArr;
     $WQDS = WQDDataDataStore::getInstance();
     $allDatesData = array();
     if ($periodType == "recent") {
         $latestInfo = $WQDS->getChannelsLatestInfo($folSeq);
         $channelData = array();
         $channelData['dated'] = $latestInfo['formatedDated'];
         $chValues = array();
         foreach ($chNumbersArr as $chNumber) {
             array_push($chValues, (double) $latestInfo['channelsInfo']['ch' . $chNumber . 'value']);
         }
         $channelData['values'] = $chValues;
         array_push($allDatesData, $channelData);
     } else {
         $channelsArray = $WQDS->getChannels($fromDate, $toDate, $folSeq, $channelNoArr, $timeInterval);
         foreach ($channelsArray as $channels) {
             $channelData = array();
             $channelData['dated'] = $channels['wqdfiledatadated'];
             $chValues = array();
             $cnt = count($channels) / 2;
             // divided by 2 becos array produces both channelname and int values
             for ($i = 1; $i < $cnt; $i++) {
                 array_push($chValues, (double) $channels[$i]);
             }
             $channelData['values'] = $chValues;
             array_push($allDatesData, $channelData);
         }
     }
     $allDatesData = self::getPLConvertedValueByChannel($allDatesData, $chArr);
     $jsonData['data'] = $allDatesData;
     return $jsonData;
 }
 public function Save(WQDFile $wqdFile, $filePath)
 {
     $SQL = self::$INSERT;
     $WDD = WQDDataDataStore::getInstance();
     $wqdataArr = array();
     $conn = self::$db->getConnection();
     $stmt = $conn->prepare($SQL);
     $stmt->bindValue(':date', $wqdFile->getFiledate());
     $stmt->bindValue(':name', $wqdFile->getName());
     $stmt->bindValue(':folderseq', $wqdFile->getFolderSeq());
     $stmt->bindValue(':locationseq', $wqdFile->getLocationSeq());
     try {
         $stmt->execute();
         $err = $stmt->errorInfo();
         $wqdataArr = $wqdFile->getData();
         $seq = self::$db->getLastInsertedId();
         $WDD->SaveFileData($wqdataArr, $seq);
     } catch (Exception $e) {
         return $e->getMessage();
     }
     $error = $stmt->errorInfo();
 }
 private static function getAverateDataByTimeInterval($timeBase, $dateSlices, $folSeqArray, $folChannelDataArray, $folChannelsNamesArray, $valueType)
 {
     $dataFinal = array();
     $WQDDataDS = WQDDataDataStore::getInstance();
     foreach ($folSeqArray as $folSeq) {
         $dataArray = $folChannelDataArray[$folSeq];
         $dataFinal = $WQDDataDS::getAverageDataByDataArrayDataSlices($timeBase, $dataArray, $dateSlices, $folChannelsNamesArray[$folSeq], $valueType, $dataFinal);
     }
     return $dataFinal;
 }
require_once $ConstantsArray['dbServerUrl'] . "Utils/ConvertorUtils.php";
require_once $ConstantsArray['dbServerUrl'] . "Utils/StringUtils.php";
$folSeqs = $_GET["folSeq"];
$folSeqArray = explode(",", $folSeqs);
$fromDate = new DateTime($_GET["fromDate"]);
$toDate = new DateTime($_GET["toDate"]);
$toDate->setTime(23, 59, 59);
$chSeq = $_GET["chSeq"];
$CCDS = ChannelConfigurationDataStore::getInstance();
$channel = $CCDS->FindBySeq($chSeq);
$channelNumber = $channel->getChannelNumber();
$channelName = $channel->getChannelName();
$channelUnit = $channel->getChannelUnit();
$fromDate = $fromDate->format("Y/m/d  H:i:s");
$toDate = $toDate->format("Y/m/d  H:i:s");
$WQDS = WQDDataDataStore::getInstance();
$dailyAverageArray = null;
foreach ($folSeqArray as $folSeq) {
    $arr = $WQDS->getDailyAverageValues($fromDate, $toDate, $folSeq, $channelNumber);
    $folder = FolderDataStore::getInstance()->FindBySeq($folSeq);
    $dailyAverageArray[$folder->getFolderName()] = $arr;
}
//get values for the whole day average
//$channelConfig = ChannelConfigurationDataStore::getInstance()->FindByFolderAndChannelNo($folSeqArray[0],$channelNumber);
$limit = PrescribedLimitsUtils::getPrescribedLimit($channelName);
if (ConvertorUtils::getPrescribedUnit($channelName) != null) {
    $channelUnit = ConvertorUtils::getPrescribedUnit($channelName);
}
?>

<!DOCTYPE HTML>
 public function generateFile()
 {
     echo "MANIKGARH Generator starts...\n";
     $CCDS = ChannelConfigurationDataStore::getInstance();
     $FDS = FolderDataStore::getInstance();
     $WQDS = WQDDataDataStore::getInstance();
     $folders = $FDS->FindByLocationSeqs("11");
     echo "<br>--------TotalFolders:" . count($folders);
     foreach ($folders as $folder) {
         $folSeq = $folder->getSeq();
         //$latestDataRows = $WQDS->getChannelsLatestInfo($folSeq);
         echo "FolderSeq:" . $folSeq . " FolderName:" . $folder->getFolderName() . "<br>\n";
         echo "<br>\n ToDateFromLatestData " . $latestDataRows['dated'];
         $channelConfigs = $CCDS->FindByFolder($folSeq);
         $toDateStr = date('Y/m/d H:00:00');
         $fromDateStr = date('Y/m/d H:00:00', strtotime('-1 hour'));
         //$toDateStr = "2014/02/15 18:00:00";
         //            $fromDateStr = "2014/02/15 17:00:00";
         $toDate = new DateTime($toDateStr);
         $fromDate = new DateTime($fromDateStr);
         echo "<br>From:" . $fromDateStr . "<br>\n";
         echo "To:" . $toDateStr . "<br>\n";
         $dataArray = $WQDS->getAllDataByFol($fromDateStr, $toDateStr, $folSeq);
         $channelNoArr = self::getChannelNumberNameArray(self::$channelsList, $channelConfigs);
         $addDatesData = array();
         foreach ($dataArray as $data) {
             $channelData = array();
             $dated = $data['wqdfiledatadated'];
             $chValues = array();
             $chStatuses = array();
             foreach ($channelNoArr as $key => $value) {
                 $vl = (double) $data["ch" . $key . "value"];
                 if ($vl < 0) {
                     $vl = "n.o";
                 }
                 array_push($chValues, $vl);
                 array_push($chStatuses, (double) $data["ch" . $key . "status"]);
             }
             $allDatesData[strtotime($dated)]['channelValue'] = $chValues;
             $allDatesData[strtotime($dated)]['channelStatuses'] = $chStatuses;
         }
         $channelArr = array();
         foreach ($channelNoArr as $chName) {
             array_push($channelArr, $chName);
         }
         $dataSlices = DateUtils::getDateSlicesByInterval($fromDate, $toDate, "15min");
         $dataRows = $WQDS->getAverageDataByDataArrayDataSlices("15min", $allDatesData, $dataSlices, $channelArr, "normal", array());
         $repStr = "";
         if (count($dataRows) > 1) {
             $repStr = "";
             foreach ($dataRows as $dateStr => $row) {
                 $chNameValueArr = array();
                 foreach ($row as $rowId => $rowVal) {
                     $chNameValueArr[$channelArr[$rowId]] = $rowVal;
                 }
                 $dated = new DateTime($dateStr);
                 $repStr .= $dated->format("Y-m-d H:i:s");
                 $channelsList = self::$channelsList;
                 foreach ($channelsList as $chName) {
                     if ($chNameValueArr[$chName] != null) {
                         $repStr .= "," . $chNameValueArr[$chName];
                     } else {
                         $repStr .= ",NA";
                     }
                 }
                 $repStr .= "\r\n";
             }
             echo $repStr;
             $currDate = new DateTime();
             $fileName = "MHCHDMANIKGARHC011_" . $dated->format("YmdHis") . ".csv";
             $repFileName = "/home/envirote/public_html/Generated/Manikgarh/" . $folSeq . "/" . $fileName;
             //$repFileName = $fileName;
             if (!file_exists(dirname($repFileName))) {
                 mkdir(dirname($repFileName), 0777, true);
             }
             $fh = fopen($repFileName, 'w') or die("can't open file");
             fwrite($fh, $repStr);
             fclose($fh);
         }
         unset($channelArr);
         unset($latestDataRows);
         unset($channelConfigs);
         unset($channelNoArr);
         unset($dataSlices);
         unset($dataRows);
         unset($chNameValueArr);
         unset($allDatesData);
         unset($channelsList);
     }
     //for loop ends
 }
Beispiel #9
0
     } elseif (strtoupper($fileType) == "LSI") {
         //this case of AMBUJA lsi files for stack folders
         $WQDDataArray = ParserStackLsi::parse($value, $folder->getSeq());
     } elseif (strtoupper($fileType) == "TXT" && ($folder->getSeq() == 48 || $folder->getSeq() == 49)) {
         //this case of Bhoomi instruments first parser
         $WQDDataArray = ParserBhoomiFiles::parse($value, $folder->getSeq());
     } else {
         $WQDDataArray = ParserWQD::parseWQD($value, $folder->getSeq());
     }
     if ($WQDDataArray != null) {
         if ($folder->getStationType() == "stack" || $folder->getStationType() == "effluent") {
             $WDSD = WQDStackDataStore::getInstance();
             $WDSD->saveSyncedData($WQDDataArray);
             echo "\n" . date("Y-m-d  H:i:s") . " Stack File Saved Successfully";
         } else {
             $WDD = WQDDataDataStore::getInstance();
             $WDD->SaveList($WQDDataArray);
             echo "\n" . date("Y-m-d  H:i:s") . " AQMS File Saved Successfully";
             if ($status != null) {
                 echo "\n Status from save call" . $status;
             }
         }
         unlink($value);
         unset($WQDDataArray);
         unset($wqdFile);
     }
 } catch (Exception $e) {
     echo 'Exception caught while Parsing: ' . $e . "\n";
     $to = "*****@*****.**";
     $subject = "Exception in Elive Parsers";
     $txt = 'Exception caught while Parsing: ' . $e->getMessage() . "\n";
 public function getWindRoseReport($GET)
 {
     $infoType = $GET['infoTypeRadio'];
     $periodType = $GET['periodTypeRadio'];
     $fromDateStr = $GET['fromDate'];
     $toDateStr = $GET['toDate'];
     $timeBase = $GET['timeBase'];
     $timeBaseQuick = $GET['timeBaseQuick'];
     $quickReportType = $GET['quickReportType'];
     if ($quickReportType != "null") {
         $timeBase = $timeBaseQuick;
     }
     $timeBaseFromGet = $timeBase;
     $folSeqArray = array();
     //holds all folderseqs
     foreach ($GET as $key => $value) {
         if (strpos($key, "channelNos_") !== false) {
             $folSeq = (double) substr($key, 11);
             array_push($folSeqArray, $folSeq);
         }
     }
     if (count($folSeqArray) == 0) {
         return null;
     }
     $folSeq = $folSeqArray[0];
     //calculating from to dates from provided $_GET
     $fromToDates = DateUtils::getDatesArrayForStationReports($quickReportType, $fromDateStr, $toDateStr);
     // $dateSlices = DateUtils::getDateSlicesByInterval($fromDate,$toDate,$timeBase);
     $WSChannelNo = 0;
     $WDChannelNo = 0;
     $CCDS = ChannelConfigurationDataStore::getInstance();
     $ChannelsInfo = $CCDS->FindByFolder($folSeq);
     foreach ($ChannelsInfo as $channel) {
         if ($channel->getChannelName() == "Wind Speed") {
             $WSChannelNo = $channel->getChannelNumber();
         } else {
             if ($channel->getChannelName() == "Wind Direction") {
                 $WDChannelNo = $channel->getChannelNumber();
             }
         }
     }
     $fromDate = new DateTime($fromToDates['fromDate']);
     $toDate = new DateTime($fromToDates['toDate']);
     $toDate->setTime(23, 59, 59);
     $fromDate = $fromDate->format("Y/m/d  H:i:s");
     $toDate = $toDate->format("Y/m/d  H:i:s");
     $WQDS = WQDDataDataStore::getInstance();
     if (strpos($timeBase, 'hours') !== false) {
         $timeBase = "1hour";
     }
     $WSArrayDB = $WQDS->getChannel($fromDate, $toDate, $folSeq, $WSChannelNo, $timeBase);
     $WDArrayDB = $WQDS->getChannel($fromDate, $toDate, $folSeq, $WDChannelNo, $timeBase);
     if ($WSArrayDB == null || $WDArrayDB == null) {
         return null;
     }
     $WS = array();
     $WD = array();
     $i = 0;
     $WSDateInterval = $WSArrayDB[0][0];
     foreach ($WSArrayDB as $ws) {
         if (strtotime($ws[0]) == strtotime($WSDateInterval)) {
             $WS[$i++] = floatval($ws[1]);
             $WSDateInterval = DateUtils::getIncrementedDateStr($WSDateInterval, $timeBaseFromGet);
         }
     }
     $i = 0;
     $WDDateInterval = $WDArrayDB[0][0];
     foreach ($WDArrayDB as $wd) {
         if (strtotime($wd[0]) == strtotime($WDDateInterval)) {
             $WD[$i++] = floatval($wd[1]);
             $WDDateInterval = DateUtils::getIncrementedDateStr($WDDateInterval, $timeBaseFromGet);
         }
     }
     $direction_array["N"][] = null;
     $direction_array["NNE"][] = null;
     $direction_array["NE"][] = null;
     $direction_array["ENE"][] = null;
     $direction_array["E"][] = null;
     $direction_array["ESE"][] = null;
     $direction_array["SE"][] = null;
     $direction_array["SSE"][] = null;
     $direction_array["S"][] = null;
     $direction_array["SSW"][] = null;
     $direction_array["SW"][] = null;
     $direction_array["WSW"][] = null;
     $direction_array["W"][] = null;
     $direction_array["WNW"][] = null;
     $direction_array["NW"][] = null;
     $direction_array["NNW"][] = null;
     for ($ii = 0; $ii < count($WD); $ii++) {
         switch ($WD[$ii]) {
             case $WD[$ii] >= 348.75 or $WD[$ii] < 11.25:
                 $direction_array["N"][] = $WS[$ii];
                 break;
             case $WD[$ii] >= 11.25 and $WD[$ii] < 33.75:
                 $direction_array["NNE"][] = $WS[$ii];
                 break;
             case $WD[$ii] >= 33.75 and $WD[$ii] < 56.25:
                 $direction_array["NE"][] = $WS[$ii];
                 break;
             case $WD[$ii] >= 56.25 and $WD[$ii] < 78.75:
                 $direction_array["ENE"][] = $WS[$ii];
                 break;
             case $WD[$ii] >= 78.75 and $WD[$ii] < 101.25:
                 $direction_array["E"][] = $WS[$ii];
                 break;
             case $WD[$ii] >= 101.25 and $WD[$ii] < 123.75:
                 $direction_array["ESE"][] = $WS[$ii];
                 break;
             case $WD[$ii] >= 123.75 and $WD[$ii] < 146.25:
                 $direction_array["SE"][] = $WS[$ii];
                 break;
             case $WD[$ii] >= 146.25 and $WD[$ii] < 168.75:
                 $direction_array["SSE"][] = $WS[$ii];
                 break;
             case $WD[$ii] >= 168.75 and $WD[$ii] < 191.25:
                 $direction_array["S"][] = $WS[$ii];
                 break;
             case $WD[$ii] >= 191.25 and $WD[$ii] < 213.75:
                 $direction_array["SSW"][] = $WS[$ii];
                 break;
             case $WD[$ii] >= 213.75 and $WD[$ii] < 236.25:
                 $direction_array["SW"][] = $WS[$ii];
                 break;
             case $WD[$ii] >= 236.25 and $WD[$ii] < 258.75:
                 $direction_array["WSW"][] = $WS[$ii];
                 break;
             case $WD[$ii] >= 258.75 and $WD[$ii] < 281.25:
                 $direction_array["W"][] = $WS[$ii];
                 break;
             case $WD[$ii] >= 281.25 and $WD[$ii] < 303.75:
                 $direction_array["WNW"][] = $WS[$ii];
                 break;
             case $WD[$ii] >= 303.75 and $WD[$ii] < 326.25:
                 $direction_array["NW"][] = $WS[$ii];
                 break;
             case $WD[$ii] >= 326.25 and $WD[$ii] < 348.75:
                 $direction_array["NNW"][] = $WS[$ii];
                 break;
         }
     }
     $direction_keys = array_keys($direction_array);
     $max_wind = round(max($WS), 0);
     $num_data = count($WS);
     $wind_range_max = $max_wind < 20 ? 25 : $max_wind;
     $data_range_array = array(1, 5, 10, 15, 20, $wind_range_max);
     foreach ($direction_keys as $direction) {
         for ($ii = 0; $ii <= 5; $ii++) {
             $count_data[$ii] = 0;
         }
         $raw_data = $direction_array[$direction];
         foreach ($raw_data as $temp_speed) {
             if ($temp_speed >= 0 and $temp_speed < $data_range_array[0]) {
                 $count_data[0]++;
             } elseif ($temp_speed >= $data_range_array[0] and $temp_speed < $data_range_array[1]) {
                 $count_data[1]++;
             } elseif ($temp_speed >= $data_range_array[1] and $temp_speed < $data_range_array[2]) {
                 $count_data[2]++;
             } elseif ($temp_speed >= $data_range_array[2] and $temp_speed < $data_range_array[3]) {
                 $count_data[3]++;
             } elseif ($temp_speed >= $data_range_array[3] and $temp_speed < $data_range_array[4]) {
                 $count_data[4]++;
             } elseif ($temp_speed >= $data_range_array[4]) {
                 $count_data[5]++;
             }
         }
         for ($ii = 0; $ii <= 5; $ii++) {
             $plot_data[$direction][$ii] = 0;
         }
         for ($ii = 0; $ii <= 5; $ii++) {
             $plot_data[$direction][$ii] = round($count_data[$ii] / $num_data * 100, 2);
         }
     }
     return $plot_data;
 }
 public function generateFile()
 {
     echo "APPCB Generator starts...\n";
     $CCDS = ChannelConfigurationDataStore::getInstance();
     $FDS = FolderDataStore::getInstance();
     $WQDS = WQDDataDataStore::getInstance();
     $folders = $FDS->FindByLocationSeqs("7,10");
     echo "<br>--------TotalFolders:" . count($folders);
     foreach ($folders as $folder) {
         $stationName = $folder->getFolderName();
         $stationNumber = substr($stationName, 7);
         $districtCode = "kham";
         $industryCode = "ITCPBCM";
         //if($folder->getSeq() == 20){
         if ($folder->getLocationSeq() == 10) {
             $stationNumber = 1;
             if ($folder->getSeq() == 26) {
                 $stationNumber = 2;
             } else {
                 if ($folder->getSeq() == 27) {
                     $stationNumber = 3;
                 } else {
                     if ($folder->getSeq() == 28) {
                         $stationNumber = 4;
                     } else {
                         if ($folder->getSeq() == 29) {
                             $stationNumber = 5;
                         }
                     }
                 }
             }
             $districtCode = "hyde";
             $industryCode = "APPCB";
         }
         $folSeq = $folder->getSeq();
         $latestDataRows = $WQDS->getChannelsLatestInfo($folSeq);
         echo "FolderSeq:" . $folSeq . " FolderName:" . $folder->getFolderName() . "<br>\n";
         //echo ("<br>\nTotal Rows found:". count($latestDataRows));
         echo "<br>\n ToDateFromLatestData " . $latestDataRows['dated'];
         if (count($latestDataRows) > 0) {
             $channelConfigs = $CCDS->FindByFolder($folSeq);
             $toDateStr = $latestDataRows['dated'];
             $toDate = new DateTime($toDateStr);
             $fromDate = new DateTime($toDateStr);
             $fromDate->setTime(0, 0, 0);
             $fromDateStr = DateUtils::getSQLDateFromDateObj($fromDate);
             echo "<br>From:" . $fromDateStr . "<br>\n";
             echo "To:" . $toDateStr . "<br>\n";
             $dataArray = $WQDS->getAllDataByFol($fromDateStr, $toDateStr, $folSeq);
             $channelNoArr = self::getChannelNumberNameArray(self::$channelsList, $channelConfigs);
             $addDatesData = array();
             foreach ($dataArray as $data) {
                 $channelData = array();
                 $dated = $data['wqdfiledatadated'];
                 $chValues = array();
                 $chStatuses = array();
                 foreach ($channelNoArr as $key => $value) {
                     $vl = (double) $data["ch" . $key . "value"];
                     if ($vl < 0) {
                         $vl = "n.o";
                     }
                     array_push($chValues, $vl);
                     array_push($chStatuses, (double) $data["ch" . $key . "status"]);
                 }
                 $allDatesData[strtotime($dated)]['channelValue'] = $chValues;
                 $allDatesData[strtotime($dated)]['channelStatuses'] = $chStatuses;
             }
             $channelArr = array();
             foreach ($channelNoArr as $chName) {
                 array_push($channelArr, $chName);
             }
             $dataSlices = DateUtils::getDateSlicesByInterval($fromDate, $toDate, "1hour");
             $dataRows = $WQDS->getAverageDataByDataArrayDataSlices("1hour", $allDatesData, $dataSlices, $channelArr, "normal", array());
         } else {
             echo " \n<br>Null FromDate";
         }
         if (count($dataRows) > 1) {
             $repStr = "";
             foreach ($dataRows as $dateStr => $row) {
                 $chNameValueArr = array();
                 foreach ($row as $rowId => $rowVal) {
                     $chNameValueArr[$channelArr[$rowId]] = $rowVal;
                 }
                 $repStr .= $districtCode;
                 $repStr .= "," . $industryCode;
                 $repStr .= "," . $stationNumber . ",";
                 $dated = new DateTime($dateStr);
                 $repStr .= $dated->format("m/d/Y h:i:s A");
                 $channelsList = self::$channelsList;
                 foreach ($channelsList as $chName) {
                     if ($chNameValueArr[$chName] != null) {
                         $repStr .= "," . $chNameValueArr[$chName];
                     } else {
                         $repStr .= ",NA";
                     }
                 }
                 $repStr .= "\r\n";
             }
             echo $repStr;
             //$fileName = "khmmitcl".$folder->getFolderName(). date("Ymd") .".txt";
             //$fileName = "air". date("Ymd") .".txt";
             $fileName = "air" . $fromDate->format("Ymd") . ".txt";
             $repFileName = "/home/envirote/public_html/Generated/APPCB/" . $folSeq . "/" . $fileName;
             //$repFileName ="d:". $folSeq ."/" . $fileName;
             if (!file_exists(dirname($repFileName))) {
                 mkdir(dirname($repFileName), 0777, true);
             }
             $fh = fopen($repFileName, 'w') or die("can't open file");
             fwrite($fh, $repStr);
             fclose($fh);
         }
         unset($channelArr);
         unset($latestDataRows);
         unset($channelConfigs);
         unset($channelNoArr);
         unset($dataSlices);
         unset($dataRows);
         unset($chNameValueArr);
         unset($allDatesData);
         unset($channelsList);
     }
     //for loop ends
 }