public function findByUIDsWithDestinations($uids) { $criteria = new CDbCriteria(); $criteria->alias = "t1"; $criteria->join = 'LEFT JOIN `' . ScheduleTypeReport::model()->tableName() . '` `t2` on `t1`.`ex_schedule_id`=`t2`.`ex_schedule_id`'; $criteria->with = array('ex_schedule_report', 'send_log.destination'); foreach ($uids as $uid) { $res = self::parseUID($uid); $criteria->addCondition('(`t1`.`check_period_start`="' . $res['check_period_start'] . '" AND `t2`.`ex_schedule_ident`="' . $res['ex_schedule_ident'] . '")', 'OR'); } $result = $this->findAll($criteria); if (!is_null($result)) { foreach ($result as &$item) { if (is_object($item->ex_schedule_report)) { $item->setUniqueID($item->ex_schedule_report->ex_schedule_ident); } } $UIDsArray = $this->getUIDsArray($result); return array('result' => $result, 'uids' => $UIDsArray); } return array('result' => array(), 'uids' => array()); }
/** * @param $uids array * @param bool $sent true| false * @return array */ public function findByUIDsWithDestinations($uids, $sent = false) { $criteria = new CDbCriteria(); $criteria->alias = "t1"; $criteria->join = ' LEFT JOIN `' . ScheduleTypeReportProcessed::model()->tableName() . '` `t2` on `t1`.`ex_schedule_processed_id`=`t2`.`ex_schedule_processed_id` LEFT JOIN `' . ScheduleTypeReport::model()->tableName() . '` `t3` on `t2`.`ex_schedule_id`=`t3`.`ex_schedule_id` '; $criteria->with = array('report_processed.ex_schedule_report', 'destination'); if ($sent == false) { $sent_condition = ' AND `t1`.`sent`="0"'; } if ($sent == true) { $sent_condition = ' AND `t1`.`sent`="1"'; } if (count($uids)) { foreach ($uids as $uid) { $res = ScheduleTypeReportProcessed::parseUID($uid['report_uid']); $criteria->addCondition('(`t2`.`check_period_start`="' . $res['check_period_start'] . '" AND `t3`.`ex_schedule_ident`="' . $res['ex_schedule_ident'] . '" ' . $sent_condition . ')', 'OR'); } $result = $this->findAll($criteria); if (!is_null($result)) { foreach ($result as &$item) { if (is_object($item->report_processed->ex_schedule_report) && is_object($item->report_processed)) { $item->report_processed->setUniqueID($item->report_processed->ex_schedule_report->ex_schedule_ident); } } $UIDsArray = $this->getUIDsArray($result); return array('result' => $result, 'uids' => $UIDsArray); } } return array('result' => array(), 'uids' => array()); }
public function run($args) { // if (!Yii::app()->mutex->lock('ScheduleTypeReports',3600)) { // Yii::app()->end(); // } // $synchronization = new Synchronization(); // if (!$synchronization->isMaster() and $synchronization->isProcessed()) // return; $generationTime = time(); $proper_periods = $this->getProperPeriods($generationTime); $this->_logger->log(__METHOD__ . ' proper periods: ' . print_r($proper_periods, 1)); // if (count($proper_periods) === 0) { // $this->_logger->log(__METHOD__ . ' Exiting. No proper periods found.' . "\n\n"); // Yii::app()->mutex->unlock(); // Yii::app()->end(); // } $criteria = new CDbCriteria(); $criteria->select = array('ex_schedule_id', 'report_type', 'station_type', 'report_format', 'period', 'aging_time_delay', 'start_datetime', 'next_run_planned'); $criteria->compare('period', '>0'); $criteria->addCondition('active=1'); /** @var array|ScheduleTypeReport[] $scheduledReports */ $scheduledTypeReports = ScheduleTypeReport::model()->findAll($criteria); $this->_logger->log(__METHOD__ . ' $scheduledReports: ' . print_r($scheduledTypeReports, 1)); if (count($scheduledTypeReports) === 0) { // $this->_logger->log(__METHOD__ . ' Exiting. No proper reports found.' . "\n\n"); // Yii::app()->mutex->unlock(); // Yii::app()->end(); } /** * @var $typeReportItem ScheduleTypeReport */ foreach ($scheduledTypeReports as $typeReportItem) { if (strtotime($typeReportItem->next_run_planned_delayed) != mktime(date('H'), date('i'), 0, date('m'), date('d'), date('Y')) && strtotime($typeReportItem->next_run_planned_delayed) > mktime(date('H'), date('i'), 0, date('m'), date('d'), date('Y'))) { continue; } $weatherTypeReport = null; switch (strtolower($typeReportItem->report_type)) { // case 'synop' : // $weatherTypeReport = WeatherTypeReport::create('Synop', $this->_logger); // break; // // case 'bufr' : // $weatherTypeReport = WeatherTypeReport::create('Bufr', $this->_logger); // break; // // case 'metar' : // $weatherTypeReport = WeatherTypeReport::create('Metar', $this->_logger); // break; case 'odss': $weatherTypeReport = WeatherTypeReport::create('ODSS', $this->_logger); break; // default : // $weatherTypeReport = WeatherTypeReport::create('Export', $this->_logger); // break; } try { $weatherTypeReport->load($typeReportItem); $typeReportItem->setTimeStep(); // $synchronization = new Synchronization(); // if(!$synchronization->isMaster() and $synchronization->isProcessed()) // return; // $weatherTypeReport->deliverReport(); $weatherTypeReport->newReportAdd(); } catch (Exteption $e) { $this->_logger->log(__METHOD__ . ' Error ', array('err' => $e->getMessage())); } } }
public function actionStationTypeDataExport() { /** @var ScheduleReport $form */ /** @var ScheduleReportDestination[] $forms_d] */ if (Yii::app()->request->isPostRequest) { } TimezoneWork::set('UTC'); if (isset($_REQUEST['ex_schedule_id']) and (int) $_REQUEST['ex_schedule_id'] and isset($_REQUEST['active'])) { $scheduleTypeReportForm = ScheduleTypeReport::model()->findByPk(intval($_REQUEST['ex_schedule_id'])); $scheduleTypeReportForm->setAttribute('active', $_REQUEST['active']); $scheduleTypeReportForm->save(); } $scheduleTypeReportForm = new ScheduleTypeReport(); if (isset($_REQUEST['ex_delete_id'])) { $scheduleTypeReportForm = ScheduleTypeReport::model()->findByPk(intval($_REQUEST['ex_delete_id'])); if ($scheduleTypeReportForm && $scheduleTypeReportForm->delete()) { It::memStatus('schedule_deleted'); $this->redirect($this->createUrl('site/StationTypeDataExport')); } } // if (isset($_REQUEST['resend_schedule_id'])) { // $form = ScheduleTypeReport::model()->findByPk(intval($_REQUEST['resend_schedule_id'])); // } if (isset($_REQUEST['ex_schedule_id']) and (int) $_REQUEST['ex_schedule_id'] and !isset($_REQUEST['active'])) { $scheduleTypeReportForm = ScheduleTypeReport::model()->findByPk(intval($_REQUEST['ex_schedule_id'])); } if (isset($scheduleTypeReportForm)) { $scheduleTypeReportDestination = ScheduleTypeReportDestination::model()->findAllByAttributes(array('ex_schedule_id' => $scheduleTypeReportForm->ex_schedule_id)); } else { $scheduleTypeReportDestination = array(); } $valid = true; if (Yii::app()->request->isPostRequest && isset($_POST['ScheduleTypeReport'])) { $scheduleTypeReportForm->attributes = $_POST['ScheduleTypeReport']; $valid = $valid & $scheduleTypeReportForm->validate(); if (isset($_POST['ScheduleTypeReportDestination'])) { foreach ($_POST['ScheduleTypeReportDestination'] as $key => $value) { if ($value['ex_schedule_destination_id']) { $scheduleTypeReportDestination[$key] = ScheduleTypeReportDestination::model()->findByPk($value['ex_schedule_destination_id']); } else { $scheduleTypeReportDestination[$key] = new ScheduleTypeReportDestination(); } $scheduleTypeReportDestination[$key]->attributes = $value; $valid = $valid & $scheduleTypeReportDestination[$key]->validate(); } } if ($valid) { // $scheduleTypeReportForm->scenario='admin'; $scheduleTypeReportForm->save(false); foreach ($scheduleTypeReportDestination as $key => $value) { $scheduleTypeReportDestination[$key]->ex_schedule_id = $scheduleTypeReportForm->ex_schedule_id; $scheduleTypeReportDestination[$key]->save(); } // foreach ($forms_s as $key => $value) { // $forms_s[$key]->schedule_id = $form->schedule_id; // $forms_s[$key]->save(); // } It::memStatus($scheduleTypeReportForm->isNewRecord ? 'schedule_added' : 'schedule_updated'); $this->redirect($this->createUrl('site/StationTypeDataExport')); } } $str = new ScheduleTypeReport(); $scheduleTypeReportProcessed = new ScheduleTypeReportProcessed(); $scheduleTypesReports = $str->getList(10); $this->render('schedule_type_report', array('forms_d' => $scheduleTypeReportDestination, 'scheduleTypeReportForm' => $scheduleTypeReportForm, 'scheduleTypesReports' => $scheduleTypesReports, 'scheduleTypeReportProcessed' => $scheduleTypeReportProcessed)); }