コード例 #1
0
ファイル: Sell.php プロジェクト: junjinZ/wealthbot
 /**
  * @param LotModel $model
  * @return int|null
  */
 public function create(LotModel $model)
 {
     if ($model->isMF()) {
         if (null == ($previewMFLot = $this->lotRepo->findOnePreviewMFLot($model))) {
             // TODO: add error
             return null;
         } else {
             $amount = $previewMFLot->getAmount();
             $amount -= $model->getAmount();
             if ($previewMFLot->getDate() == $model->getDate()) {
                 $model->setAmount($amount);
                 $model->setQuantity($amount);
                 $model->setCostBasis($amount);
                 // Save lot changes
                 $this->lotRepo->update($previewMFLot->getId(), $model);
                 // Return preview MF lot
                 $id = $previewMFLot->getId();
             } else {
                 $model->setStatus(WealthbotLot::LOT_IS_OPEN);
                 $model->setQuantity($amount);
                 $model->setCostBasis($amount);
                 // Save lot
                 $id = $this->lotRepo->save($model);
             }
         }
     } else {
         $initialLots = $this->lotRepo->findAllInitialLots($model);
         $id = $this->compareEqualQuantity($initialLots, $model);
         $id = is_null($id) ? $this->compareRtQuantity($initialLots, $model) : $id;
     }
     $model->isClosed() && $this->lotRepo->updateRebalancerDiff($id, $this->compareRebalancerQueue($model, RebalancerQueueModel::STATUS_SELL));
     return $id;
 }
コード例 #2
0
ファイル: Buy.php プロジェクト: junjinZ/wealthbot
 /**
  * @param LotModel $model
  * @return int
  */
 public function create(LotModel $model)
 {
     if ($model->isMF()) {
         if (null == ($previewMFLot = $this->lotRepo->findOnePreviewMFLot($model))) {
             $model->setQuantity($model->getAmount());
             $model->setCostBasis($model->getAmount());
             // Save lot
             $id = $this->lotRepo->save($model);
         } else {
             $amount = $previewMFLot->getAmount();
             $amount += $model->getAmount();
             if ($previewMFLot->getDate() == $model->getDate()) {
                 $model->setAmount($amount);
                 $model->setQuantity($amount);
                 $model->setCostBasis($amount);
                 // Save lot changes
                 $this->lotRepo->update($previewMFLot->getId(), $model);
                 // Return preview MF lot
                 $id = $previewMFLot->getId();
             } else {
                 $model->setStatus(WealthbotLot::LOT_IS_OPEN);
                 $model->setQuantity($amount);
                 $model->setCostBasis($amount);
                 // Save lot
                 $id = $this->lotRepo->save($model);
             }
         }
     } else {
         // Save lot
         $id = $this->lotRepo->save($model);
     }
     $id && $model->isInitial() && $this->lotRepo->updateRebalancerDiff($id, $this->compareRebalancerQueue($model, RebalancerQueueModel::STATUS_BUY));
     return $id;
 }