PharmacyDrugRepository.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. namespace App\Repository;
  3. use App\Model\PharmacyDrug;
  4. class PharmacyDrugRepository extends RepositoryAbstract
  5. {
  6. public function __construct()
  7. {
  8. parent::__construct();
  9. $this->entityName = 'pharmacyDrug';
  10. }
  11. /**
  12. * @param $id
  13. * @return null|PharmacyDrug
  14. */
  15. public function findById($idPharmacy, $idDrug)
  16. {
  17. $stmt = $this->pdo->prepare("
  18. SELECT pd.IdPharmacy, pd.IdDrug, p.Name AS NamePharmacy, d.Name AS NameDrug, pd.Quantity
  19. FROM pharmacy AS p
  20. INNER JOIN pharmacyDrug AS pd ON p.Id = pd.IdPharmacy
  21. INNER JOIN drug AS d ON pd.IdDrug = d.Id
  22. WHERE pd.IdPharmacy = :IdPharmacy
  23. AND pd.IdDrug = :IdDrug
  24. ");
  25. $stmt->execute([
  26. 'IdPharmacy' => $idPharmacy,
  27. 'IdDrug' => $idDrug
  28. ]);
  29. foreach ($stmt as $row) {
  30. return new PharmacyDrug($row['IdPharmacy'], $row['IdDrug'], $row['Quantity'], $row['NamePharmacy'], $row['NameDrug']);
  31. }
  32. return null;
  33. }
  34. /**
  35. * @return PharmacyDrug[] array
  36. */
  37. public function findAll(): array
  38. {
  39. $stmt = $this->pdo->prepare("
  40. SELECT pd.IdPharmacy, pd.IdDrug, p.Name AS NamePharmacy, d.Name AS NameDrug, pd.Quantity
  41. FROM pharmacy AS p
  42. INNER JOIN pharmacyDrug AS pd ON p.Id = pd.IdPharmacy
  43. INNER JOIN drug AS d ON pd.IdDrug = d.Id
  44. ");
  45. $stmt->execute();
  46. $pharmacyDrugs = [];
  47. foreach ($stmt as $row) {
  48. $pharmacyDrugs[] = new PharmacyDrug($row['IdPharmacy'], $row['IdDrug'], $row['Quantity'], $row['NamePharmacy'], $row['NameDrug']);
  49. }
  50. return $pharmacyDrugs;
  51. }
  52. /**
  53. * @param PharmacyDrug $pharmacyDrug
  54. */
  55. public function save(PharmacyDrug $pharmacyDrug)
  56. {
  57. $stmt = $this->pdo->prepare("INSERT INTO {$this->entityName} (IdPharmacy, IdDrug, Quantity) VALUES(:IdPharmacy, :IdDrug, :Quantity)");
  58. $stmt->execute([
  59. 'IdPharmacy' => $pharmacyDrug->idPharmacy,
  60. 'IdDrug' => $pharmacyDrug->idDrug,
  61. 'Quantity' => $pharmacyDrug->quantity
  62. ]);
  63. }
  64. /**
  65. * @param PharmacyDrug $pharmacyDrug
  66. */
  67. public function update(PharmacyDrug $pharmacyDrug)
  68. {
  69. $stmt = $this->pdo->prepare("UPDATE {$this->entityName} SET Quantity = :Quantity WHERE IdPharmacy = :IdPharmacy AND IdDrug = :IdDrug");
  70. $stmt->execute([
  71. 'IdPharmacy' => $pharmacyDrug->idPharmacy,
  72. 'IdDrug' => $pharmacyDrug->idDrug,
  73. 'Quantity' => $pharmacyDrug->quantity
  74. ]);
  75. }
  76. /**
  77. * @param int $id
  78. */
  79. public function delete($idPharmacy, $idDrug)
  80. {
  81. $stmt = $this->pdo->prepare("DELETE FROM {$this->entityName} WHERE IdPharmacy = :IdPharmacy AND IdDrug = :IdDrug");
  82. $stmt->execute([
  83. 'IdPharmacy' => $idPharmacy,
  84. 'IdDrug' => $idDrug
  85. ]);
  86. }
  87. }