/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Parcels::find(); $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => ['defaultOrder' => ['order_id' => SORT_DESC]]]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'order_id' => $this->order_id, 'statusID' => $this->statusID, 'delivery_period' => $this->delivery_period, 'delivery_lateness' => $this->delivery_lateness]); if ($this->status != null && $this->status != '') { if ($this->status == 1) { $status = 'enabled'; } else { $status = 'disabled'; } } else { $status = null; } if ($this->mailed != null && $this->mailed != '') { if ($this->mailed == 1) { $mailed = 'yes'; } else { $mailed = 'no'; } } else { $mailed = null; } $query->andFilterWhere(['like', 'spi', $this->spi])->andFilterWhere(['like', 'shipping_type', $this->shipping_type])->andFilterWhere(['like', 'order_time', $this->order_time])->andFilterWhere(['like', 'shop_status', $this->shop_status])->andFilterWhere(['like', 'order_amount', $this->order_amount])->andFilterWhere(['like', 'status_time', $this->status_time])->andFilterWhere(['like', 'mailed', $mailed])->andFilterWhere(['like', 'delivery_status', $this->delivery_status])->andFilterWhere(['like', 'status', $status]); return $dataProvider; }
public function actionIndex() { $searchModel = new ParcelsSearch(); $dataProvider = $searchModel->search(Yii::$app->request->queryParams); if (isset($_POST['new-orders'])) { $count = Parcels::getNewShopOrders(); Yii::$app->session->setFlash('success', 'Добавлено ' . $count . ' заказов.'); } if (isset($_POST['update-orders'])) { $count = Parcels::getUpdateShopOrders(); Yii::$app->session->setFlash('success', 'Обновлено ' . $count . ' заказов.'); } if (isset($_POST['update-status'])) { $count = Parcels::getDeliveryStatus(); Yii::$app->session->setFlash('success', 'Обновлено ' . $count . ' заказов.'); } if (isset($_POST['send-mails'])) { $closed = Parcels::find()->where(['status' => 'enabled'])->andWhere(['IN', 'delivery_status', ["Возврат. Вовремя.", "Вовремя. Доставлено"]])->orderBy('id')->all(); $count_closed = 0; foreach ($closed as $model) { $model->status = 'disabled'; if ($model->save()) { $count_closed++; } } $query = Parcels::find()->where(['status' => 'enabled'])->andWhere(['IN', 'delivery_status', ["Опоздание. Доставлено", "Опоздание. Не доставлено", "Возврат. Опоздание."]])->orderBy('id')->all(); $count_mailed = 0; foreach ($query as $model) { $result = Parcels::SendMail($model); if ($result) { $model->mailed = 'yes'; $model->status = 'disabled'; if ($model->save()) { $count_mailed++; } } } Yii::$app->session->setFlash('success', 'Отправлено ' . $count_mailed . ' писем. Закрыто ' . $count_closed . ' заказов.'); } if (Yii::$app->request->post('hasEditable')) { $model = Parcels::findOne(Yii::$app->request->post('editableKey')); $out = Json::encode(['output' => '', 'message' => '']); $model->delivery_status = current($_POST['Parcels'])['delivery_status']; $model->save(); $output = $_POST['Parcels']['delivery_status']; $out = Json::encode(['output' => $output, 'message' => '']); echo $out; return; } return $this->render('index', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider]); }