public function getProducts($id) { $stock = Stock::find($id); $stockProducts = $stock->stockProducts; $products = []; foreach ($stockProducts as $sp) { $products[] = $sp->product; } return $products; }
public function add($stock_id) { if ($this->validate()) { $stock = Stock::find($stock_id); $request = Request::insert(['stock_id' => $stock_id, 'month' => $this->monthCounter]); Application::mail(User::find(Yii::$app->params['chat']['consultant_id'])->getEmail(), 'Запрос на добавление услуги', 'request', ['stock' => $stock, 'user' => \Yii::$app->user->identity, 'request' => $request]); return true; } else { return false; } }
/** * Актвирует услугу * * @return array * [ * 'stock' => \app\models\Stock * 'dateFinish' => string - дата до которого оплачена услуга в формате 'yyyy-mm-dd' * ] */ public function activate() { $stock_id = $this->getField('stock_id'); $stock = Stock::find($stock_id); $monthCounter = $this->getField('month'); $dateFinish = \app\models\UserStock::add(\Yii::$app->user->getId(), $stock_id, $monthCounter, $this->getField('datetime')); $dateFinishStr = Yii::$app->formatter->asDate($dateFinish); WalletHistory::insert("Услуга включена, акция: {$stock->getName()}, месяцев: {$monthCounter}, до: {$dateFinishStr}"); self::delete(); return ['stock' => $stock, 'dateFinish' => $dateFinish]; }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Stock::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); $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(['idproducto' => $this->idproducto, 'stock' => $this->stock]); return $dataProvider; }
/** * Рисует графики с прошлым и будущим * * @param int $id идентификатор курса * * @return string */ public function actionStock_item3($id) { $item = \app\models\Stock::find($id); $start = (new \DateTime())->sub(new \DateInterval('P31D')); $end = (new \DateTime())->sub(new \DateInterval('P1D')); $isPaid = Yii::$app->user->identity->isPaid($id); $defaultParams = ['start' => $start, 'end' => $end, 'formatX' => 'd.m']; $params = ArrayHelper::merge($defaultParams, ['rows' => [\app\models\StockKurs::query(['stock_id' => $id])->andWhere(['between', 'date', $start->format('Y-m-d'), $end->format('Y-m-d')])->all()]]); $lineArrayKurs = \app\service\GraphExporter::convert($params); $params = ArrayHelper::merge($defaultParams, ['rows' => [\app\models\StockPrognosisRed::query(['stock_id' => $id])->andWhere(['between', 'date', $start->format('Y-m-d'), $end->format('Y-m-d')])->select(['date', 'delta as kurs'])->all()]]); $lineArrayRed = \app\service\GraphExporter::convert($params); $params = ArrayHelper::merge($defaultParams, ['rows' => [\app\models\StockPrognosisBlue::query(['stock_id' => $id])->andWhere(['between', 'date', $start->format('Y-m-d'), $end->format('Y-m-d')])->select(['date', 'delta as kurs'])->all()]]); $lineArrayBlue = \app\service\GraphExporter::convert($params); $lineArrayPast = \app\service\GraphUnion::convert(['x' => $lineArrayRed['x'], 'y' => [$lineArrayKurs['y'][0], $lineArrayRed['y'][0], $lineArrayBlue['y'][0]]]); if ($isPaid) { $start = new \DateTime(); $end = (new \DateTime())->add(new \DateInterval('P30D')); $defaultParams = ['start' => $start, 'end' => $end]; $params = ArrayHelper::merge($defaultParams, ['rows' => [\app\models\StockPrognosisRed::query(['stock_id' => $id])->andWhere(['between', 'date', $start->format('Y-m-d'), $end->format('Y-m-d')])->select(['date', 'delta as kurs'])->all()]]); $lineArrayRed = \app\service\GraphExporter::convert($params); $params = ArrayHelper::merge($defaultParams, ['rows' => [\app\models\StockPrognosisBlue::query(['stock_id' => $id])->andWhere(['between', 'date', $start->format('Y-m-d'), $end->format('Y-m-d')])->select(['date', 'delta as kurs'])->all()]]); $lineArrayBlue = \app\service\GraphExporter::convert($params); $lineArrayFuture = \app\service\GraphUnion::convert(['x' => $lineArrayRed['x'], 'y' => [$lineArrayRed['y'][0], $lineArrayBlue['y'][0]]]); } else { $lineArrayFuture = null; } return $this->render(['item' => $item, 'lineArrayPast' => $lineArrayPast, 'lineArrayFuture' => $lineArrayFuture, 'isPaid' => $isPaid]); }
/** * Updates an existing Productos model. * If update is successful, the browser will be redirected to the 'view' page. * @param string $id * @return mixed */ public function actionUpdate($id) { $model = $this->findModel($id); $img_model = new UploadForm(); if ($model->load(Yii::$app->request->post()) && $model->save()) { $request = Yii::$app->request; $id_producto = $model->id; $fotos = Fotos::find()->where(['idProducto' => $id_producto])->all(); foreach ($fotos as $foto) { Fotos::deleteFoto($foto); } $img_model->imageFiles = UploadedFile::getInstances($img_model, 'imageFiles'); if ($img_model->upload($model->id)) { if ($model->tipo == 0) { return $this->redirect(['view', 'id' => $model->id]); } else { if ($model->tipo == 1) { $porTiempo = Temporales::find()->where(['idproducto' => $model->id])->one(); $porTiempo->fecha = $request->post('fecha'); $porTiempo->idproducto = $model->id; $porTiempo->save(); return $this->redirect(['view', 'id' => $model->id]); } else { $stock = Stock::find()->where(['idproducto' => $model->id])->one(); $cantidad = $request->post('cant'); $stock->stock = $cantidad; $stock->idproducto = $model->id; $stock->save(); return $this->redirect(['view', 'id' => $model->id]); } } } } else { return $this->render('update', ['model' => $model, 'img_model' => $img_model]); } }
/** * Store a newly created resource in storage. * * @return Response */ public function lotUsage(UsageRequest $request) { $usage = Usage::findOrFail($request->id); $usage->stock_id = $request->stock_id; $usage->quantity_used = $request->quantity_used; $usage->date_of_usage = $request->date_of_usage; $usage->issued_by = $request->issued_by; $usage->received_by = $request->received_by; $usage->remarks = $request->remarks; $usage->user_id = Auth::user()->id; $url = session('SOURCE_URL'); if ($usage->quantity_used > Stock::find((int) $usage->stock_id)->quantity()) { return redirect()->back()->with('message', trans('messages.insufficient-stock'))->withInput($request->all()); } else { if ($usage->quantity_used > Topup::find((int) $usage->request_id)->quantity_ordered) { return redirect()->back()->with('message', trans('messages.issued-greater-than-ordered'))->withInput($request->all()); } else { $usage->save(); return redirect()->to($url)->with('message', trans('messages.record-successfully-updated'))->with('active_stock', $usage->stock->id); } } }
public function actionPrognosis_edit($id) { return $this->render(['items' => \app\models\StockPrognosis::query(['stock_id' => $id])->orderBy(['date' => SORT_DESC])->all(), 'item' => \app\models\Stock::find($id)]); }
/** * AJAX * * REQUEST: * - monthcounter - int - количество покупамых месяцев * - stock_id - int - идентификатор акции */ public function actionAdd_step1() { $monthCounter = self::getParam('monthcounter'); $stockId = self::getParam('stock_id'); $request = Request::insert(['stock_id' => $stockId, 'month' => $monthCounter]); Application::mail(User::find(Yii::$app->params['chat']['consultant_id'])->getEmail(), 'Запрос на добавление услуги', 'request', ['stock' => Stock::find($stockId), 'user' => \Yii::$app->user->identity, 'request' => $request]); return self::jsonSuccess(['user' => ['email' => Yii::$app->user->identity->getEmail(), 'fio' => Yii::$app->user->identity->getNameFull()], 'request' => ['id' => $request->getId(), 'sum' => $monthCounter * 100 * 65]]); }
/** * Импортирует данные с Finam в таблицу курсов * * @param int $stock_id * @param string $start дата 'yyyy-mm-dd' * @param string $end дата 'yyyy-mm-dd' * @param bool $isReplaceExisting Заменять уже имеющиеся данные * true - если в таблице уже есть курс на эту дату то он будет перезатерт * false - если в таблице уже есть курс на эту дату то он сохранится * * @throws \yii\base\InvalidConfigException */ public static function importCandels($stock_id, $start, $end, $isReplaceExisting = false) { $row = Stock::find($stock_id)->getFields(); $data = ['params' => ['market' => $row['finam_market'], 'em' => $row['finam_em'], 'code' => $row['finam_code']]]; $importer = new \app\service\DadaImporter\Finam($data); $data = $importer->importCandels($start, $end); $dateArrayRows = StockKurs::query(['between', 'date', $start, $end])->select(['date'])->andWhere(['stock_id' => $stock_id])->column(); $insert = []; $update = []; foreach ($data as $row) { if (in_array($row['date'], $dateArrayRows)) { $date = $row['date']; $row['kurs'] = $row['close']; unset($row['date']); $update[$date] = $row; } else { $insert[] = [$stock_id, $row['date'], $row['open'], $row['high'], $row['low'], $row['close'], $row['volume'], $row['close']]; } } StockKurs::batchInsert(['stock_id', 'date', 'open', 'high', 'low', 'close', 'volume', 'kurs'], $insert); if ($isReplaceExisting) { foreach ($update as $date => $fields) { (new Query())->createCommand()->update(StockKurs::TABLE, $fields, ['date' => $date, 'stock_id' => $stock_id])->execute(); } } }