Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

58 řádky
1.8KB

  1. <?php
  2. namespace App\Kintone\Repositories;
  3. use App\Kintone\Models\ParkingRoom;
  4. use App\Kintone\Models\SeasonTicketContract;
  5. use Illuminate\Support\Collection;
  6. class SeasonTicketContractRepository
  7. {
  8. /**
  9. * キーは車室情報管理のレコード番号
  10. * @param string $customerCode
  11. * @return Collection<string, SeasonTicketContractRepositoryData>
  12. */
  13. static function get(string $customerCode): Collection
  14. {
  15. $ret = collect();
  16. $query = SeasonTicketContract::getQuery()
  17. ->where(SeasonTicketContract::FIELD_CUSTOMER_CODE, $customerCode);
  18. $seasonTicketContracts = SeasonTicketContract::getAccess()
  19. ->some($query);
  20. $recordIds = [];
  21. foreach ($seasonTicketContracts as $seasonTicketContract) {
  22. $recordIds[] = $seasonTicketContract->getRecordId();
  23. }
  24. $query = ParkingRoom::getQuery()
  25. ->whereIn(ParkingRoom::FIELD_SEASON_TICKET_CONTRACT_RECORD_NO, $recordIds);
  26. $parkings = ParkingRoom::getAccess()
  27. ->some($query);
  28. /**
  29. * @var Collection<string, ParkingRoom>
  30. */
  31. $parkingsBySeasonTicketContractRecordId = collect();
  32. foreach ($parkings as $parking) {
  33. $parkingsBySeasonTicketContractRecordId->put($parking->getNumber(ParkingRoom::FIELD_SEASON_TICKET_CONTRACT_RECORD_NO), $parking);
  34. }
  35. /**
  36. * @var SeasonTicketContract $seasonTicketContract
  37. */
  38. foreach ($seasonTicketContracts as $seasonTicketContract) {
  39. $parking = null;
  40. $parking = $parkingsBySeasonTicketContractRecordId->get($seasonTicketContract->getRecordId(), null);
  41. $ret->put($seasonTicketContract->getRecordId(), new SeasonTicketContractRepositoryData($seasonTicketContract, $parking));
  42. }
  43. return $ret;
  44. }
  45. }