|
- <?php
-
- namespace App\Kintone\Repositories;
-
- use App\Kintone\Models\ParkingRoom;
- use App\Kintone\Models\SeasonTicketContract;
- use Illuminate\Support\Collection;
-
- class SeasonTicketContractRepository
- {
- /**
- * キーは車室情報管理のレコード番号
- * @param string $customerCode
- * @return Collection<string, SeasonTicketContractRepositoryData>
- */
- static function get(string $customerCode): Collection
- {
- $ret = collect();
-
- $query = SeasonTicketContract::getQuery()
- ->where(SeasonTicketContract::FIELD_CUSTOMER_CODE, $customerCode);
- $seasonTicketContracts = SeasonTicketContract::getAccess()
- ->some($query);
-
-
- $recordIds = [];
- foreach ($seasonTicketContracts as $seasonTicketContract) {
- $recordIds[] = $seasonTicketContract->getRecordId();
- }
- $query = ParkingRoom::getQuery()
- ->whereIn(ParkingRoom::FIELD_SEASON_TICKET_CONTRACT_RECORD_NO, $recordIds);
- $parkings = ParkingRoom::getAccess()
- ->some($query);
-
-
- /**
- * @var Collection<string, ParkingRoom>
- */
- $parkingsBySeasonTicketContractRecordId = collect();
-
- foreach ($parkings as $parking) {
- $parkingsBySeasonTicketContractRecordId->put($parking->getNumber(ParkingRoom::FIELD_SEASON_TICKET_CONTRACT_RECORD_NO), $parking);
- }
-
- /**
- * @var SeasonTicketContract $seasonTicketContract
- */
- foreach ($seasonTicketContracts as $seasonTicketContract) {
- $parking = null;
- $parking = $parkingsBySeasonTicketContractRecordId->get($seasonTicketContract->getRecordId(), null);
-
- $ret->put($seasonTicketContract->getRecordId(), new SeasonTicketContractRepositoryData($seasonTicketContract, $parking));
- }
-
- return $ret;
- }
- }
|