From 7587309346f410b8e392bd68b1f4f3a968eb55d0 Mon Sep 17 00:00:00 2001 From: "M. Vondano" Date: Mon, 29 Jun 2020 19:06:20 +0200 Subject: [PATCH 1/2] add several fields to the RealEstate entity - externalId - groupNumber - apiSearchData - publishChannels --- .../AbstractRealEstateController.php | 5 ++ src/Entity/RealEstate.php | 72 +++++++++++++++++++ src/Resources/contao/languages/en/default.php | 6 ++ 3 files changed, 83 insertions(+) diff --git a/src/Controller/FrontendModule/AbstractRealEstateController.php b/src/Controller/FrontendModule/AbstractRealEstateController.php index bd8c1e4..e1e9464 100644 --- a/src/Controller/FrontendModule/AbstractRealEstateController.php +++ b/src/Controller/FrontendModule/AbstractRealEstateController.php @@ -107,6 +107,11 @@ protected function getFormatted(RealEstate $realEstate, string $attribute): ?str ); } + // flatten arrays to comma separated values + if (\is_array($rawValue)) { + return implode(', ', $rawValue); + } + // parse dates if ($rawValue instanceof \DateTime) { return $rawValue->format('d.m.Y H:i'); diff --git a/src/Entity/RealEstate.php b/src/Entity/RealEstate.php index b342eb9..c472a2f 100644 --- a/src/Entity/RealEstate.php +++ b/src/Entity/RealEstate.php @@ -939,6 +939,54 @@ class RealEstate extends DcaDefault */ public $realEstateId = ''; + /** + * @ORM\Column(name="external_id", type="text") + * @Immoscout24Api(name="externalId") + * + * @var string + */ + public $externalId = ''; + + /** + * @ORM\Column(name="group_number", type="integer", nullable=true) + * @Immoscout24Api(name="groupNumber") + * + * @var ?int + */ + public $groupNumber; + + /** + * @ORM\Column(name="api_search_data1") + * @Immoscout24Api(name="apiSearchData::searchField1") + * + * @var string + */ + public $apiSearchData1 = ''; + + /** + * @ORM\Column(name="api_search_data2") + * @Immoscout24Api(name="apiSearchData::searchField2") + * + * @var string + */ + public $apiSearchData2 = ''; + + /** + * @ORM\Column(name="api_search_data3") + * @Immoscout24Api(name="apiSearchData::searchField3") + * + * @var string + */ + public $apiSearchData3 = ''; + + /** + * @ORM\Column(name="publish_channels", type="simple_array", nullable=true) + * [manually mapped] + * + * @var array|null + */ + public $publishChannels; + /** * @ORM\Column(name="title") * @Immoscout24Api(name="title") @@ -1300,6 +1348,7 @@ public static function createFromApiResponse(array $data, Account $account): ?se $realEstate->immoscoutAccount = $account; $realEstate->createdAt = self::getDateTime($data['creationDate'] ?? ''); $realEstate->modifiedAt = self::getDateTime($data['lastModificationDate'] ?? '', $realEstate->createdAt); + $realEstate->publishChannels = self::getPublishChannels($data); // automatically mapped values if (self::autoMap($realEstate, $data)) { @@ -1444,4 +1493,27 @@ static function (Attachment $attachment) { } ); } + + private static function getPublishChannels($data): array + { + $set = $data['common.publishChannels'][0]['publishChannel'] ?? null; + + if (!\is_array($set)) { + return []; + } + + $channels = []; + + // the representation differs for one/many, so we walk though all leaves instead + array_walk_recursive( + $set, + static function ($value, $key) use (&$channels): void { + if ('@title' === $key) { + $channels[] = (string) $value; + } + } + ); + + return $channels; + } } diff --git a/src/Resources/contao/languages/en/default.php b/src/Resources/contao/languages/en/default.php index 90ca482..fbf4163 100755 --- a/src/Resources/contao/languages/en/default.php +++ b/src/Resources/contao/languages/en/default.php @@ -12,6 +12,12 @@ // attribute labels $GLOBALS['TL_LANG']['immoscout24']['realEstateId'] = 'Real estate ID'; +$GLOBALS['TL_LANG']['immoscout24']['externalId'] = 'External ID'; +$GLOBALS['TL_LANG']['immoscout24']['groupNumber'] = 'Group number'; +$GLOBALS['TL_LANG']['immoscout24']['apiSearchData1'] = 'API search data (1)'; +$GLOBALS['TL_LANG']['immoscout24']['apiSearchData2'] = 'API search data (1)'; +$GLOBALS['TL_LANG']['immoscout24']['apiSearchData3'] = 'API search data (1)'; +$GLOBALS['TL_LANG']['immoscout24']['publishChannels'] = 'Publish channels'; $GLOBALS['TL_LANG']['immoscout24']['title'] = 'Title'; $GLOBALS['TL_LANG']['immoscout24']['createdAt'] = 'Offer created at'; $GLOBALS['TL_LANG']['immoscout24']['modifiedAt'] = 'Offer last modified at'; From 0aad446f000d76cb18ef9ab35fb1eca5924dada1 Mon Sep 17 00:00:00 2001 From: "M. Vondano" Date: Mon, 29 Jun 2020 19:07:48 +0200 Subject: [PATCH 2/2] normalize annotations --- src/Entity/RealEstate.php | 76 +++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/src/Entity/RealEstate.php b/src/Entity/RealEstate.php index c472a2f..18c5b5b 100644 --- a/src/Entity/RealEstate.php +++ b/src/Entity/RealEstate.php @@ -325,7 +325,7 @@ class RealEstate extends DcaDefault * "" = null * }) * - * @var ?bool + * @var bool|null */ public $listed; @@ -397,7 +397,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="address_latitude", type="decimal", precision=10, scale=8, nullable=true) * @Immoscout24Api(name="address::wgs84Coordinate::latitude") * - * @var ?float + * @var float|null */ public $addressLatitude; @@ -405,7 +405,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="address_longitude", type="decimal", precision=11, scale=8, nullable=true) * @Immoscout24Api(name="address::wgs84Coordinate::longitude") * - * @var ?float + * @var float|null */ public $addressLongitude; @@ -413,7 +413,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="price", type="decimal", precision=10, scale=2, nullable=true) * @Immoscout24Api(name="price::value") * - * @var ?float + * @var float|null */ public $price; @@ -452,7 +452,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="number_of_floors", type="integer", nullable=true) * @Immoscout24Api(name="numberOfFloors") * - * @var ?int + * @var int|null */ public $numberOfFloors; @@ -460,7 +460,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="number_of_rooms", type="integer", nullable=true) * @Immoscout24Api(name="numberOfRooms") * - * @var ?int + * @var int|null */ public $numberOfRooms; @@ -468,7 +468,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="number_of_bathrooms", type="integer", nullable=true) * @Immoscout24Api(name="numberOfBathRooms") * - * @var ?int + * @var int|null */ public $numberOfBathrooms; @@ -476,7 +476,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="number_of_bedrooms", type="integer", nullable=true) * @Immoscout24Api(name="numberOfBedRooms") * - * @var ?int + * @var int|null */ public $numberOfBedrooms; @@ -492,7 +492,7 @@ class RealEstate extends DcaDefault * "" = null * }) * - * @var ?bool + * @var bool|null */ public $cellar; @@ -508,7 +508,7 @@ class RealEstate extends DcaDefault * "" = null * }) * - * @var ?bool + * @var bool|null */ public $builtInKitchen; @@ -524,7 +524,7 @@ class RealEstate extends DcaDefault * "" = null * }) * - * @var ?bool + * @var bool|null */ public $balcony; @@ -540,7 +540,7 @@ class RealEstate extends DcaDefault * "" = null * }) * - * @var ?bool + * @var bool|null */ public $garden; @@ -556,7 +556,7 @@ class RealEstate extends DcaDefault * "" = null * }) * - * @var ?bool + * @var bool|null */ public $guestToilet; @@ -564,7 +564,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="living_space", type="float", nullable=true) * @Immoscout24Api(name="livingSpace") * - * @var ?float + * @var float|null */ public $livingSpace; @@ -572,7 +572,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="plot_area", type="float", nullable=true) * @Immoscout24Api(name="plotArea") * - * @var ?float + * @var float|null */ public $plotArea; @@ -617,7 +617,7 @@ class RealEstate extends DcaDefault * "" = null * }) * - * @var ?bool + * @var bool|null */ public $lodgerFlat; @@ -634,7 +634,7 @@ class RealEstate extends DcaDefault * "" = null * }) * - * @var ?bool + * @var bool|null */ public $summerResidencePractical; @@ -650,7 +650,7 @@ class RealEstate extends DcaDefault * "" = null * }) * - * @var ?bool + * @var bool|null */ public $rented; @@ -658,7 +658,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="rental_income", type="decimal", nullable=true) * @Immoscout24Api(name="rentalIncome") * - * @var ?float + * @var float|null */ public $rentalIncome; @@ -666,7 +666,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="construction_year", type="integer", nullable=true) * @Immoscout24Api(name="constructionYear") * - * @var ?int + * @var int|null */ public $constructionYear; @@ -687,7 +687,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="last_refurbishment", type="integer", nullable=true) * @Immoscout24Api(name="lastRefurbishment") * - * @var ?int + * @var int|null */ public $lastRefurbishment; @@ -797,7 +797,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="thermal_characteristic", type="float", nullable=true) * @Immoscout24Api(name="thermalCharacteristic") * - * @var ?float + * @var float|null */ public $thermalCharacteristic; @@ -814,7 +814,7 @@ class RealEstate extends DcaDefault * "" = null * }) * - * @var ?bool + * @var bool|null */ public $energyConsumptionContainsWarmWater; @@ -830,7 +830,7 @@ class RealEstate extends DcaDefault * "" = null * }) * - * @var ?bool + * @var bool|null */ public $energyPerformanceCertificate; @@ -838,7 +838,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="number_of_parking_spaces", type="integer", nullable=true) * @Immoscout24Api(name="numberOfParkingSpaces") * - * @var ?int + * @var int|null */ public $numberOfParkingSpaces; @@ -862,7 +862,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="parking_space_price", type="decimal", precision=10, scale=2, nullable=true) * @Immoscout24Api(name="parkingSpacePrice") * - * @var ?float + * @var float|null */ public $parkingSpacePrice; @@ -878,7 +878,7 @@ class RealEstate extends DcaDefault * "" = null * }) * - * @var ?bool + * @var bool|null */ public $handicappedAccessible; @@ -895,7 +895,7 @@ class RealEstate extends DcaDefault * "" = null * }) * - * @var ?bool + * @var bool|null */ public $courtage; @@ -951,7 +951,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="group_number", type="integer", nullable=true) * @Immoscout24Api(name="groupNumber") * - * @var ?int + * @var int|null */ public $groupNumber; @@ -999,7 +999,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="number_of_lifts", type="integer", nullable=true) * @Immoscout24Api(name="lift") * - * @var ?int + * @var int|null */ public $numberOfLifts; @@ -1007,7 +1007,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="free_from_year", type="integer", nullable=true) * @Immoscout24Api(name="freeFrom") * - * @var ?int + * @var int|null */ public $freeFromYear; @@ -1015,7 +1015,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="base_rent", type="decimal", precision=10, scale=2, nullable=true) * @Immoscout24Api(name="baseRent") * - * @var ?float + * @var float|null */ public $baseRent; @@ -1023,7 +1023,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="total_rent", type="decimal", precision=10, scale=2, nullable=true) * @Immoscout24Api(name="totalRent") * - * @var ?float + * @var float|null */ public $totalRent; @@ -1031,7 +1031,7 @@ class RealEstate extends DcaDefault * @ORM\Column(name="heating_costs", type="decimal", precision=10, scale=2, nullable=true) * @Immoscout24Api(name="heatingCosts") * - * @var ?float + * @var float|null */ public $heatingCosts; @@ -1056,7 +1056,7 @@ class RealEstate extends DcaDefault * "" = null * }) * - * @var ?bool + * @var bool|null */ public $heatingCostsInServiceCharge; @@ -1073,7 +1073,7 @@ class RealEstate extends DcaDefault * "" = null * }) * - * @var ?bool + * @var bool|null */ public $petsAllowed; @@ -1089,7 +1089,7 @@ class RealEstate extends DcaDefault * "" = null * }) * - * @var ?bool + * @var bool|null */ public $basement; @@ -1106,7 +1106,7 @@ class RealEstate extends DcaDefault * "" = null * }) * - * @var ?bool + * @var bool|null */ public $buildingPermission;