/** * @param int $ID * @param int $developer_ID * @param int $screen_ID [optional] * @return Project */ function getProject($ID, $developer_ID, $screen_ID = null) { if (!$screen_ID) { $screen_ID = $this->getScreenID(); } $xml = $this->sendRequest(self::SERVICE_GET_PROJECT, array("developerid" => (int) $developer_ID, "projectid" => (int) $ID, "screenid" => (int) $screen_ID), $response); $project = Project::createFromXML($xml); return $project; }
/** * @param \SimpleXMLElement $element * @return Export */ public static function createFromXML(\SimpleXMLElement $element) { /** @var Export $export */ $export = parent::createFromXML($element); if (isset($element->project)) { foreach ($element->project as $project_element) { $project = Project::createFromXML($project_element); $export->addProject($project); } } return $export; }
/** * @covers Project::createFromXML */ function test_createFromXML() { $xml_source = ' <project id="35742" name="Kejřův park 2" stage="1" gps="50.101602,14.529097" gps-center="50.079582,14.430068" city="Praha" plan="f1ab126b-7fde-49f9-8a1d-8b8e538e50ff" icon="1065ed72-cbaa-4c76-81fc-b10dc4d3797b" standards="fc1be882-2d97-488b-babe-54ef7c87cd65" offline-map="9804638e-c737-48b1-802d-088aa78cecfd" hypo-assistant="true" public="true" hidden="true" demo="true" currency="CZK"> <locale iso="cs_CZ" name="Čeština"/> <locale iso="en_US" name="English"/> <locale iso="ru_RU" name="Русский"/> <description locale="cs_CZ" text="Kejřův park 2"/> <description locale="en_US" text="Kejřův park 2"/> <description locale="ru_RU" text="Кейржув парк 2"/> <email-header locale="cs_CZ" text="Dobrý den pane/paní,{nl} {nl} na základě naší schůzky si Vám dovoluji zaslat slíbené infrmace.{nl} {nl}"/> <email-header locale="en_US" text="Dear valued customer,{nl} {nl} Based on our meeting, I am sending you information about your favorite apartments.{nl} {nl}"/> <email-header locale="ru_RU" text="Добрый день,{nl} {nl} как мы и договорились, посылаю вам обещанные документы.{nl} {nl}"/> <email locale="cs_CZ" text="Dobrý den pane/paní,{nl} {nl} na základě naší schůzky si Vám dovoluji zaslat slíbené infrmace.{nl} {nl} Jednotka: {flat_internal_id} {project}{nl} Dispozice: {flat_disposition}{nl} Plocha: {flat_area}{nl} Cena: {flat_price}{nl} {nl} Katalogové listy bytů zasílám v příloze a v případě dotazů jsem Vám k dispozici.{nl}"/> <email locale="en_US" text="Dear valued customer,{nl} {nl} Based on our meeting, I am sending you information about your favorite apartments.{nl} {nl} Unit: {flat_internal_id} {project}{nl} Disposition: {flat_disposition}{nl} Area: {flat_area}{nl} Price: {flat_price}{nl} {nl} Please find a floorplan attached. Should you have any questions please feel free to contact me.{nl}"/> <email locale="ru_RU" text="Добрый день,{nl} {nl} как мы и договорились, посылаю вам обещанные документы.{nl} {nl} Квартира: {flat_internal_id} {project}{nl} Планировка: {flat_disposition}{nl} Площадь: {flat_area}{nl} Цена: {flat_price}{nl} {nl} К письму прицеплен лист из каталога. В случае, если у вас возникнут вопросы не ждите, обращайтесь к нам.{nl}"/> <email-footer locale="cs_CZ" text="Katalogové listy bytů zasílám v příloze a v případě dotazů jsem Vám k dispozici.{nl}"/> <email-footer locale="en_US" text="Please find a floorplan attached. Should you have any questions please feel free to contact me.{nl}"/> <email-footer locale="ru_RU" text="К письму прицеплен лист из каталога. В случае, если у вас возникнут вопросы не ждите, обращайтесь к нам.{nl}"/> <building id="48383" name="F" gps="12.5,13.5" arrow-direction="2" plan="b79b87f1-67cd-48b4-a3ca-ae63fad89505" coordinates="393,342,864,671"> <floor id="10000" floorNo="3" arrow-direction="2" plan="d3896ab3-c8fa-4ae5-a501-181f22d9427d" coordinates="797,178,972,238"> <flat id="1000" plan="5cf1b05a-9964-4661-ac42-a96c77881000" coordinates="66,26,471,415" pdf="2a81f515-8fe5-4cd3-a6cb-89c8d892ae46"> <flat-attribute key="flat_internal_id" value="F11"/> </flat> <flat id="2000" plan="5cf1b05a-9964-4661-ac42-a96c77882000" coordinates="66,26,471,415" pdf="2a81f515-8fe5-4cd3-a6cb-89c8d892ae46"> <flat-attribute key="flat_internal_id" value="F11"/> </flat> </floor> <floor id="20000" floorNo="4" arrow-direction="2" plan="d3896ab3-c8fa-4ae5-a501-181f22d9427d" coordinates="797,178,972,238"> <flat id="3000" plan="5cf1b05a-9964-4661-ac42-a96c77881000" coordinates="66,26,471,415" pdf="2a81f515-8fe5-4cd3-a6cb-89c8d892ae46"> <flat-attribute key="flat_internal_id" value="F11"/> </flat> <flat id="4000" plan="5cf1b05a-9964-4661-ac42-a96c77882000" coordinates="66,26,471,415" pdf="2a81f515-8fe5-4cd3-a6cb-89c8d892ae46"> <flat-attribute key="flat_internal_id" value="F11"/> </flat> </floor> </building> <building id="48385" name="F" gps="12.5,13.5" arrow-direction="2" plan="b79b87f1-67cd-48b4-a3ca-ae63fad89505" coordinates="393,342,864,671"> <floor id="30000" floorNo="3" arrow-direction="2" plan="d3896ab3-c8fa-4ae5-a501-181f22d9427d" coordinates="797,178,972,238"> <flat id="5000" plan="5cf1b05a-9964-4661-ac42-a96c77881000" coordinates="66,26,471,415" pdf="2a81f515-8fe5-4cd3-a6cb-89c8d892ae46"> <flat-attribute key="flat_internal_id" value="F11"/> </flat> <flat id="6000" plan="5cf1b05a-9964-4661-ac42-a96c77882000" coordinates="66,26,471,415" pdf="2a81f515-8fe5-4cd3-a6cb-89c8d892ae46"> <flat-attribute key="flat_internal_id" value="F11"/> </flat> </floor> <floor id="40000" floorNo="4" arrow-direction="2" plan="d3896ab3-c8fa-4ae5-a501-181f22d9427d" coordinates="797,178,972,238"> <flat id="7000" plan="5cf1b05a-9964-4661-ac42-a96c77881000" coordinates="66,26,471,415" pdf="2a81f515-8fe5-4cd3-a6cb-89c8d892ae46"> <flat-attribute key="flat_internal_id" value="F11"/> </flat> <flat id="8000" plan="5cf1b05a-9964-4661-ac42-a96c77882000" coordinates="66,26,471,415" pdf="2a81f515-8fe5-4cd3-a6cb-89c8d892ae46"> <flat-attribute key="flat_internal_id" value="F11"/> </flat> </floor> </building> <gallery id="904366" creation-time="2014-04-17T00:00:00+0200" modification-time="2014-04-17T00:00:00+0200" type="8"> <name locale="cs_CZ" text="Dokumenty"/> <name locale="en_US" text="Documents"/> <name locale="ru_RU" text="документация"/> <picture id="904369" creation-time="2014-04-17T00:00:00+0200" resource="19d53de9-96c6-44f0-af4b-c67990b640ed"> <name locale="cs_CZ" text="Katalog standardního vybavení"/> <name locale="en_US" text="Product standard equipment"/> <name locale="ru_RU" text="Стандарт продукции оборудование"/> </picture> <picture id="904375" creation-time="2014-04-17T00:00:00+0200" resource="f1e12322-c0a1-4c3a-b053-d8e4b6ec38c6"> <name locale="cs_CZ" text="Ceník"/> <name locale="en_US" text="Pricelist"/> <name locale="ru_RU" text="прайс-лист"/> </picture> </gallery> <gallery id="9043660" creation-time="2014-04-17T00:00:00+0200" modification-time="2014-04-17T00:00:00+0200" type="8"> <name locale="cs_CZ" text="Dokumenty"/> <name locale="en_US" text="Documents"/> <name locale="ru_RU" text="документация"/> <picture id="9043690" creation-time="2014-04-17T00:00:00+0200" resource="19d53de9-96c6-44f0-af4b-c67990b640ed"> <name locale="cs_CZ" text="Katalog standardního vybavení"/> <name locale="en_US" text="Product standard equipment"/> <name locale="ru_RU" text="Стандарт продукции оборудование"/> </picture> <picture id="9043750" creation-time="2014-04-17T00:00:00+0200" resource="f1e12322-c0a1-4c3a-b053-d8e4b6ec38c6"> <name locale="cs_CZ" text="Ceník"/> <name locale="en_US" text="Pricelist"/> <name locale="ru_RU" text="прайс-лист"/> </picture> </gallery> <poi id="49190" gps="50.102125,14.536776" resource="77870039-7ae9-45fe-bb07-956182e69e82"> <name locale="cs_CZ" text="Mateřská školka"/> <name locale="en_US" text="Nursery"/> <name locale="ru_RU" text="Садик"/> </poi> <poi id="49193" gps="50.101602,14.527626" resource="77870039-7ae9-45fe-bb07-956182e69e82"> <name locale="cs_CZ" text="Mateřská školka"/> <name locale="en_US" text="Nursery"/> <name locale="ru_RU" text="Садик"/> </poi> <flat-attribute-type key="flat_internal_id" type="1" required="false" filterable="false" show-in-pricelist="true" pricelist-priority="10" show-in-detail="true" detail-priority="10"> <name locale="cs_CZ" text="ID"/> <name locale="en_US" text="ID"/> <name locale="ru_RU" text="Внутрений номер"/> <name locale="sk_SK" text="ID"/> <name locale="uk_UA" text="Внутрішній номер"/> </flat-attribute-type> <flat-attribute-type key="flat_type" type="6" required="false" filterable="true" show-in-pricelist="false" pricelist-priority="15" show-in-detail="true" detail-priority="1"> <name locale="cs_CZ" text="Typ produktu"/> <name locale="en_US" text="Product type"/> <name locale="ru_RU" text="Тип недвижимости"/> <enum value="1" priority="1"> <label locale="cs_CZ" text="Byt"/> <label locale="en_US" text="Flat"/> <label locale="ru_RU" text="Квартира"/> </enum> </flat-attribute-type> </project> '; $element = new \SimpleXMLElement($xml_source); $project = Project::createFromXML($element); $this->assertInstanceOf('RealPadConnector\\CMS\\Project', $project); $this->assertEquals(35742, $project->getID()); $this->assertEquals('Kejřův park 2', $project->getName()); $this->assertEquals('1', $project->getStage()); $this->assertEquals(array(50.101602, 14.529097), $project->getGPS()); $this->assertEquals(array(50.079582, 14.430068), $project->getGPSCenter()); $this->assertEquals('Praha', $project->getCity()); $this->assertEquals('f1ab126b-7fde-49f9-8a1d-8b8e538e50ff', $project->getPlanResourceID()); $this->assertEquals('1065ed72-cbaa-4c76-81fc-b10dc4d3797b', $project->getIconResourceID()); $this->assertEquals('fc1be882-2d97-488b-babe-54ef7c87cd65', $project->getStandardsResourceID()); $this->assertEquals('9804638e-c737-48b1-802d-088aa78cecfd', $project->getOfflineMapResourceID()); $this->assertTrue($project->isHypoAssistantEnabled()); $this->assertTrue($project->isPublic()); $this->assertTrue($project->isHidden()); $this->assertTrue($project->isDemo()); $this->assertEquals('CZK', $project->getCurrency()); $this->assertEquals(2, count($project)); $this->assertInstanceOf('RealPadConnector\\CMS\\Project\\Building', $project->getBuilding(48383)); $this->assertEquals(4, count($project->getFloors())); $this->assertEquals(8, count($project->getFlats())); $this->assertEquals(array('cs_CZ' => 'Čeština', 'en_US' => 'English', 'ru_RU' => 'Русский'), $project->getLocales()); $this->assertEquals('Čeština', $project->getLocale('cs_CZ')); $this->assertEquals(array('cs_CZ' => 'Kejřův park 2', 'en_US' => 'Kejřův park 2', 'ru_RU' => 'Кейржув парк 2'), $project->getDescriptions()); $this->assertEquals('Кейржув парк 2', $project->getDescription('ru_RU')); $this->assertEquals(3, count($project->getEmailHeaders())); $this->assertEquals(3, count($project->getEmailFooters())); $this->assertEquals(3, count($project->getEmails())); $this->assertEquals(2, count($project->getPOIs())); $this->assertInstanceOf('RealPadConnector\\CMS\\Project\\POI', $project->getPOI(49190)); $this->assertEquals(2, count($project->getPOIs())); $this->assertInstanceOf('RealPadConnector\\CMS\\Project\\POI', $project->getPOI(49190)); $this->assertEquals(2, count($project->getGalleries())); $this->assertEquals(4, count($project->getGalleriesPictures())); $this->assertInstanceOf('RealPadConnector\\CMS\\Project\\Gallery', $project->getGallery(9043660)); $this->assertEquals(2, count($project->getFlatAttributes())); $this->assertInstanceOf('RealPadConnector\\CMS\\Project\\FlatAttribute', $project->getFlatAttribute('flat_internal_id')); }