public function actionIndex() { $t = ПроектыQuery::create()->orderById()->find()->toArray(); $w = $this->getWidget('widget_portfolio'); $w->setData($t); foreach ($t as $key => $project) { $widget = $this->getWidget('widget_portfolio_' . $key); $w_data = array(rand(10, 100), rand(10, 100), rand(10, 100), rand(10, 100)); $widget->setSeries($w_data); $widget->setCategories(array("1", "2", "3", "4")); } return $this->render('index.tpl', ['projects' => $t]); }
public function actionIndex() { $allProjects = ПроектыQuery::create()->select('Проект')->find(); $projectFilter = $this->getFilter('filter_project'); $projectFilter->setPossibleValues($allProjects); if (!$projectFilter->isSelected() && count($projectFilter->possibleValues)) { $projectFilter->setSelectedValues($allProjects[0]); } $allClassifications = ПредписанияQuery::create()->select('ТипыЗамечаний.Тип_замечания')->useПроектыQuery()->filterByпроект($projectFilter->selectedValue)->endUse()->useТипыЗамечанийQuery()->endUse()->distinct(); $classificationFilter = $this->getFilter('filter_classification'); $classificationFilter->setPossibleValues($allClassifications->find()); if (!$classificationFilter->isSelected()) { $classificationFilter->setSelectedValues($classificationFilter->possibleValues); } $allPodryadchiks = ПредписанияQuery::create()->select('ПодрядчикиПредписания.Подрядчик')->useПроектыQuery()->filterByпроект($projectFilter->selectedValue)->endUse()->useПодрядчикиПредписанияQuery()->endUse()->useТипыЗамечанийQuery()->filterByтипзамечания($classificationFilter->selectedValues)->endUse()->distinct(); $podryadchikFilter = $this->getFilter('filter_podryadchik'); $podryadchikFilter->setPossibleValues($allPodryadchiks->find()); if (!$podryadchikFilter->isSelected()) { $podryadchikFilter->setSelectedValues($podryadchikFilter->possibleValues); } $zamechaniyaFilter = $this->getFilter('filter_zamechaniya'); $zamechaniyaFilter->setPossibleValues(СтатусыЗаявкиЗавершениеQuery::create()->select('Статус_завершения')->find()); if (!$zamechaniyaFilter->isSelected() && count($zamechaniyaFilter->possibleValues)) { $zamechaniyaFilter->setSelectedValues($zamechaniyaFilter->possibleValues[0]); } $dates = ПредписанияQuery::create()->select('Дата_выдачи')->distinct()->orderByдатавыдачи('DESC')->find()->toArray(); $lastDate = $dates[0]; $firstDate = end($dates); // Делаем $dates - массив дат с начальной даты выдачи, до конечной $lastDateInt = strtotime($lastDate); $firstDateInt = strtotime($firstDate); $date = $lastDateInt; $dates = []; while ($date >= $firstDateInt) { $dates[] = date("Y-m-d", $date); $date -= 86400; } $datefromFilter = $this->getFilter('filter_datefrom'); $datefromFilter->setPossibleValues($dates); if (!$datefromFilter->isSelected() && count($datefromFilter->possibleValues)) { $datefromFilter->setSelectedValues($firstDate); } $datetoFilter = $this->getFilter('filter_dateto'); $datetoFilter->setPossibleValues($dates); if (!$datetoFilter->isSelected() && count($datetoFilter->possibleValues)) { $datetoFilter->setSelectedValues($lastDate); } // Получаем запрос с выбранным проектом $query = ПредписанияQuery::create()->useПроектыQuery()->filterByпроект($projectFilter->selectedValue)->endUse(); // Получаем запрос с выбранным проектом и классификацией if ($classificationFilter->selectedValues) { $query = $query->useТипыЗамечанийQuery()->filterByтипзамечания($classificationFilter->selectedValues)->endUse(); } ///////////////////////// // Получаем запрос с выбранным проектом, классификацией и состоянием замечаний $histogrmQuery = clone $query; if ($zamechaniyaFilter->selectedValues) { $histogrmQuery = $histogrmQuery->useСтатусыЗаявкиЗавершениеQuery()->filterByстатусзавершения($zamechaniyaFilter->selectedValues)->endUse(); } // Получаем запрос с выбранным проектом, классификацией и состоянием замечаний $histogrmCategories = clone $histogrmQuery; $histogrmCategories = $histogrmCategories->withColumn('COUNT(*)', 'Count')->select(['Count', 'Контролирующие_органы.Контролирующий_орган'])->useКонтролирующиеОрганыQuery()->groupByконтролирующийорган()->endUse()->find()->toArray(); $histogrmSeries = clone $histogrmQuery; $histogrmSeries = $histogrmSeries->withColumn('COUNT(*)', 'Count')->select(['Count', 'Подрядчики_предписания.Подрядчик', 'Контролирующие_органы.Контролирующий_орган'])->useПодрядчикиПредписанияQuery()->groupByподрядчик()->endUse()->useКонтролирующиеОрганыQuery()->groupByконтролирующийорган()->endUse()->find()->toArray(); $r = []; foreach ($histogrmSeries as $el) { $r[$el["Подрядчики_предписания.Подрядчик"]][] = $el["Count"]; } $widgetHistogram = $this->getWidget('widget_histogram'); $widgetHistogram->setCategories(ArrayHelper::getColumn($histogrmCategories, "Контролирующие_органы.Контролирующий_орган")); $widgetHistogram->setSeries($r); /////////////////////////////////////// // Получаем общий запрос с выбранным проектом, классификацией и подрядчиками $pieQuery = clone $query; if ($podryadchikFilter->selectedValues) { $pieQuery = $pieQuery->useПодрядчикиПредписанияQuery()->filterByподрядчик($podryadchikFilter->selectedValues)->endUse(); } // Получаем запрос с выбранным проектом, классификацией, подрядчиками и промежутком дат для открытых замечаний $otkritiePieQuery = clone $pieQuery; if ($datefromFilter->selectedValue && $datetoFilter->selectedValue) { $otkritiePieQuery = $otkritiePieQuery->filterByдатавыдачи($datefromFilter->selectedValue, '>=')->filterByдатавыдачи($datetoFilter->selectedValue, '<='); } // Выбираем количество открытых/закрытых замечаний $widgetPieOtkritieSeries = $otkritiePieQuery->withColumn('COUNT(*)', 'Count')->select(['СтатусыЗаявкиПросрочка.Статус_просрочки', 'Count'])->useСтатусыЗаявкиПросрочкаQuery()->endUse()->groupByстатусзаявкипросрочка()->find()->toArray(); // Приводим к нужному формату $p = []; foreach ($widgetPieOtkritieSeries as $el) { $p[$el["СтатусыЗаявкиПросрочка.Статус_просрочки"]] = $el["Count"]; } $widgetPieOtkritieSeries = $p; // Устанавливаем данные виджету $widgetPieOtkritie = $this->getWidget('widget_pie_otkritie'); $widgetPieOtkritie->setSeries($widgetPieOtkritieSeries); //////////////////////////////////////// // Получаем количество просроченных замечаний на начало с выбранным проектом, классификацией, подрядчиками $prosrochenoNaNachalo = clone $pieQuery; $prosrochenoNaNachalo = $prosrochenoNaNachalo->where('Плановая_дата_устранения < \'' . $datefromFilter->selectedValue . '\'')->where('(Фактическая_дата_устранения > Плановая_дата_устранения AND Фактическая_дата_устранения > \'' . $datefromFilter->selectedValue . '\' OR Фактическая_дата_устранения is NULL)')->count(); // Получаем количество устранённых просроченных замечаний за период с выбранным проектом, классификацией, подрядчиками $propsrochenoZaPeriodUstraneno = clone $pieQuery; $propsrochenoZaPeriodUstraneno = $propsrochenoZaPeriodUstraneno->where('Плановая_дата_устранения > \'' . $datefromFilter->selectedValue . '\'')->where('Плановая_дата_устранения < \'' . $datetoFilter->selectedValue . '\'')->where('Фактическая_дата_устранения > Плановая_дата_устранения')->where('Фактическая_дата_устранения < \'' . $datetoFilter->selectedValue . '\'')->count(); // Получаем количество неустранённых просроченных замечаний за период с выбранным проектом, классификацией, подрядчиками $propsrochenoZaPeriodNeUstraneno = clone $pieQuery; $propsrochenoZaPeriodNeUstraneno = $propsrochenoZaPeriodNeUstraneno->where('Плановая_дата_устранения > \'' . $datefromFilter->selectedValue . '\'')->where('Плановая_дата_устранения < \'' . $datetoFilter->selectedValue . '\'')->where('Фактическая_дата_устранения > Плановая_дата_устранения')->where('(Фактическая_дата_устранения > \'' . $datetoFilter->selectedValue . '\' OR Фактическая_дата_устранения is NULL)')->count(); // Получаем количество устранённых просроченных замечаний на начало с выбранным проектом, классификацией, подрядчиками $prosrochenoNaNachaloUstraneno = clone $pieQuery; $prosrochenoNaNachaloUstraneno = $prosrochenoNaNachaloUstraneno->where('Плановая_дата_устранения < \'' . $datefromFilter->selectedValue . '\'')->where('Фактическая_дата_устранения > \'' . $datefromFilter->selectedValue . '\'')->where('Фактическая_дата_устранения < \'' . $datetoFilter->selectedValue . '\'')->count(); // Устанавливаем данные виджету $widgetPieProsrochennie = $this->getWidget('widget_pie_prosrochennie'); $widgetPieProsrochennieSeries = ['Просрочено на начало' => $prosrochenoNaNachalo, 'Просрочено за период' => $propsrochenoZaPeriodNeUstraneno + $propsrochenoZaPeriodUstraneno, 'Устранено просроченных за период' => $propsrochenoZaPeriodUstraneno, 'Устранено просроченных на начало' => $prosrochenoNaNachaloUstraneno]; $widgetPieProsrochennie->setSeries($widgetPieProsrochennieSeries); ///////////////////////////////////////////////// $updateDate = ДатыОбновленийДашбордовQuery::create()->useПроектыQuery()->filterByпроект($projectFilter->selectedValue)->endUse()->filterByдашборд('Предписания')->select('дата')->find()->toArray(); if (count($updateDate)) { $updateDate = $updateDate[0]; } return $this->render('index.tpl', ['updateDate' => $updateDate]); }
/** * Performs an INSERT on the database, given a Проекты or Criteria object. * * @param mixed $criteria Criteria or Проекты object containing data that is used to create the INSERT statement. * @param ConnectionInterface $con the ConnectionInterface connection to use * @return mixed The new primary key. * @throws PropelException Any exceptions caught during processing will be * rethrown wrapped into a PropelException. */ public static function doInsert($criteria, ConnectionInterface $con = null) { if (null === $con) { $con = Propel::getServiceContainer()->getWriteConnection(ПроектыTableMap::DATABASE_NAME); } if ($criteria instanceof Criteria) { $criteria = clone $criteria; // rename for clarity } else { $criteria = $criteria->buildCriteria(); // build Criteria from Проекты object } if ($criteria->containsKey(ПроектыTableMap::COL_ID) && $criteria->keyContainsValue(ПроектыTableMap::COL_ID)) { throw new PropelException('Cannot insert a value for auto-increment primary key (' . ПроектыTableMap::COL_ID . ')'); } // Set the correct dbName $query = ПроектыQuery::create()->mergeWith($criteria); // use transaction because $criteria could contain info // for more than one table (I guess, conceivably) return $con->transaction(function () use($con, $query) { return $query->doInsert($con); }); }