Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

ParsedPortfolio.php 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace App\Domain\Entity;
  3. final readonly class ParsedPortfolio
  4. {
  5. private array $header;
  6. private array $details;
  7. private array $movements;
  8. public function __construct(array $header, array $details, array $movements)
  9. {
  10. $this->header = $header;
  11. $this->details = $details;
  12. $this->movements = $movements;
  13. }
  14. public function getHeader(): array
  15. {
  16. return $this->header;
  17. }
  18. public function getDetails(): array
  19. {
  20. return $this->details;
  21. }
  22. public function getMovements(): array
  23. {
  24. return $this->movements;
  25. }
  26. public function extractPeriod(): array
  27. {
  28. if (array_key_exists('НачПериода', $this->header)) {
  29. $startDate = \DateTime::createFromFormat('d.m.Y', $this->header['НачПериода']);
  30. $endDate = \DateTime::createFromFormat('d.m.Y', $this->header['КонПериода']);
  31. } elseif (array_key_exists('СтрокаПериода', $this->header)) {
  32. $chunks = explode(' ', $this->header['СтрокаПериода']);
  33. if(count($chunks) !== 4) throw new \Exception('Unexpected period format!');
  34. $startDate = \DateTime::createFromFormat('d.m.Y', $chunks[1]);
  35. $endDate = \DateTime::createFromFormat('d.m.Y', $chunks[3]);
  36. } else {
  37. throw new \Exception('Can not detect xml header version!');
  38. }
  39. return [$startDate, $endDate];
  40. }
  41. }