transactionType; } /** * @return float */ public function getRealValue(): float { return $this->realValue; } /** * @param int $realValue */ public function setRealValue(int $realValue): void { $this->realValue = $realValue; } /** * @return string|null */ public function getRealCurrency(): ?string { return $this->realCurrency; } /** * @param string $realCurrency */ public function setRealCurrency(string $realCurrency): void { $this->realCurrency = $realCurrency; } /** * @return \DateTime */ public function getDateTime(): \DateTime { return $this->dateTime; } /** * @param \DateTime $dateTime */ public function setDateTime(\DateTime $dateTime): void { $this->dateTime = $dateTime; } /** * @return string */ public function getDesc(): string { return $this->desc; } /** * @param string $desc */ public function setDesc(string $desc): void { $this->desc = $desc; } /** * @return int */ public function getValue(): int { return $this->value; } /** * @param int $value */ public function setValue(int $value): void { $this->value = $value; } /** * @return string */ public function getCurrency(): string { return $this->currency; } /** * @param string $currency */ public function setCurrency(string $currency): void { if (!in_array($currency, Currency::$currencies) && !in_array($currency, Currency::$currenciesCrypto)) { $this->isCrypto = true; } $this->currency = $currency; } /** * @param string $transactionType */ public function setTransactionType(string $transactionType): void { $this->transactionType = $transactionType; } /** * @param string $marketName */ public function setMarketName(string $marketName): void { $this->marketName = $marketName; } public function addValue(int $val) : void { $this->value += $val; } public function addRealValue(float $val) : void { if (!isset($this->realValue)) { $this->realValue = 0; } $this->realValue += $val; } public function takePrice(bool $force = false) : void { if ($this->price && !$force) { return; } $real = $this->getRealValue() / 100; $val = $this->getValue(); if ($this->isCrypto) { $val = $this->getValueCrypto(); } $price = round($real/$val,8); // if ($this->isCrypto) { // $price *= self::_CRYPTO_DIVIDER; // } else { // $price *= 100; // } $this->price = $price; } /** * @param float|int $price */ public function setPrice($price): void { $this->price = $price; } public function getPrice() : float { return $this->price; } public function getValueCrypto() : float { return $this->value / self::_CRYPTO_DIVIDER; } public function subtract(MainObject $mainObject) { $this->value = $this->getValue() - $mainObject->getValue(); } public function checkCurrency() : void { if (!$this->isCrypto) { $this->value = intval($this->value/self::_CRYPTO_DIVIDER*100); } } public function trySetCurrencies() : void { if ($this->marketName) { $cryptoFiat = ["USDT","BUSD"]; if (strlen($this->marketName) === 6) { $cur1 = substr($this->marketName,0,3); $cur2 = substr($this->marketName,3); if ($this->transactionType === "BUY") { $this->setCurrency($cur1); $this->setRealCurrency($cur2); // $this->setPrice(-$this->getPrice()); } else { $this->setCurrency($cur2); $this->setRealCurrency($cur1); } } else { foreach ($cryptoFiat as $item) { $currReal = strpos($this->marketName, $item); if ($currReal === false) { continue; } if ($currReal > 0) { $cur1 = substr($this->marketName, 0,strlen($this->marketName) - strlen($item)); $cur2 = $item; } else { $cur1 = $item; $cur2 = substr($this->marketName, 0, strlen($this->marketName) - strlen($item)); } if ($this->transactionType === "BUY") { $this->setCurrency($cur1); $this->setRealCurrency($cur2); // $this->setPrice(-$this->getPrice()); } else { $this->setCurrency($cur2); $this->setRealCurrency($cur1); } } } if ($this->getRealCurrency() === "USDT") { $this->setRealValue(-intval($this->getRealValue())); } } } public function currencyConversion() : void { if ($this->realCurrency === "PLN" || (!in_array($this->realCurrency, Currency::$currencies) && !in_array($this->realCurrency, Currency::$currenciesCrypto))) { return; } $eur = 4.5755; if ($this->realCurrency === "EUR") { $this->setRealValue(intval(round($this->getRealValue() * $eur))); $this->setRealCurrency("PLN"); $this->takePrice(true); } // if ($this->realCurrency === "USDT") { // dd($this); // $this->setRealValue(intval(round($this->getRealValue() * ($eur/$this->getPrice())))); // $this->setRealCurrency("PLN"); // $this->takePrice(true); // } } }