PHP

PHP SDK

Installation

You can install the package via composer:

composer require tmrw-life/ntak-guru-php-sdk

Usage: Accommodation

Accommodation

$gateway = \TmrwLife\NtakGuru\Services\Accommodation::setup([
    'accessToken' => '<your-access-token>',
    'isProduction' => false, // default: false
]);
 
$accommodationId = '00000000-0000-0000-0000-0000000'; // Provided by NTAK.guru
 
// Retrieve accommodation
$response = $gateway->show($accommodationId);
 
// Update accommodation
$provider = (new \TmrwLife\NtakGuru\Entities\AccommodationProvider())
    ->setProviderName('Awesome provider Ltd')
    ->setProviderTaxNumber('12345678-1-41');
$response = $gateway->updateProvider($accommodationId, $provider);
 
$urls = (new \TmrwLife\NtakGuru\Entities\AccommodationUrl())
    ->setDailyCloseUrl('https://api.your-pms.com/v1/ntakguru/daily-close')
    ->setCallbackUrl('https://api.your-pms.com/v1/ntakguru/callback');
$response = $gateway->updateUrl($accommodationId, $urls);
 
// Activate accommodation
$response = $gateway->activate($accommodationId);
 
// Deactivate accommodation
$response = $gateway->deactivate($accommodationId);

Certificates

use TmrwLife\NtakGuru\Services\Certificate;
 
$accommodationId = '00000000-0000-0000-0000-0000000'; // Provided by NTAK.guru
 
$gateway = Certificate::setup([
    'accessToken' => '<your-access-token>',
    'isProduction' => false, // default: false
]);
 
// Generate certificate (private key)
$gateway->generate($accommodationId);
 
// Download certificate (certificate request)
$gateway->download($accommodationId);
 
// Upload certificate (certificate)
$gateway->upload($accommodationId, '<content-of-certificate>');
 
// Delete certificate (private key and certificate request)
$gateway->destroy($accommodationId);

Usage: NTAK

Entity builders

You can use the entity builders to create the entities.

We covered the 5 main report type with the entity builders.

NameBuilder
Check-in\TmrwLife\NtakGuru\Entities\Ntak\CheckIn
Check-out\TmrwLife\NtakGuru\Entities\Ntak\CheckOut
Reservation\TmrwLife\NtakGuru\Entities\Ntak\Reservation
Room change\TmrwLife\NtakGuru\Entities\Ntak\RoomChange
Daily close\TmrwLife\NtakGuru\Entities\Ntak\DailyClose

And a few more for properties.

NameBuilder
Guest\TmrwLife\NtakGuru\Entities\Ntak\Guest
Residential unit\TmrwLife\NtakGuru\Entities\Ntak\ResidentialUnit
Checkout Day Sale\TmrwLife\NtakGuru\Entities\Ntak\CheckOutDaySale
Expense\TmrwLife\NtakGuru\Entities\Ntak\Expense
Load\TmrwLife\NtakGuru\Entities\Ntak\Load
Residential unit night\TmrwLife\NtakGuru\Entities\Ntak\ResidentialUnitNight

We also have some enums to help you with the attributes.

NameEnum
Charge item categories\TmrwLife\NtakGuru\Enums\ChargeItemCategory
Countries\TmrwLife\NtakGuru\Enums\NtakCountry
Document types\TmrwLife\NtakGuru\Enums\DocumentType
Genders\TmrwLife\NtakGuru\Enums\Gender
Market segments\TmrwLife\NtakGuru\Enums\MarketSegment
Payment options\TmrwLife\NtakGuru\Enums\PaymentOption
Payment option subtypes\TmrwLife\NtakGuru\Enums\PaymentOptionSubtype
Residential units\TmrwLife\NtakGuru\Enums\ResidentialUnit
Sales channels\TmrwLife\NtakGuru\Enums\SalesChannel
Tourist taxes\TmrwLife\NtakGuru\Enums\TouristTax

For example:

use TmrwLife\NtakGuru\Entities\Ntak\Reservation;
use TmrwLife\NtakGuru\Enums\MarketSegment;
use TmrwLife\NtakGuru\Enums\ResidentialUnitType;
use TmrwLife\NtakGuru\Enums\SalesChannel;
 
$reservation = (new Reservation())
    ->setReservationNumber(23597)
    ->setOccurredAt('2023-04-19 14:00:23')
    ->setReservedAt('2023-04-19 13:46:04')
    ->setCancelled(false)
    ->setNationality('hu')
    ->setArrival('2023-04-21')
    ->setDeparture('2023-04-23')
    ->setSalesChannel(SalesChannel::DIRECT_ONLINE)
    ->setMarketSegment(MarketSegment::BUSINESS_GROUP)
    ->setGrossAmount(98700)
    ->setGuestCount(2)
    ->addBookedResidentialUnits(type: ResidentialUnitType::APARTMENT, capacity: 2);

Sending report

use TmrwLife\NtakGuru\Entities\Ntak\CheckIn;
use TmrwLife\NtakGuru\Entities\Ntak\CheckOut;
use TmrwLife\NtakGuru\Entities\Ntak\Reservation;
use TmrwLife\NtakGuru\Entities\Ntak\RoomChange;
use TmrwLife\NtakGuru\Services\Reporting\Ntak;
 
$accommodationId = '00000000-0000-0000-0000-0000000'; // Provided by NTAK.guru
 
$reporting = Ntak::setup([
    'accessToken' => '<your-access-token>',
    'isProduction' => false, // default: false
]);
 
// Check-in report
$checkIn = (new CheckIn())->setAttribute('...');
$response = $reporting->checkIn($accommodationId, $checkIn);
 
// Check-out report
$checkOut = (new CheckOut())->setAttribute('...');
$response = $reporting->checkOut($accommodationId, $checkOut);
 
// Reservation report
$reservation = (new Reservation())->setAttribute('...');
$response = $reporting->reservation($accommodationId, $reservation);
 
// Room change report
$roomChange = (new RoomChange())->setAttribute('...');
$response = $reporting->roomChange($accommodationId, $roomChange);

Daily close response

In order to respond to the daily close request, you can use the DailyClose entity builder class.

use TmrwLife\NtakGuru\Crypt;
use TmrwLife\NtakGuru\Entities\Ntak\CheckOutDaySale;
use TmrwLife\NtakGuru\Entities\Ntak\DailyClose;
use TmrwLife\NtakGuru\Entities\Ntak\Expense;
use TmrwLife\NtakGuru\Entities\Ntak\Load;
use TmrwLife\NtakGuru\Entities\Ntak\ResidentialUnit;
use TmrwLife\NtakGuru\Entities\Ntak\ResidentialUnitNight;
 
$dailyClose = (new DailyClose())
    ->setClosedDay('2023-04-20')
    ->setResidentialUnits(
        all: 15,
        ooo: 0,
        oos: 2,
        occupied: 10,
        available: 3,
    )
    ->addAfterStayExpense(new Expense())
    ->addAfterStayLoad(new Load())
    ->addCheckOutDaySale(new CheckOutDaySale())
    ->addOtherExpense(new Expense())
    ->addOtherLoad(new Load())
    ->addOutOfOrderResidentialUnit(new ResidentialUnit())
    ->addResidentialUnitNight(new ResidentialUnitNight());
 
return $data; // JSON response to NTAK.guru

Or if the accommodation is no operating

use TmrwLife\NtakGuru\Crypt;
use TmrwLife\NtakGuru\Entities\Ntak\DailyClose;
 
$dailyClose = (new DailyClose())
    ->setClosedDay('2023-04-20')
    ->setResidentialUnits(
        all: $all = $this->faker->randomDigit(),
        ooo: $ooo = $this->faker->randomDigit(),
        oos: $oos = $this->faker->randomDigit(),
        occupied: $occupied = $this->faker->randomDigit(),
        available: $available = $this->faker->randomDigit(),
    )
    ->accommodationNotOperating();
 
return $data; // JSON response to NTAK.guru

Usage: VIZA

Entity builders

You can use the entity builders to create the entities.

We covered the 2 main report type with the entity builders.

NameBuilder
Check-in\TmrwLife\NtakGuru\Entities\Viza\CheckIn
Check-out\TmrwLife\NtakGuru\Entities\Viza\CheckOut

And a few more for properties.

NameBuilder
Guest\TmrwLife\NtakGuru\Entities\Viza\Guest
Guest Document\TmrwLife\NtakGuru\Entities\Viza\GuestDocument

Sending report

use TmrwLife\NtakGuru\Entities\Ntak\CheckIn;
use TmrwLife\NtakGuru\Entities\Ntak\CheckOut;
use TmrwLife\NtakGuru\Services\Reporting\Viza;
 
$accommodationId = '00000000-0000-0000-0000-0000000'; // Provided by NTAK.guru
 
$reporting = Viza::setup([
    'accessToken' => '<your-access-token>',
    'isProduction' => false, // default: false
]);
 
// Check-in report
$checkIn = (new CheckIn())->setAttribute('...');
$response = $reporting->checkIn($accommodationId, $checkIn);
 
// Check-out report
$checkOut = (new CheckOut())->setAttribute('...');
$response = $reporting->checkOut($accommodationId, $checkOut);