=== TaxiAppli Réservations ===
Contributors: taxiappli
Tags: taxi, booking, reservations
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 8.0
Stable tag: 1.3.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Booking form and admin dashboard for transmitting ride requests to a TaxiAppli dispatch office.

== Description ==

* Responsive booking form for passenger details, pickup and dropoff addresses, date and time, luggage, passengers, flight number and notes.
* French address suggestions backed by IGN / Géoplateforme without requiring an API key.
* Keyboard, mouse and touch-friendly suggestion selection with manual entry always available.
* Browser autofill support for contact details.
* Each request is stored in a dedicated WordPress table.
* HTTPS server-to-server transmission with a secret key never exposed in the form.
* Unique request references and retry logic to avoid duplicate submissions.
* Admin dashboard with counters, search, filters, detail views, retry actions and CSV export.

Requests are queued for confirmation of availability and fare by the TaxiAppli office. No payment is collected and no driver is assigned automatically.

== Installation ==

1. In WordPress, go to Plugins > Add New > Upload Plugin.
2. Upload the taxiappli-reservations.zip archive and activate the plugin on the relevant site (network activation is not supported).
3. Configure the wordpress_booking_api.php connector on the TaxiAppli server according to the project documentation.
4. In Reservations > Connection and settings, enter the HTTPS URL and the secret key provided by your TaxiAppli office.
5. Set vehicle capacity and address autocomplete preferences.
6. Add the shortcode [taxiappli_reservation] to any WordPress page.

The form remains closed until the URL and secret key are configured.

== External services ==

TaxiAppli: each accepted request is sent to the configured connector URL. The payload includes passenger details, itinerary, date/time, passenger count, luggage count, flight number and notes. The TaxiAppli server must be running the provided connector and have an active subscription for the dispatch office.

IGN / Géoplateforme: if address autocomplete is enabled, after 3 characters and 350 ms of inactivity, the browser sends the search text to https://data.geopf.fr/geocodage/completion/. The service also receives the browser IP address. No TaxiAppli key, name, phone number or email is sent. No call is made when the feature is disabled. Suggestions cover France and may include stations and airports. Manual entry remains available if the service fails.
Documentation: https://cartes.gouv.fr/aide/fr/guides-utilisateur/utiliser-les-services-de-la-geoplateforme/autocompletion/

== Operation ==

Departure dates are interpreted in Europe/Paris, including daylight saving changes. Minimum delay: 15 minutes; horizon: 12 months. Up to five automatic transmission attempts are allowed. Retries depend on WP-Cron; configure a server cron job if needed. An administrator may retry a failed request manually. Old requests that were not received by TaxiAppli should be processed manually by the office.

Data and settings are preserved when the plugin is deactivated or deleted. Manage retention according to your site privacy policy and internal procedures. The secret key is stored in WordPress options; protect backups and access to the database.

== Third-party services ==

This plugin uses the following external services to provide taxi booking functionality.

=== 1. TaxiAppli – Booking request transmission ===

**Service:** TaxiAppli – Taxi dispatch and reservation management.

**Purpose:** Transmit taxi booking requests from the WordPress website to the TaxiAppli dispatch office for processing, availability confirmation and fare quotation.

**Data transmitted:**
* Passenger name
* Phone number
* Email address
* Pickup and destination addresses
* Requested pickup date and time
* Number of passengers and luggage items
* Flight number, if provided
* Additional booking notes
* Unique booking reference

**When data is transmitted:**

Data is transmitted when a visitor submits a valid booking request through the reservation form. Failed transmissions may be retried automatically or manually by an administrator.

**How data is transmitted:**

Requests are transmitted server-to-server over HTTPS to the TaxiAppli connector URL configured by the website administrator. Authentication uses a secret key stored on the WordPress server and never exposed to visitors.

**Service provider:** TaxiAppli

**Service website:** https://taxiappli.com/

Booking information is processed by the TaxiAppli dispatch office responsible for handling the reservation.

=== 2. IGN / Géoplateforme – Address autocomplete ===

**Service:** Géoplateforme address autocomplete, provided by IGN (Institut national de l'information géographique et forestière).

**Purpose:** Suggest French addresses, railway stations and airports while visitors enter pickup or destination locations.

**Service endpoint:**
https://data.geopf.fr/geocodage/completion/

**Data transmitted:**
* Text entered in the pickup or destination address field
* Visitor IP address, as part of the HTTPS connection

No passenger name, phone number, email address or TaxiAppli authentication key is transmitted to this service.

**When data is transmitted:**

Only when address autocomplete is enabled by the website administrator and a visitor enters at least three characters into an address field. Requests are sent after approximately 350 milliseconds of inactivity.

**How data is transmitted:**

The visitor's browser sends HTTPS requests directly to the Géoplateforme autocomplete service.

If autocomplete is disabled, no requests are sent to this service. Visitors can always enter addresses manually.

**Service provider:** IGN – Institut national de l'information géographique et forestière

**Service documentation:**
https://cartes.gouv.fr/aide/fr/guides-utilisateur/utiliser-les-services-de-la-geoplateforme/autocompletion/

**Privacy information:**
https://www.ign.fr/institut/donnees-caractere-personnel

=== Privacy considerations ===

Website administrators are responsible for informing visitors about the processing and transmission of personal data through their website privacy policy.

Booking requests are stored in the WordPress database and transmitted to the configured TaxiAppli dispatch office.

The plugin does not collect online payments and does not automatically assign drivers.

Website administrators should define appropriate data retention periods and ensure that their use of these services complies with applicable privacy regulations, including the GDPR.



== Changelog ==

= 1.2.0 =
Updated booking workflow, admin filtering and improved security and validation handling.

= 1.0.0 =
Initial release: booking form, IGN address suggestions, connector and admin request handling.
