diff --git a/project/src/Controller/TaxesController.php b/project/src/Controller/TaxesController.php index 23926e8..e7643f9 100644 --- a/project/src/Controller/TaxesController.php +++ b/project/src/Controller/TaxesController.php @@ -2,6 +2,7 @@ namespace App\Controller; +use App\Enum\MarketNames; use App\Helper\Currency; use App\Helper\DataNeed\NeedFileName; use App\Services\CryptoService; @@ -88,10 +89,10 @@ class TaxesController extends AbstractController ]); } - #[Route(path: '/taxes/dividend/{hash}', name: 'app_taxes_dividend_show')] - public function showDividend(DividendsService $tax) : Response + #[Route(path: '/taxes/dividend/{hash}/{market}', name: 'app_taxes_dividend_show', defaults: ['market' => null])] + public function showDividend(DividendsService $tax, ?MarketNames $market) : Response { - if ($tax->readFiles()) { + if ($tax->readFiles($market)) { $gen = $tax->generate(); // dd($gen); return $this->render("taxes/show.html.twig", [ @@ -100,6 +101,9 @@ class TaxesController extends AbstractController "errorString" => $gen->getErrorString(), "rawCount" => $gen->takeCountRawData(), "markets" => $gen->getMarkets(), + "markets_all" => MarketNames::cases(), + "hash_param" => $tax->takeHash(), + "current_market" => $market, ]); } @@ -108,7 +112,7 @@ class TaxesController extends AbstractController #[Route(path: '/taxes/crypto/{hash}', name: 'app_taxes_crypto_show')] public function showCrypto(CryptoService $tax) : Response { - if ($tax->readFiles()) { + if ($tax->readFiles(null)) { $gen = $tax->generate(); if ($gen) { return $this->render("taxes/show.html.twig", [ diff --git a/project/src/Helper/ClearTypes.php b/project/src/Helper/ClearTypes.php new file mode 100644 index 0000000..5ac9d7c --- /dev/null +++ b/project/src/Helper/ClearTypes.php @@ -0,0 +1,24 @@ + 2100) { $date = Date::excelToDateTimeObject($date); - } else if (is_string($date)) { + } else { $date = new \DateTime(str_replace(".", "-", $date)); } if (is_float($row['tax'])) { $row['tax'] = intval(round($row['tax']*100)); } + $dividendObj = new DividendsData(); - $dividendObj->setCount($row['count']); $dividendObj->setIsin($row['isin']); $dividendObj->setCurrency($row['currency']); - $dividendObj->setTax($row['tax']); - $dividendObj->setValue($row['value']); + + + $dividendObj->setTax(ClearTypes::clearInt($row['tax'])); + $dividendObj->setCount(ClearTypes::clearInt($row['count'])); + $dividendObj->setValue(ClearTypes::clearFloat($row['value'])); + + $dividendObj->setDateTime($date); $ret[] = $dividendObj; } diff --git a/project/src/Services/MasterServices.php b/project/src/Services/MasterServices.php index 13e1f7f..ddf696d 100644 --- a/project/src/Services/MasterServices.php +++ b/project/src/Services/MasterServices.php @@ -2,6 +2,7 @@ declare(strict_types=1); namespace App\Services; +use App\Enum\MarketNames; use Doctrine\ORM\EntityManager; class MasterServices @@ -18,7 +19,7 @@ class MasterServices $this->uploadPath = $path; } - public function readFiles() : bool + public function readFiles(?MarketNames $market) : bool { $fileNames = []; $dir=$this->uploadPath . "/" . $this->hashParam; @@ -29,7 +30,20 @@ class MasterServices } } closedir($handle); + if($market !== null) { + foreach ($fileNames as $key => $fileName) { + $fileMarket = MarketNames::tryFromCase($fileName); + if ($fileMarket !== $market) { + unset($fileNames[$key]); + } + } + } $this->allFiles=$fileNames; return count($fileNames) > 0; } + + public function takeHash(): string + { + return $this->hashParam; + } } \ No newline at end of file diff --git a/project/templates/taxes/show.html.twig b/project/templates/taxes/show.html.twig index 8076713..8b7961b 100644 --- a/project/templates/taxes/show.html.twig +++ b/project/templates/taxes/show.html.twig @@ -6,15 +6,16 @@