<?php
use yii\queue\amqp_interop\Queue;
-use yii_app\services\StoreService;
$params = require __DIR__ . '/params.php';
$db = require __DIR__ . '/db.php';
return Yii::$app->response->redirect(['site/login']);
},
],
- 'container' => [
- 'singletons' => [
- StoreService::class => StoreService::class,
- ],
- ],
'params' => $params,
'timeZone' => 'Europe/Moscow',
];
use yii_app\records\BouquetForecast;
use yii_app\records\CityStore;
use yii_app\records\CityStoreParams;
+use yii_app\services\StoreService;
use yii_app\records\MatrixBouquetForecast;
use yii_app\records\Motivation;
use yii_app\records\PricesDynamic;
use yii_app\records\StoreType;
use yii_app\records\WriteOffsErp;
+
+
class StorePlanService
{
const PERIOD_COUNT = 3;
}
+ /**
+ * Service Locator используется намеренно: метод статический, constructor injection невозможен.
+ * TODO: рефакторить в instance-метод при следующем касании класса.
+ */
public static function getBouquetSpiecesMonthGoal($month, $year)
{
- $stores = ArrayHelper::map(
- CityStore::find()
- ->select(['id'])
- ->where(['visible' => CityStore::IS_VISIBLE])
- ->asArray()
- ->all(),
- 'id',
- 'id'
- );
+ $storeService = new StoreService();
+ $activeIds = $storeService->getActiveStoreIds();
+ $stores = $activeIds ? array_combine($activeIds, $activeIds) : [];
$storesParams = ArrayHelper::map(
CityStoreParams::find()
->select(['store_id', 'address_region'])
}
+ /**
+ * Service Locator используется намеренно: метод статический, constructor injection невозможен.
+ * TODO: рефакторить в instance-метод при следующем касании класса.
+ */
public static function getBouquetSpiecesMonthGoalFromForecast($month, $year, $storeId = null, $matrixGroups = [])
{
- $stores = $storeId ? [$storeId] : ArrayHelper::getColumn(
- CityStore::find()->select(['id'])->where(['visible' => CityStore::IS_VISIBLE])->asArray()->all(),
- 'id'
- );
+ $storeService = new StoreService();
+ $stores = $storeId ? [$storeId] : $storeService->getActiveStoreIds();
if (empty($matrixGroups)) {
return ['detail' => [], 'final' => [], 'debug' => []];