/** * @param array $requestData * @return BuyRequest */ public static function create(array $requestData) { self::validateRequiredFields($requestData); $buyRequest = new BuyRequest(); $buyRequest->setFrom($requestData["from"]); $buyRequest->setTo($requestData["to"]); $buyRequest->setDate(\DateTime::createFromFormat("Ymd", $requestData["date"])); $buyRequest->setSchedule($requestData["schedule"]); $buyRequest->setFolio($requestData["folio"]); $buyRequest->setCustomers(self::createCustomers($requestData["customers"])); return $buyRequest; }
/** * @param \Tufesa\Service\Type\BuyRequest $buyRequest * @return \Tufesa\Service\Type\BuyResponse * @throws \Tufesa\Service\Exceptions\ResponseException */ public function buyTickets(BuyRequest $buyRequest) { $customersXML = ""; foreach ($buyRequest->getCustomers() as $customer) { $customersXML .= self::createCustomerXML($customer) . PHP_EOL; } $requestFormat = <<<REQUEST <?xml version="1.0" encoding="UTF-8"?> <BUSDoc version="1.0"> <request> <from>%s</from> <to>%s</to> <date>%s</date> <schedule>%s</schedule> <folio>%s</folio> <customers>%s</customers> </request> </BUSDoc> REQUEST; $body = sprintf($requestFormat, $buyRequest->getFrom(), $buyRequest->getTo(), $buyRequest->getDate()->format("Ymd"), $buyRequest->getSchedule(), $buyRequest->getFolio(), $customersXML); $headers = ["Content-Type" => "text/xml", "Accept" => "text/json"]; $request = $this->guzzleClient->post("buy", $headers, $body); $this->setLastRequest($request); $response = $request->send(); $this->setLastResponse($response); $resource = $response->json(); if ($resource["_Response"]["resultField"]["_id"] != "00") { throw new ResponseException($resource["_Response"]["resultField"]["_message"]); } $tickets = $resource["_Response"]["dataField"][0]; return BuyResponseFactory::create($tickets); }