CprQueryModel.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace Models;
  3. class CprQueryModel
  4. {
  5. private \PDO $pdo;
  6. public function __construct()
  7. {
  8. if (!isset($GLOBALS['pdo']) || !$GLOBALS['pdo'] instanceof \PDO) {
  9. throw new \RuntimeException('Global PDO not initialized');
  10. }
  11. $this->pdo = $GLOBALS['pdo'];
  12. }
  13. /**
  14. * Lista resumida
  15. */
  16. public function listByCompany(int $companyId): array
  17. {
  18. $sql = '
  19. SELECT
  20. cpr_id,
  21. cpr_product_class_name,
  22. cpr_issue_date,
  23. cpr_issuer_name,
  24. cpr_issue_financial_value
  25. FROM cpr
  26. WHERE company_id = :company_id
  27. ORDER BY cpr_issue_date DESC
  28. ';
  29. $stmt = $this->pdo->prepare($sql);
  30. $stmt->execute(['company_id' => $companyId]);
  31. return $stmt->fetchAll(\PDO::FETCH_ASSOC);
  32. }
  33. /**
  34. * Detalhe completo
  35. */
  36. public function getByIdAndCompany(int $cprId, int $companyId): ?array
  37. {
  38. $sql = '
  39. SELECT *
  40. FROM cpr
  41. WHERE cpr_id = :cpr_id
  42. AND company_id = :company_id
  43. LIMIT 1
  44. ';
  45. $stmt = $this->pdo->prepare($sql);
  46. $stmt->execute([
  47. 'cpr_id' => $cprId,
  48. 'company_id' => $companyId
  49. ]);
  50. $row = $stmt->fetch(\PDO::FETCH_ASSOC);
  51. if (!$row) {
  52. return null;
  53. }
  54. return $this->filterEmptyFields($row);
  55. }
  56. /**
  57. * Remove NULL e "na"
  58. */
  59. private function filterEmptyFields(array $data): array
  60. {
  61. return array_filter(
  62. $data,
  63. static function ($value) {
  64. if ($value === null) {
  65. return false;
  66. }
  67. if (is_string($value) && strtolower(trim($value)) === 'na') {
  68. return false;
  69. }
  70. return true;
  71. }
  72. );
  73. }
  74. }