User API guide/da: Difference between revisions

Created page with "Så det første, du skal vise, er listen over tjenester og listen over medarbejdere. Hent disse data ved hjælp af metoderne getEventList og getUnitList. De returnerer begge en liste med komplette oplysninger om hvert element i listen, så du har mange muligheder for at vise tjenester og medarbejdere på din side. For at filtrere medarbejdere skal du bruge egenskaben unit_map i tjenestelisten, som indeholder oplysninger om medarbejdere, der kan levere den valgte tjeneste..."
Tags: Mobile edit Mobile web edit
Created page with "<br><br>"
 
(6 intermediate revisions by the same user not shown)
Line 147: Line 147:
<br><br>
<br><br>


<div lang="en" dir="ltr" class="mw-content-ltr">
Det næste trin for en kunde er at vælge en dato og et tidspunkt for sin service. Vi har brugt en Bootstrap-datovælger i API-brugseksemplet, men du kan også bruge denne eller en anden kalender. For at indstille din kalenders første dato skal du bruge metoden getFirstWorkingDay. Den kan tage medarbejder-id som parameter og returnerer den næste dato, hvor den valgte medarbejder (eller en hvilken som helst medarbejder i virksomheden som standard) er tilgængelig for booking. For at vise tidsintervaller inden for en valgt dato skal du bruge metoderne getWorkCalendar og getStartTimeMatrix. Den første metode giver dig oplysninger om arbejdsdagens start- og sluttidspunkt samt om fridage. Den anden returnerer listen over tidsintervaller, der kan bookes for en bestemt dato.
The next step to a client is to pick a date and time of his service. We've used a Bootstrap date-picker in API-usage example, you can also use this or any other calendar. To set your calendar first date use getFirstWorkingDay method. It can take employee id as a parameter and returns the next date when the selected employee (or any employee in the company by default) is avaiable for booking. To show time slots inside a selected date you need getWorkCalendar and getStartTimeMatrix methods. The first method give you an information about working day start and end time, and about day-offs. And the second one returns the list of time-slots which can be booked for a certain date.
<br><br>
<br><br>
'''Code example of getting work days info'''
'''Kodeeksempel på hentning af oplysninger om arbejdsdage'''
<br><br>
<br><br>
</div>


  <div lang="en" dir="ltr" class="mw-content-ltr">
  <nowiki>$år = 2015;
<nowiki>$year = 2015;
$måned = 3; // marts
$month = 3; // March
$performerId = 1; // Kan være null  
$performerId = 1; // Can be null  
$workDaysInfo = $client-&gt;getWorkCalendar($år, $måned, $performerId);
$workDaysInfo = $client->getWorkCalendar($year, $month, $performerId);
// returnerer array(
// returns array(
//    '2015-03-01' =&gt; array('fra' =&gt; '09:00:00', 'to' =&gt; '18:00:00', 'is_day_off' =&gt; 0),
//    '2015-03-01' => array('from' => '09:00:00', 'to' => '18:00:00', 'is_day_off' => 0),
//    '2015-03-02' =&gt; array('from' =&gt; '09:00:00', 'to' =&gt; '18:00:00', 'is_day_off' =&gt; 0),
//    '2015-03-02' => array('from' => '09:00:00', 'to' => '18:00:00', 'is_day_off' => 0),
//    ...
//    ...
//);</nowiki>
//);</nowiki>
<br><br>
<br><br>
'''Code example of getting start time matrix'''
'''Kodeeksempel på hentning af starttidsmatrix'''
<br><br>
<br><br>
  <nowiki>$dateFrom = '2015-03-03';
  <nowiki>$dateFrom = '2015-03-03';
Line 172: Line 169:
$performerId = 1;
$performerId = 1;
$qty = 1;
$qty = 1;
$availableTime = $client->getStartTimeMatrix($dateFrom, $dateTo, $serviceId, $performerId, $qty);
$availableTime = $client-&gt;getStartTimeMatrix($dateFrom, $dateTo, $serviceId, $performerId, $qty);
// returns array(
// returnerer array(
//    '2015-03-03' => array('09:00:00', '09:30:00', '10:00:00', ....),
//    '2015-03-03' =&gt; array('09:00:00', '09:30:00', '10:00:00', ....),
//    '2015-03-04' => array('09:00:00', '09:30:00', '10:00:00', ....),
//    '2015-03-04' =&gt; array('09:00:00', '09:30:00', '10:00:00', ....),
//);</nowiki>
//);</nowiki>
<br><br>
<br><br>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
En anden nyttig metode, du muligvis har brug for, er calculateEndTime. Hver service kan have sin egen varighed, og dine medarbejdere har muligvis forskellige arbejdsplaner fra dag til dag. Ved hjælp af denne metode kan du vise en kunde den korrekte slutdato og -tid for den service, han har reserveret.
Another usefull method you may need is calculateEndTime. Each service can have its own duration, also your company's employees possible have different work schedule form day to day. So using this method you can show to a client an end date and time of the service he've booked in a correct way.
<br><br>
<br><br>
'''Code example of calculating booking end time'''
'''Kodeeksempel på beregning af bookingens sluttidspunkt'''
<br><br>
<br><br>
  <nowiki>$startDateTime = '2015-03-03 09:00:00';
  <nowiki>$startDateTime = '2015-03-03 09:00:00';
$serviceId = 1;
$serviceId = 1;
$performerId = 1;
$performerId = 1;
$availableTime = $client->calculateEndTime($startDateTime, $serviceId, $performerId);
$availableTime = $client-&gt;calculateEndTime($startDateTime, $serviceId, $performerId);
// returns '2015-03-03 10:00:00'
// returnerer '2015-03-03 10:00:00'
</nowiki>
</nowiki>
<br><br>
<br><br>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Når en klient klikker på knappen "Bekræft booking", skal du kalde book-metoden. Dette er den vigtigste funktion, der udfører alle nødvendige valideringer og registrerer en ny booking i Simplybook-systemet. Den tager oplysninger om bookingen, klientdata som navn og telefonnummer samt nogle yderligere parametre. Se alle parametre for denne metode i [https://simplybook.me/api/doc listen over API-funktioner]. Book-metodens svar indeholder en unik kode og andre detaljer om den nye booking eller en liste over fejl, hvis der opstod problemer, så du kan bruge disse oplysninger til at vise bookingsresultatet til en kunde på en praktisk og intuitiv måde.
When a client clicks confirm booking button you have to call book method. This is the main function which performs all necessary validations and registers a new booking in Simplybook system. It takes information about booking, client data like name and phone and some additional params. See all params descriptions of this method in [https://simplybook.me/api/doc API functions list]. The book method responce contains an uniqe code and other details of the new booking or the list of errors if some problems occured, so you can use this information to show booking result to a client in convinient and intuitive way.
<br><br><br>
<br><br><br>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
= '''BRUG AF API-HEMMELIG NØGLE''' =
='''USING OF API SECRET KEY'''=
<br><br>
<br><br>
In some cases the book method may require the confirmation, e.g. if your accept payments from clients you confirm booking only after the payment is already came. The Simplybook API confirmBookng method takes booking-id and secure signature as params (another method which requires secure signature is cancelBookng). For the secure signature generation your secret API-key should be used. See how it can be done in the example below. You can find the secret key at admin interface under 'Settings' link of API Custom Feature in 'Custom Features' list.
I nogle tilfælde kan bogmetoden kræve bekræftelse, f.eks. hvis du accepterer betalinger fra kunder, bekræfter du først bookingen, når betalingen er modtaget. Simplybook API-metoden confirmBookng tager booking-id og sikker signatur som parametre (en anden metode, der kræver sikker signatur, er cancelBookng). Til generering af sikker signatur skal din hemmelige API-nøgle bruges. Se hvordan det kan gøres i eksemplet nedenfor. Du finder den hemmelige nøgle i admin-grænsefladen under linket 'Indstillinger' i API Custom Feature i listen 'Custom Features'.
<br><br>
<br><br>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
'''Kodeeksempel på servicebooking og bekræftelse ved hjælp af hemmelig API-nøgle'''
'''Code example of service booking and its confirmation using secret API key'''
<br><br>
<br><br>
  <nowiki>$additionalFields = array(
  <nowiki>$additionalFields = array(
'6740d3bce747107ddb9a789cbb78abf3' => 'value1',  
'6740d3bce747107ddb9a789cbb78abf3' =&gt; 'value1',  
'b0657bafaec7a2c9800b923f959f8163' => 'value2'
'b0657bafaec7a2c9800b923f959f8163' =&gt; 'value2'
);
);
$clientData = array(
$clientData = array(
'name' => 'Client name',
'name' =&gt; 'Kundens navn',
'email' => 'client@email.com',
'email' =&gt; 'client@email.com',
'phone' => '+13152108338'
'phone' =&gt; '+13152108338'
);
);
$bookingsInfo = $client->book($eventId, $unitId, $date, $time, $clientData, $additionalFields);
$bookingsInfo = $client-&gt;book($eventId, $unitId, $date, $time, $clientData, $additionalFields);
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
if ($bookingsInfo-&gt;require_confirm) {
if ($bookingsInfo->require_confirm) {
foreach ($bookingsInfo-&gt;bookings as $booking) {
  foreach ($bookingsInfo->bookings as $booking) {
$sign = md5($booking-&gt;id . $booking-&gt;hash . YOUR_API_SECRET_KEY);
  $sign = md5($booking->id . $booking->hash . YOUR_API_SECRET_KEY);
$result = $client-&gt;confirmBooking($booking-&gt;id, $sign);
  $result = $client->confirmBooking($booking->id, $sign);
echo '
  echo '
Bekræft resultat
Confirm result
';
';
  var_dump($result);
var_dump($result);
    }
}
}</nowiki>
}</nowiki>
<br><br>
<br><br>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
'''Kodeeksempel på hentning af indtastningsformularer'''
'''Code example of getting intake forms'''
<br><br>
<br><br>
  <nowiki>$fields = $client->getAdditionalFields($eventId);
  <nowiki>$fields = $client-&gt;getAdditionalFields($eventId);
// returns - array(array(
// returnerer - array(array(
// 'name' => 'b0657bafaec7a2c9800b923f959f8163', - field name
// 'name' =&gt; 'b0657bafaec7a2c9800b923f959f8163', - feltnavn
// 'title' => 'Test digits', - field title
// 'title' =&gt; 'Test digits', - feltnavn
// 'type' => 'digits', - field type
// 'type' =&gt; 'digits', - felttype
// 'values' => null, - available values for select field type
// 'values' =&gt; null, - tilgængelige værdier for valgfeltstype
// 'default' => null, - default value for field
// 'default' =&gt; null, - standardværdi for felt
// 'is_null' => null, - is filed nullable
// 'is_null' =&gt; null, - er feltet nullable
// 'on_main_page' => 1,  
// 'on_main_page' =&gt; 1,  
// 'pos' => 1, - field position
// 'pos' =&gt; 1, - feltposition
// 'value' => null
// 'value' =&gt; null
// )), ...)</nowiki>
// )), ...)</nowiki>
<br><br><br>
<br><br><br>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
= '''SIMPLYBOOK CUSTOM-FUNKTIONER''' =
='''SIMPLYBOOK CUSTOM FEATURES'''=
<br><br>
<br><br>
If your company specific requires some additional functionality you can activate some of our additional Custom Features. The complete Custom Features list with detailed description is avaiable in your admin interface under the 'Custom Feature' link. After the necessary Custom Feature is enabled the corresponding API methods will be activated so you can use them in your code.
Hvis din virksomhed har behov for yderligere funktionalitet, kan du aktivere nogle af vores ekstra tilpassede funktioner. Den komplette liste over tilpassede funktioner med detaljeret beskrivelse findes i din administrationsgrænseflade under linket 'Tilpassede funktioner'. Når den nødvendige tilpassede funktion er aktiveret, aktiveres de tilhørende API-metoder, så du kan bruge dem i din kode.
<br><br><br>
<br><br><br>
='''BOOKING FUNCTIONALITY CODEFLOW'''=
= '''KODEFLOW FOR BOOKINGFUNKTIONER''' =
<br><br>
<br><br>
Authorize in Simplybook API using '''loginClient.getToken(companyLogin, apiKey);''' function.
Autoriser i Simplybook API ved hjælp af funktionen '''loginClient.getToken(companyLogin, apiKey);'''.
</div>




<div lang="en" dir="ltr" class="mw-content-ltr">
Kontroller, om servicekategorier Custom Feature er aktiveret ved hjælp af [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("event_category")]. Hvis ja, vis listen over kategorier [https://simplybook.me/en/api/doc#getCategoriesList getCategoriesList()].
Check if Service categories Custom Feature is activated by [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("event_category")]  if yes then display list of categories [https://simplybook.me/en/api/doc#getCategoriesList getCategoriesList()].
</div>




<div lang="en" dir="ltr" class="mw-content-ltr">
en liste over tjenester (begivenheder) og udøvere (enheder) ved hjælp af funktionerne [https://simplybook.me/en/api/doc#getEventList getEventList()] og [https://simplybook.me/en/api/doc#getUnitList getUnitList()]. Hvis arrayet "unit_map" er tilgængeligt for en tjeneste, betyder det, at denne tjeneste kun kan leveres af de angivne udøvere.
Get list of services (events) and performers (units) using [https://simplybook.me/en/api/doc#getEventList getEventList()] and [https://simplybook.me/en/api/doc#getUnitList getUnitList()] functions. If "unit_map" array is available for service it means this service can be provided by given performers only.
</div>






<div lang="en" dir="ltr" class="mw-content-ltr">
Hvis en hvilken som helst medarbejderudvælger-tilføjelsesfunktion er aktiveret [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("any_unit")] og der ikke er angivet nogen særlig varighed for serviceudbyder-parret i "unit_map"-arrayet, skal brugeren have mulighed for at vælge en hvilken som helst udbyder eller vælge udbyder manuelt. Manuel udvælgelse af udbydere bør dog ikke være mulig, hvis [https://simplybook.me/en/api/doc#getCompanyParam getCompanyParam("any_unit__hide_other_units")] er aktiveret.
If Any Employee Selector Custom Feature is activated [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("any_unit")] and no special duration is set for service-performer pair in "unit_map" array then user should be allowed to select Any provider option or choose provider manually. But manual selection of performers should not be possible if [https://simplybook.me/en/api/doc#getCompanyParam getCompanyParam("any_unit__hide_other_units")] is enabled.
</div>




<div lang="en" dir="ltr" class="mw-content-ltr">
Brug [https://simplybook.me/en/api/doc#getStartTimeMatrix getStartTimeMatrix ($from som aktuel dato, $to som aktuel dato, $eventId, $unitId, $count som valgt deltagerantal)] for at få tilgængelige tidsintervaller for den angivne dato. '''$unitId''' skal være null, hvis indstillingen Alle medarbejdere er valgt.
Use [https://simplybook.me/en/api/doc#getStartTimeMatrix getStartTimeMatrix ($from as current date, $to as current date, $eventId, $unitId, $count as selected participants value )] to get available timeslots for given date. '''$unitId''' should be null if Any employee option is selected.
</div>




<div lang="en" dir="ltr" class="mw-content-ltr">
Hvis Any Employee-vælgeren er aktiv, og Any Employee er valgt, skal du kalde [https://simplybook.me/en/api/doc#getAvailableUnits getAvailableUnits($eventId, $dateTime, $count)] for at få tilgængelige $unitId
If Any Employee selector is active and Any employee was selected call [https://simplybook.me/en/api/doc#getAvailableUnits getAvailableUnits($eventId, $dateTime, $count)] to get available $unitId
</div>






<div lang="en" dir="ltr" class="mw-content-ltr">
Hvis den tilpassede funktion Intake Forms er aktiveret, skal [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("event_field")] kalde funktionen [https://simplybook.me/en/api/doc#getAdditionalFields getAdditionalFields($eventId)] for at hente en liste over felter, som kunden skal udfylde.
If Intake Forms Custom Feature is activated [https://simplybook.me/en/api/doc#isPluginActivated isPluginActivated("event_field")] call [https://simplybook.me/en/api/doc#getAdditionalFields getAdditionalFields($eventId)] function to get list of fields for client to fill.
</div>




<div lang="en" dir="ltr" class="mw-content-ltr">
Ring [https://simplybook.me/en/api/doc#book til book($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId)] for at foretage en reservation.
Call [https://simplybook.me/en/api/doc#book book($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId)] to make a booking.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<br><br>
<br><br>
</div>