Compare commits
33 commits
Author | SHA1 | Date | |
---|---|---|---|
b311a9b59e | |||
b06d335271 | |||
98a37bde1d | |||
|
a02a6118b6 | ||
|
b192b437e0 | ||
|
acafb0da48 | ||
|
fa6f685e13 | ||
|
ac7ca85b88 | ||
|
cd768bda85 | ||
|
02162ee232 | ||
|
c7f2e7f831 | ||
26d909a19b | |||
42c707cea3 | |||
|
cd6280b97d | ||
|
aee7bb80c0 | ||
|
7a8832d311 | ||
|
5a1f604e3d | ||
|
6a1b2b28f1 | ||
|
e0a1282338 | ||
|
c5eafc9552 | ||
|
87cb1e190b | ||
|
10383d407b | ||
1e46fe94ac | |||
890f265bb9 | |||
a2813d235c | |||
c8e8fb64f1 | |||
d7ff69480a | |||
6236546d54 | |||
649f31e9b8 | |||
212b6b732d | |||
514e2ebc18 | |||
d08d1459e2 | |||
f495df0488 |
69 changed files with 825 additions and 685 deletions
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"php.version": "8.2"
|
||||||
|
}
|
|
@ -5,11 +5,11 @@
|
||||||
| App Configuration
|
| App Configuration
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
|
||||||
| Declare some of the global config values of Easy!Appointments.
|
| Declare some of the global config values of MaketRandevu.
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$config['version'] = '1.5.0-dev.4'; // This must be changed manually.
|
$config['version'] = '1.5.0-RC2'; // This must be changed manually.
|
||||||
|
|
||||||
$config['url'] = Config::BASE_URL;
|
$config['url'] = Config::BASE_URL;
|
||||||
|
|
||||||
|
|
|
@ -94,13 +94,13 @@ $languages = [
|
||||||
|
|
||||||
$config['language_codes'] = $languages;
|
$config['language_codes'] = $languages;
|
||||||
|
|
||||||
$language_code = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) : 'en';
|
$language_code = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) : 'tr';
|
||||||
|
|
||||||
$config['language'] = isset($_SERVER['HTTP_ACCEPT_LANGUAGE'], $languages[$language_code])
|
$config['language'] = isset($_SERVER['HTTP_ACCEPT_LANGUAGE'], $languages[$language_code])
|
||||||
? $languages[$language_code]
|
? $languages[$language_code]
|
||||||
: Config::LANGUAGE;
|
: Config::LANGUAGE;
|
||||||
|
|
||||||
$config['language_code'] = array_search($config['language'], $languages) ?: 'en';
|
$config['language_code'] = array_search($config['language'], $languages) ?: 'tr';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
@ -151,7 +151,7 @@ $config['enable_hooks'] = TRUE;
|
||||||
| http://codeigniter.com/user_guide/general/creating_libraries.html
|
| http://codeigniter.com/user_guide/general/creating_libraries.html
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
$config['subclass_prefix'] = 'EA_';
|
$config['subclass_prefix'] = 'EA_'; //TODO create new MAKET_ prefix in future
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
// Example: $config['smtp_host'] = 'smtp.gmail.com';
|
// Example: $config['smtp_host'] = 'smtp.gmail.com';
|
||||||
// @link https://codeigniter.com/user_guide/libraries/email.html
|
// @link https://codeigniter.com/user_guide/libraries/email.html
|
||||||
|
|
||||||
$config['useragent'] = 'Easy!Appointments';
|
$config['useragent'] = 'MaketRandevu';
|
||||||
$config['protocol'] = 'mail'; // or 'smtp'
|
$config['protocol'] = 'mail'; // or 'smtp'
|
||||||
$config['mailtype'] = 'html'; // or 'text'
|
$config['mailtype'] = 'html'; // or 'text'
|
||||||
// $config['smtp_debug'] = '0'; // or '1'
|
// $config['smtp_debug'] = '0'; // or '1'
|
||||||
|
|
|
@ -52,7 +52,7 @@ class Installation extends EA_Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Installs Easy!Appointments on the server.
|
* Installs MAKET Randevu on the server.
|
||||||
*/
|
*/
|
||||||
public function perform()
|
public function perform()
|
||||||
{
|
{
|
||||||
|
@ -67,7 +67,7 @@ class Installation extends EA_Controller
|
||||||
$this->instance->migrate();
|
$this->instance->migrate();
|
||||||
|
|
||||||
// Insert admin
|
// Insert admin
|
||||||
$admin['timezone'] = 'UTC';
|
$admin['timezone'] = 'Europe/Istanbul'; // REVIEW is it working properly ?!
|
||||||
$admin['settings']['username'] = $admin['username'];
|
$admin['settings']['username'] = $admin['username'];
|
||||||
$admin['settings']['password'] = $admin['password'];
|
$admin['settings']['password'] = $admin['password'];
|
||||||
$admin['settings']['notifications'] = true;
|
$admin['settings']['notifications'] = true;
|
||||||
|
@ -92,8 +92,8 @@ class Installation extends EA_Controller
|
||||||
|
|
||||||
// Service
|
// Service
|
||||||
$service_id = $this->services_model->save([
|
$service_id = $this->services_model->save([
|
||||||
'name' => 'Service',
|
'name' => 'Hizmet İsmini Buraya Girin',
|
||||||
'duration' => '30',
|
'duration' => '60',
|
||||||
'price' => '0',
|
'price' => '0',
|
||||||
'currency' => '',
|
'currency' => '',
|
||||||
'availabilities_type' => 'flexible',
|
'availabilities_type' => 'flexible',
|
||||||
|
@ -102,13 +102,13 @@ class Installation extends EA_Controller
|
||||||
|
|
||||||
// Provider
|
// Provider
|
||||||
$this->providers_model->save([
|
$this->providers_model->save([
|
||||||
'first_name' => 'Jane',
|
'first_name' => 'Hizmet Sağlayıcı İsmini Buraya Girin',
|
||||||
'last_name' => 'Doe',
|
'last_name' => 'Hizmet Sağlayıcı Soyismini Buraya Girin',
|
||||||
'email' => 'jane@example.org',
|
'email' => 'hizmet_saglayici_mail@example.org',
|
||||||
'phone_number' => '+1 (000) 000-0000',
|
'phone_number' => '+90 (000) 000-0000',
|
||||||
'services' => [$service_id],
|
'services' => [$service_id],
|
||||||
'settings' => [
|
'settings' => [
|
||||||
'username' => 'janedoe',
|
'username' => 'ilkhizmetsaglayici',
|
||||||
'password' => random_string(),
|
'password' => random_string(),
|
||||||
'working_plan' => setting('company_working_plan'),
|
'working_plan' => setting('company_working_plan'),
|
||||||
'notifications' => true,
|
'notifications' => true,
|
||||||
|
@ -121,10 +121,10 @@ class Installation extends EA_Controller
|
||||||
|
|
||||||
// Customer
|
// Customer
|
||||||
$this->customers_model->save([
|
$this->customers_model->save([
|
||||||
'first_name' => 'James',
|
'first_name' => 'Örnek Müşteri İsmi',
|
||||||
'last_name' => 'Doe',
|
'last_name' => 'Örnek Müşteri Soyismi',
|
||||||
'email' => 'james@example.org',
|
'email' => 'ornek_musteri@example.org',
|
||||||
'phone_number' => '+1 (000) 000-0000',
|
'phone_number' => '+90 (000) 000-0000',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
json_response([
|
json_response([
|
||||||
|
|
|
@ -37,7 +37,7 @@ class Admins_api_v1 extends EA_Controller
|
||||||
/**
|
/**
|
||||||
* Get an admin collection.
|
* Get an admin collection.
|
||||||
*/
|
*/
|
||||||
public function index()
|
public function index(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$keyword = $this->api->request_keyword();
|
$keyword = $this->api->request_keyword();
|
||||||
|
@ -79,9 +79,17 @@ class Admins_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int|null $id Admin ID.
|
* @param int|null $id Admin ID.
|
||||||
*/
|
*/
|
||||||
public function show(int $id = null)
|
public function show(int $id = null): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
$occurrences = $this->admins_model->get(['id' => $id]);
|
||||||
|
|
||||||
|
if (empty($occurrences)) {
|
||||||
|
response('', 404);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$fields = $this->api->request_fields();
|
$fields = $this->api->request_fields();
|
||||||
|
|
||||||
$with = $this->api->request_with();
|
$with = $this->api->request_with();
|
||||||
|
@ -98,12 +106,6 @@ class Admins_api_v1 extends EA_Controller
|
||||||
$this->admins_model->load($admin, $with);
|
$this->admins_model->load($admin, $with);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$admin) {
|
|
||||||
response('', 404);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
json_response($admin);
|
json_response($admin);
|
||||||
} catch (Throwable $e) {
|
} catch (Throwable $e) {
|
||||||
json_exception($e);
|
json_exception($e);
|
||||||
|
@ -113,7 +115,7 @@ class Admins_api_v1 extends EA_Controller
|
||||||
/**
|
/**
|
||||||
* Store a new admin.
|
* Store a new admin.
|
||||||
*/
|
*/
|
||||||
public function store()
|
public function store(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$admin = request();
|
$admin = request();
|
||||||
|
@ -145,7 +147,7 @@ class Admins_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int $id Admin ID.
|
* @param int $id Admin ID.
|
||||||
*/
|
*/
|
||||||
public function update(int $id)
|
public function update(int $id): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$occurrences = $this->admins_model->get(['id' => $id]);
|
$occurrences = $this->admins_model->get(['id' => $id]);
|
||||||
|
@ -179,7 +181,7 @@ class Admins_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int $id Admin ID.
|
* @param int $id Admin ID.
|
||||||
*/
|
*/
|
||||||
public function destroy(int $id)
|
public function destroy(int $id): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$occurrences = $this->admins_model->get(['id' => $id]);
|
$occurrences = $this->admins_model->get(['id' => $id]);
|
||||||
|
|
|
@ -43,7 +43,7 @@ class Appointments_api_v1 extends EA_Controller
|
||||||
/**
|
/**
|
||||||
* Get an appointment collection.
|
* Get an appointment collection.
|
||||||
*/
|
*/
|
||||||
public function index()
|
public function index(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$keyword = $this->api->request_keyword();
|
$keyword = $this->api->request_keyword();
|
||||||
|
@ -143,7 +143,7 @@ class Appointments_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @deprecated Since 1.5
|
* @deprecated Since 1.5
|
||||||
*/
|
*/
|
||||||
private function aggregates(array &$appointment)
|
private function aggregates(array &$appointment): void
|
||||||
{
|
{
|
||||||
$aggregates = request('aggregates') !== null;
|
$aggregates = request('aggregates') !== null;
|
||||||
|
|
||||||
|
@ -171,9 +171,17 @@ class Appointments_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int|null $id Appointment ID.
|
* @param int|null $id Appointment ID.
|
||||||
*/
|
*/
|
||||||
public function show(int $id = null)
|
public function show(int $id = null): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
$occurrences = $this->appointments_model->get(['id' => $id]);
|
||||||
|
|
||||||
|
if (empty($occurrences)) {
|
||||||
|
response('', 404);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$fields = $this->api->request_fields();
|
$fields = $this->api->request_fields();
|
||||||
|
|
||||||
$with = $this->api->request_with();
|
$with = $this->api->request_with();
|
||||||
|
@ -190,12 +198,6 @@ class Appointments_api_v1 extends EA_Controller
|
||||||
$this->appointments_model->load($appointment, $with);
|
$this->appointments_model->load($appointment, $with);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$appointment) {
|
|
||||||
response('Not Found', 404);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
json_response($appointment);
|
json_response($appointment);
|
||||||
} catch (Throwable $e) {
|
} catch (Throwable $e) {
|
||||||
json_exception($e);
|
json_exception($e);
|
||||||
|
@ -205,7 +207,7 @@ class Appointments_api_v1 extends EA_Controller
|
||||||
/**
|
/**
|
||||||
* Store a new appointment.
|
* Store a new appointment.
|
||||||
*/
|
*/
|
||||||
public function store()
|
public function store(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$appointment = request();
|
$appointment = request();
|
||||||
|
@ -295,7 +297,7 @@ class Appointments_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int $id Appointment ID.
|
* @param int $id Appointment ID.
|
||||||
*/
|
*/
|
||||||
public function update(int $id)
|
public function update(int $id): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$occurrences = $this->appointments_model->get(['id' => $id]);
|
$occurrences = $this->appointments_model->get(['id' => $id]);
|
||||||
|
@ -331,7 +333,7 @@ class Appointments_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int $id Appointment ID.
|
* @param int $id Appointment ID.
|
||||||
*/
|
*/
|
||||||
public function destroy(int $id)
|
public function destroy(int $id): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$occurrences = $this->appointments_model->get(['id' => $id]);
|
$occurrences = $this->appointments_model->get(['id' => $id]);
|
||||||
|
|
|
@ -54,7 +54,7 @@ class Availabilities_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* If no date parameter is provided then the current date will be used.
|
* If no date parameter is provided then the current date will be used.
|
||||||
*/
|
*/
|
||||||
public function get()
|
public function get(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$provider_id = request('providerId');
|
$provider_id = request('providerId');
|
||||||
|
|
|
@ -35,7 +35,7 @@ class Customers_api_v1 extends EA_Controller
|
||||||
/**
|
/**
|
||||||
* Get a customer collection.
|
* Get a customer collection.
|
||||||
*/
|
*/
|
||||||
public function index()
|
public function index(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$keyword = $this->api->request_keyword();
|
$keyword = $this->api->request_keyword();
|
||||||
|
@ -77,9 +77,17 @@ class Customers_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int|null $id Customer ID.
|
* @param int|null $id Customer ID.
|
||||||
*/
|
*/
|
||||||
public function show(int $id = null)
|
public function show(int $id = null): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
$occurrences = $this->customers_model->get(['id' => $id]);
|
||||||
|
|
||||||
|
if (empty($occurrences)) {
|
||||||
|
response('', 404);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$fields = $this->api->request_fields();
|
$fields = $this->api->request_fields();
|
||||||
|
|
||||||
$customer = $this->customers_model->find($id);
|
$customer = $this->customers_model->find($id);
|
||||||
|
@ -90,12 +98,6 @@ class Customers_api_v1 extends EA_Controller
|
||||||
$this->customers_model->only($customer, $fields);
|
$this->customers_model->only($customer, $fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$customer) {
|
|
||||||
response('', 404);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
json_response($customer);
|
json_response($customer);
|
||||||
} catch (Throwable $e) {
|
} catch (Throwable $e) {
|
||||||
json_exception($e);
|
json_exception($e);
|
||||||
|
@ -105,7 +107,7 @@ class Customers_api_v1 extends EA_Controller
|
||||||
/**
|
/**
|
||||||
* Store a new customer.
|
* Store a new customer.
|
||||||
*/
|
*/
|
||||||
public function store()
|
public function store(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$customer = request();
|
$customer = request();
|
||||||
|
@ -133,7 +135,7 @@ class Customers_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int $id Customer ID.
|
* @param int $id Customer ID.
|
||||||
*/
|
*/
|
||||||
public function update(int $id)
|
public function update(int $id): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$occurrences = $this->customers_model->get(['id' => $id]);
|
$occurrences = $this->customers_model->get(['id' => $id]);
|
||||||
|
@ -167,7 +169,7 @@ class Customers_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int $id Customer ID.
|
* @param int $id Customer ID.
|
||||||
*/
|
*/
|
||||||
public function destroy(int $id)
|
public function destroy(int $id): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$occurrences = $this->customers_model->get(['id' => $id]);
|
$occurrences = $this->customers_model->get(['id' => $id]);
|
||||||
|
|
|
@ -35,7 +35,7 @@ class Providers_api_v1 extends EA_Controller
|
||||||
/**
|
/**
|
||||||
* Get a provider collection.
|
* Get a provider collection.
|
||||||
*/
|
*/
|
||||||
public function index()
|
public function index(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$keyword = $this->api->request_keyword();
|
$keyword = $this->api->request_keyword();
|
||||||
|
@ -77,9 +77,17 @@ class Providers_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int|null $id Provider ID.
|
* @param int|null $id Provider ID.
|
||||||
*/
|
*/
|
||||||
public function show(int $id = null)
|
public function show(int $id = null): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
$occurrences = $this->providers_model->get(['id' => $id]);
|
||||||
|
|
||||||
|
if (empty($occurrences)) {
|
||||||
|
response('', 404);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$fields = $this->api->request_fields();
|
$fields = $this->api->request_fields();
|
||||||
|
|
||||||
$with = $this->api->request_with();
|
$with = $this->api->request_with();
|
||||||
|
@ -96,12 +104,6 @@ class Providers_api_v1 extends EA_Controller
|
||||||
$this->providers_model->load($provider, $with);
|
$this->providers_model->load($provider, $with);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$provider) {
|
|
||||||
response('', 404);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
json_response($provider);
|
json_response($provider);
|
||||||
} catch (Throwable $e) {
|
} catch (Throwable $e) {
|
||||||
json_exception($e);
|
json_exception($e);
|
||||||
|
@ -111,7 +113,7 @@ class Providers_api_v1 extends EA_Controller
|
||||||
/**
|
/**
|
||||||
* Store a new provider.
|
* Store a new provider.
|
||||||
*/
|
*/
|
||||||
public function store()
|
public function store(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$provider = request();
|
$provider = request();
|
||||||
|
@ -151,7 +153,7 @@ class Providers_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int $id Provider ID.
|
* @param int $id Provider ID.
|
||||||
*/
|
*/
|
||||||
public function update(int $id)
|
public function update(int $id): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$occurrences = $this->providers_model->get(['id' => $id]);
|
$occurrences = $this->providers_model->get(['id' => $id]);
|
||||||
|
@ -185,7 +187,7 @@ class Providers_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int $id Provider ID.
|
* @param int $id Provider ID.
|
||||||
*/
|
*/
|
||||||
public function destroy(int $id)
|
public function destroy(int $id): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$occurrences = $this->providers_model->get(['id' => $id]);
|
$occurrences = $this->providers_model->get(['id' => $id]);
|
||||||
|
|
|
@ -35,7 +35,7 @@ class Secretaries_api_v1 extends EA_Controller
|
||||||
/**
|
/**
|
||||||
* Get a secretary collection.
|
* Get a secretary collection.
|
||||||
*/
|
*/
|
||||||
public function index()
|
public function index(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$keyword = $this->api->request_keyword();
|
$keyword = $this->api->request_keyword();
|
||||||
|
@ -77,9 +77,17 @@ class Secretaries_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int|null $id Secretary ID.
|
* @param int|null $id Secretary ID.
|
||||||
*/
|
*/
|
||||||
public function show(int $id = null)
|
public function show(int $id = null): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
$occurrences = $this->secretaries_model->get(['id' => $id]);
|
||||||
|
|
||||||
|
if (empty($occurrences)) {
|
||||||
|
response('', 404);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$fields = $this->api->request_fields();
|
$fields = $this->api->request_fields();
|
||||||
|
|
||||||
$secretary = $this->secretaries_model->find($id);
|
$secretary = $this->secretaries_model->find($id);
|
||||||
|
@ -90,12 +98,6 @@ class Secretaries_api_v1 extends EA_Controller
|
||||||
$this->secretaries_model->only($secretary, $fields);
|
$this->secretaries_model->only($secretary, $fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$secretary) {
|
|
||||||
response('', 404);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
json_response($secretary);
|
json_response($secretary);
|
||||||
} catch (Throwable $e) {
|
} catch (Throwable $e) {
|
||||||
json_exception($e);
|
json_exception($e);
|
||||||
|
@ -105,7 +107,7 @@ class Secretaries_api_v1 extends EA_Controller
|
||||||
/**
|
/**
|
||||||
* Store a new secretary.
|
* Store a new secretary.
|
||||||
*/
|
*/
|
||||||
public function store()
|
public function store(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$secretary = request();
|
$secretary = request();
|
||||||
|
@ -141,7 +143,7 @@ class Secretaries_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int $id Secretary ID.
|
* @param int $id Secretary ID.
|
||||||
*/
|
*/
|
||||||
public function update(int $id)
|
public function update(int $id): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$occurrences = $this->secretaries_model->get(['id' => $id]);
|
$occurrences = $this->secretaries_model->get(['id' => $id]);
|
||||||
|
@ -175,7 +177,7 @@ class Secretaries_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int $id Secretary ID.
|
* @param int $id Secretary ID.
|
||||||
*/
|
*/
|
||||||
public function destroy(int $id)
|
public function destroy(int $id): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$occurrences = $this->secretaries_model->get(['id' => $id]);
|
$occurrences = $this->secretaries_model->get(['id' => $id]);
|
||||||
|
|
|
@ -35,7 +35,7 @@ class Service_categories_api_v1 extends EA_Controller
|
||||||
/**
|
/**
|
||||||
* Get a service-category collection.
|
* Get a service-category collection.
|
||||||
*/
|
*/
|
||||||
public function index()
|
public function index(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$keyword = $this->api->request_keyword();
|
$keyword = $this->api->request_keyword();
|
||||||
|
@ -77,9 +77,17 @@ class Service_categories_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int|null $id Service-category ID.
|
* @param int|null $id Service-category ID.
|
||||||
*/
|
*/
|
||||||
public function show(int $id = null)
|
public function show(int $id = null): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
$occurrences = $this->service_categories_model->get(['id' => $id]);
|
||||||
|
|
||||||
|
if (empty($occurrences)) {
|
||||||
|
response('', 404);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$fields = $this->api->request_fields();
|
$fields = $this->api->request_fields();
|
||||||
|
|
||||||
$with = $this->api->request_with();
|
$with = $this->api->request_with();
|
||||||
|
@ -96,12 +104,6 @@ class Service_categories_api_v1 extends EA_Controller
|
||||||
$this->service_categories_model->load($service_category, $with);
|
$this->service_categories_model->load($service_category, $with);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$service_category) {
|
|
||||||
response('', 404);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
json_response($service_category);
|
json_response($service_category);
|
||||||
} catch (Throwable $e) {
|
} catch (Throwable $e) {
|
||||||
json_exception($e);
|
json_exception($e);
|
||||||
|
@ -111,7 +113,7 @@ class Service_categories_api_v1 extends EA_Controller
|
||||||
/**
|
/**
|
||||||
* Store a new service-category.
|
* Store a new service-category.
|
||||||
*/
|
*/
|
||||||
public function store()
|
public function store(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$service_category = request();
|
$service_category = request();
|
||||||
|
@ -139,7 +141,7 @@ class Service_categories_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int $id Service-category ID.
|
* @param int $id Service-category ID.
|
||||||
*/
|
*/
|
||||||
public function update(int $id)
|
public function update(int $id): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$occurrences = $this->service_categories_model->get(['id' => $id]);
|
$occurrences = $this->service_categories_model->get(['id' => $id]);
|
||||||
|
@ -173,7 +175,7 @@ class Service_categories_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int $id Service-category ID.
|
* @param int $id Service-category ID.
|
||||||
*/
|
*/
|
||||||
public function destroy(int $id)
|
public function destroy(int $id): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$occurrences = $this->service_categories_model->get(['id' => $id]);
|
$occurrences = $this->service_categories_model->get(['id' => $id]);
|
||||||
|
|
|
@ -35,7 +35,7 @@ class Services_api_v1 extends EA_Controller
|
||||||
/**
|
/**
|
||||||
* Get an service collection.
|
* Get an service collection.
|
||||||
*/
|
*/
|
||||||
public function index()
|
public function index(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$keyword = $this->api->request_keyword();
|
$keyword = $this->api->request_keyword();
|
||||||
|
@ -77,9 +77,17 @@ class Services_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int|null $id Service ID.
|
* @param int|null $id Service ID.
|
||||||
*/
|
*/
|
||||||
public function show(int $id = null)
|
public function show(int $id = null): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
$occurrences = $this->services_model->get(['id' => $id]);
|
||||||
|
|
||||||
|
if (empty($occurrences)) {
|
||||||
|
response('', 404);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$fields = $this->api->request_fields();
|
$fields = $this->api->request_fields();
|
||||||
|
|
||||||
$with = $this->api->request_with();
|
$with = $this->api->request_with();
|
||||||
|
@ -96,12 +104,6 @@ class Services_api_v1 extends EA_Controller
|
||||||
$this->services_model->load($service, $with);
|
$this->services_model->load($service, $with);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$service) {
|
|
||||||
response('', 404);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
json_response($service);
|
json_response($service);
|
||||||
} catch (Throwable $e) {
|
} catch (Throwable $e) {
|
||||||
json_exception($e);
|
json_exception($e);
|
||||||
|
@ -111,7 +113,7 @@ class Services_api_v1 extends EA_Controller
|
||||||
/**
|
/**
|
||||||
* Store a new service.
|
* Store a new service.
|
||||||
*/
|
*/
|
||||||
public function store()
|
public function store(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$service = request();
|
$service = request();
|
||||||
|
@ -139,7 +141,7 @@ class Services_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int $id Service ID.
|
* @param int $id Service ID.
|
||||||
*/
|
*/
|
||||||
public function update(int $id)
|
public function update(int $id): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$occurrences = $this->services_model->get(['id' => $id]);
|
$occurrences = $this->services_model->get(['id' => $id]);
|
||||||
|
@ -173,7 +175,7 @@ class Services_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int $id Service ID.
|
* @param int $id Service ID.
|
||||||
*/
|
*/
|
||||||
public function destroy(int $id)
|
public function destroy(int $id): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$occurrences = $this->services_model->get(['id' => $id]);
|
$occurrences = $this->services_model->get(['id' => $id]);
|
||||||
|
|
|
@ -71,7 +71,7 @@ class Settings_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param string $name Setting name.
|
* @param string $name Setting name.
|
||||||
*/
|
*/
|
||||||
public function show(string $name)
|
public function show(string $name): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$value = setting($name);
|
$value = setting($name);
|
||||||
|
@ -90,7 +90,7 @@ class Settings_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param string $name Setting name.
|
* @param string $name Setting name.
|
||||||
*/
|
*/
|
||||||
public function update(string $name)
|
public function update(string $name): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$value = request('value');
|
$value = request('value');
|
||||||
|
|
|
@ -35,7 +35,7 @@ class Unavailabilities_api_v1 extends EA_Controller
|
||||||
/**
|
/**
|
||||||
* Get an unavailability collection.
|
* Get an unavailability collection.
|
||||||
*/
|
*/
|
||||||
public function index()
|
public function index(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$keyword = $this->api->request_keyword();
|
$keyword = $this->api->request_keyword();
|
||||||
|
@ -77,9 +77,17 @@ class Unavailabilities_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int|null $id Unavailability ID.
|
* @param int|null $id Unavailability ID.
|
||||||
*/
|
*/
|
||||||
public function show(int $id = null)
|
public function show(int $id = null): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
$occurrences = $this->unavailabilities_model->get(['id' => $id]);
|
||||||
|
|
||||||
|
if (empty($occurrences)) {
|
||||||
|
response('', 404);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$fields = $this->api->request_fields();
|
$fields = $this->api->request_fields();
|
||||||
|
|
||||||
$with = $this->api->request_with();
|
$with = $this->api->request_with();
|
||||||
|
@ -96,12 +104,6 @@ class Unavailabilities_api_v1 extends EA_Controller
|
||||||
$this->unavailabilities_model->load($unavailability, $with);
|
$this->unavailabilities_model->load($unavailability, $with);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$unavailability) {
|
|
||||||
response('', 404);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
json_response($unavailability);
|
json_response($unavailability);
|
||||||
} catch (Throwable $e) {
|
} catch (Throwable $e) {
|
||||||
json_exception($e);
|
json_exception($e);
|
||||||
|
@ -111,7 +113,7 @@ class Unavailabilities_api_v1 extends EA_Controller
|
||||||
/**
|
/**
|
||||||
* Store a new unavailability.
|
* Store a new unavailability.
|
||||||
*/
|
*/
|
||||||
public function store()
|
public function store(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$unavailability = request();
|
$unavailability = request();
|
||||||
|
@ -139,7 +141,7 @@ class Unavailabilities_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int $id Unavailability ID.
|
* @param int $id Unavailability ID.
|
||||||
*/
|
*/
|
||||||
public function update(int $id)
|
public function update(int $id): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$occurrences = $this->unavailabilities_model->get(['id' => $id]);
|
$occurrences = $this->unavailabilities_model->get(['id' => $id]);
|
||||||
|
@ -173,7 +175,7 @@ class Unavailabilities_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int $id Unavailability ID.
|
* @param int $id Unavailability ID.
|
||||||
*/
|
*/
|
||||||
public function destroy(int $id)
|
public function destroy(int $id): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$occurrences = $this->unavailabilities_model->get(['id' => $id]);
|
$occurrences = $this->unavailabilities_model->get(['id' => $id]);
|
||||||
|
|
|
@ -35,7 +35,7 @@ class Webhooks_api_v1 extends EA_Controller
|
||||||
/**
|
/**
|
||||||
* Get a webhook collection.
|
* Get a webhook collection.
|
||||||
*/
|
*/
|
||||||
public function index()
|
public function index(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$keyword = $this->api->request_keyword();
|
$keyword = $this->api->request_keyword();
|
||||||
|
@ -77,9 +77,17 @@ class Webhooks_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int|null $id Webhook ID.
|
* @param int|null $id Webhook ID.
|
||||||
*/
|
*/
|
||||||
public function show(int $id = null)
|
public function show(int $id = null): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
$occurrences = $this->webhooks_model->get(['id' => $id]);
|
||||||
|
|
||||||
|
if (empty($occurrences)) {
|
||||||
|
response('', 404);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$fields = $this->api->request_fields();
|
$fields = $this->api->request_fields();
|
||||||
|
|
||||||
$with = $this->api->request_with();
|
$with = $this->api->request_with();
|
||||||
|
@ -96,12 +104,6 @@ class Webhooks_api_v1 extends EA_Controller
|
||||||
$this->webhooks_model->load($webhook, $with);
|
$this->webhooks_model->load($webhook, $with);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$webhook) {
|
|
||||||
response('', 404);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
json_response($webhook);
|
json_response($webhook);
|
||||||
} catch (Throwable $e) {
|
} catch (Throwable $e) {
|
||||||
json_exception($e);
|
json_exception($e);
|
||||||
|
@ -111,7 +113,7 @@ class Webhooks_api_v1 extends EA_Controller
|
||||||
/**
|
/**
|
||||||
* Store a new webhook.
|
* Store a new webhook.
|
||||||
*/
|
*/
|
||||||
public function store()
|
public function store(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$webhook = request();
|
$webhook = request();
|
||||||
|
@ -139,7 +141,7 @@ class Webhooks_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int $id Webhook ID.
|
* @param int $id Webhook ID.
|
||||||
*/
|
*/
|
||||||
public function update(int $id)
|
public function update(int $id): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$occurrences = $this->webhooks_model->get(['id' => $id]);
|
$occurrences = $this->webhooks_model->get(['id' => $id]);
|
||||||
|
@ -173,7 +175,7 @@ class Webhooks_api_v1 extends EA_Controller
|
||||||
*
|
*
|
||||||
* @param int $id Webhook ID.
|
* @param int $id Webhook ID.
|
||||||
*/
|
*/
|
||||||
public function destroy(int $id)
|
public function destroy(int $id): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$occurrences = $this->webhooks_model->get(['id' => $id]);
|
$occurrences = $this->webhooks_model->get(['id' => $id]);
|
||||||
|
|
|
@ -46,8 +46,12 @@ if (!function_exists('branding')) {
|
||||||
|
|
||||||
// Yazılım Sağlayıcı Bilgileri
|
// Yazılım Sağlayıcı Bilgileri
|
||||||
$software = array(
|
$software = array(
|
||||||
"name" => "MAKET",
|
"name" => "MAKET Randevu",
|
||||||
"description" => "MAKET Randevu Portalı",
|
"name_tr" => "MAKET Randevu",
|
||||||
|
"name_en" => "MAKET Appointment",
|
||||||
|
"description" => "MAKET Randevu",
|
||||||
|
"description_tr" => "MAKET Randevu Portalı",
|
||||||
|
"description_en" => "MAKET Appointment Portal",
|
||||||
"maintainers" => "Aliberk Sandıkçı & Alex Tselegidis", // to also give credit to original maintainer
|
"maintainers" => "Aliberk Sandıkçı & Alex Tselegidis", // to also give credit to original maintainer
|
||||||
"maintainer_nickname" => "asandikci",
|
"maintainer_nickname" => "asandikci",
|
||||||
"maintainer_name" => "Aliberk Sandıkçı",
|
"maintainer_name" => "Aliberk Sandıkçı",
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
<?php defined('BASEPATH') or exit('No direct script access allowed');
|
<?php defined('BASEPATH') or exit('No direct script access allowed');
|
||||||
// Turkish
|
// English
|
||||||
|
|
||||||
|
$lang['address'] = 'School Name';
|
||||||
|
$lang['city'] = 'School City';
|
||||||
|
$lang['zip_code'] = 'Number of Students';
|
||||||
|
$lang['notes'] = 'Extra Notes';
|
||||||
|
|
||||||
$lang['system_installation'] = 'System Installation';
|
$lang['system_installation'] = 'System Installation';
|
||||||
$lang['system_installation_welcome_header'] = 'Welcome to the ' . branding("software", "name") . " installation page";
|
$lang['system_installation_welcome_header'] = 'Welcome to the ' . branding("software", "name_en") . " installation page";
|
||||||
$lang['powered_by'] = 'Powered By <a href="' . branding("software", "website") . '" target="_blank">' . branding("software", "name") . '</a>';
|
$lang['powered_by'] = 'Powered By <a href="' . branding("software", "website") . '" target="_blank">' . branding("software", "name_en") . '</a>';
|
||||||
// End
|
// End
|
||||||
|
|
|
@ -175,22 +175,22 @@ $lang['visible'] = 'Visible';
|
||||||
$lang['hidden'] = 'Hidden';
|
$lang['hidden'] = 'Hidden';
|
||||||
$lang['business_logic'] = 'Business Logic';
|
$lang['business_logic'] = 'Business Logic';
|
||||||
$lang['current_user'] = 'Current User';
|
$lang['current_user'] = 'Current User';
|
||||||
$lang['about_app'] = 'About Easy!Appointments';
|
$lang['about_app'] = 'About MAKET Randevu';
|
||||||
$lang['edit_working_plan_hint'] = 'Mark below the days and hours that your company will accept appointments. You will be able to adjust appointments in non-working hours but the customers will not be able to book appointments by themselves in non-working periods. This working plan will be the default for every new provider record, but you will be able to change each provider\'s plan separately by editing his record. After that you can add break periods.';
|
$lang['edit_working_plan_hint'] = 'Mark below the days and hours that your company will accept appointments. You will be able to adjust appointments in non-working hours but the customers will not be able to book appointments by themselves in non-working periods. This working plan will be the default for every new provider record, but you will be able to change each provider\'s plan separately by editing his record. After that you can add break periods.';
|
||||||
$lang['edit_breaks_hint'] = 'Add the working breaks during each day. These breaks will be applied for all new providers.';
|
$lang['edit_breaks_hint'] = 'Add the working breaks during each day. These breaks will be applied for all new providers.';
|
||||||
$lang['book_advance_timeout'] = 'Book Advance Timeout';
|
$lang['book_advance_timeout'] = 'Book Advance Timeout';
|
||||||
$lang['book_advance_timeout_hint'] = 'Define the timeout (in minutes) before the customers can book or re-arrange appointments with the company.';
|
$lang['book_advance_timeout_hint'] = 'Define the timeout (in minutes) before the customers can book or re-arrange appointments with the company.';
|
||||||
$lang['timeout_minutes'] = 'Timeout (Minutes)';
|
$lang['timeout_minutes'] = 'Timeout (Minutes)';
|
||||||
$lang['about_app_info'] = 'Easy!Appointments is a highly customizable web application that allows your customers to book appointments with you via the web. Moreover, it provides the ability to sync your data with Google Calendar, so you can use them with other services.';
|
$lang['about_app_info'] = 'MAKET Randevu is a highly customizable web application that allows your customers to book appointments with you via the web. Moreover, it provides the ability to sync your data with Google Calendar, so you can use them with other services.';
|
||||||
$lang['current_version'] = 'Current Version';
|
$lang['current_version'] = 'Current Version';
|
||||||
$lang['support'] = 'Support';
|
$lang['support'] = 'Support';
|
||||||
$lang['about_app_support'] = 'If you encounter any problems when using Easy!Appointments you can search the official Google Group for answers. You might also need to create a new issue on the Google Code page in order to help the development progress.';
|
$lang['about_app_support'] = 'If you encounter any problems when using MAKET Randevu you can search the official Google Group for answers. You might also need to create a new issue on the Google Code page in order to help the development progress.';
|
||||||
$lang['official_website'] = 'Official Website';
|
$lang['official_website'] = 'Official Website';
|
||||||
$lang['google_plus_community'] = 'Google+ Community';
|
$lang['google_plus_community'] = 'Google+ Community';
|
||||||
$lang['support_group'] = 'Support Group';
|
$lang['support_group'] = 'Support Group';
|
||||||
$lang['project_issues'] = 'Project Issues';
|
$lang['project_issues'] = 'Project Issues';
|
||||||
$lang['license'] = 'License';
|
$lang['license'] = 'License';
|
||||||
$lang['about_app_license'] = 'Easy!Appointments is licensed under the GPLv3 license. By using the code of Easy!Appointments in any way you are agreeing to the terms described in the following url:';
|
$lang['about_app_license'] = 'MAKET Randevu is licensed under the GPLv3 license. By using the code of MAKET Randevu in any way you are agreeing to the terms described in the following url:';
|
||||||
$lang['logout_success'] = 'You have been successfully logged out! Click on one of the following buttons to navigate to a different page.';
|
$lang['logout_success'] = 'You have been successfully logged out! Click on one of the following buttons to navigate to a different page.';
|
||||||
$lang['book_appointment_title'] = 'Book Appointment';
|
$lang['book_appointment_title'] = 'Book Appointment';
|
||||||
$lang['backend_section'] = 'Backend Section';
|
$lang['backend_section'] = 'Backend Section';
|
||||||
|
@ -272,7 +272,7 @@ $lang['select_google_calendar_prompt'] = 'Select the calendar that you want to s
|
||||||
$lang['google_calendar_selected'] = 'Google calendar has been successfully selected.';
|
$lang['google_calendar_selected'] = 'Google calendar has been successfully selected.';
|
||||||
$lang['oops_something_went_wrong'] = 'Oops! Something Went Wrong.';
|
$lang['oops_something_went_wrong'] = 'Oops! Something Went Wrong.';
|
||||||
$lang['could_not_add_to_google_calendar'] = 'Your appointment could not be added to your Google Calendar account.';
|
$lang['could_not_add_to_google_calendar'] = 'Your appointment could not be added to your Google Calendar account.';
|
||||||
$lang['ea_update_success'] = 'Easy!Appointments has been successfully updated.';
|
$lang['ea_update_success'] = 'MAKET Randevu has been successfully updated.';
|
||||||
$lang['require_captcha'] = 'Require CAPTCHA';
|
$lang['require_captcha'] = 'Require CAPTCHA';
|
||||||
$lang['require_captcha_hint'] = 'When enabled, the customers will have to type a random generated CAPTCHA string before booking/updating an appointment.';
|
$lang['require_captcha_hint'] = 'When enabled, the customers will have to type a random generated CAPTCHA string before booking/updating an appointment.';
|
||||||
$lang['captcha_is_wrong'] = 'CAPTCHA verification failed, please try again.';
|
$lang['captcha_is_wrong'] = 'CAPTCHA verification failed, please try again.';
|
||||||
|
@ -320,7 +320,7 @@ $lang['add_working_plan_exception'] = 'Add Working Plan Exception';
|
||||||
$lang['require_phone_number'] = 'Require phone number';
|
$lang['require_phone_number'] = 'Require phone number';
|
||||||
$lang['require_phone_number_hint'] = 'When enabled, customers and users will need to enter the customer\'s phone number when booking an appointment';
|
$lang['require_phone_number_hint'] = 'When enabled, customers and users will need to enter the customer\'s phone number when booking an appointment';
|
||||||
$lang['check_spam_folder'] = 'Please check your spam folder if the email does not arrive within a few minutes.';
|
$lang['check_spam_folder'] = 'Please check your spam folder if the email does not arrive within a few minutes.';
|
||||||
$lang['api_token_hint'] = 'Set a secret token in order to enable the token based authentication of the Easy!Appointments API.';
|
$lang['api_token_hint'] = 'Set a secret token in order to enable the token based authentication of the MAKET Randevu API.';
|
||||||
$lang['timezone'] = 'Timezone';
|
$lang['timezone'] = 'Timezone';
|
||||||
$lang['overwrite_existing_working_plans'] = 'This will overwrite the existing provider working plans, are you sure that you want to continue?';
|
$lang['overwrite_existing_working_plans'] = 'This will overwrite the existing provider working plans, are you sure that you want to continue?';
|
||||||
$lang['working_plans_got_updated'] = 'All the working plans got updated.';
|
$lang['working_plans_got_updated'] = 'All the working plans got updated.';
|
||||||
|
@ -396,7 +396,7 @@ $lang['google_analytics_info'] = 'Google Analytics enable you to automatically a
|
||||||
$lang['matomo_analytics'] = 'Matomo Analytics';
|
$lang['matomo_analytics'] = 'Matomo Analytics';
|
||||||
$lang['matomo_analytics_info'] = 'Matomo Analytics enable you to automatically add the tracking code and HTML markup to the public page and track all the public booking sessions.';
|
$lang['matomo_analytics_info'] = 'Matomo Analytics enable you to automatically add the tracking code and HTML markup to the public page and track all the public booking sessions.';
|
||||||
$lang['api'] = 'API';
|
$lang['api'] = 'API';
|
||||||
$lang['api_info'] = 'API enable you to interact with all the Easy!Appointments data via the HTTP protocol and the available API endpoints and create your own integrations.';
|
$lang['api_info'] = 'API enable you to interact with all the MAKET Randevu data via the HTTP protocol and the available API endpoints and create your own integrations.';
|
||||||
$lang['google_analytics_code'] = 'Google Analytics Code';
|
$lang['google_analytics_code'] = 'Google Analytics Code';
|
||||||
$lang['matomo_analytics_url'] = 'Matomo Analytics URL';
|
$lang['matomo_analytics_url'] = 'Matomo Analytics URL';
|
||||||
$lang['future_booking_limit'] = 'Future Booking Limit';
|
$lang['future_booking_limit'] = 'Future Booking Limit';
|
||||||
|
@ -449,4 +449,8 @@ $lang['blocked_periods_hint'] = 'Define periods of time where public bookings wi
|
||||||
$lang['custom_field'] = 'Custom Field';
|
$lang['custom_field'] = 'Custom Field';
|
||||||
$lang['custom_fields'] = 'Custom Fields';
|
$lang['custom_fields'] = 'Custom Fields';
|
||||||
$lang['label'] = 'Label';
|
$lang['label'] = 'Label';
|
||||||
|
$lang['webhook_saved'] = 'Webhook saved successfully.';
|
||||||
|
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
|
||||||
|
$lang['delete_webhook'] = 'Delete Webhook';
|
||||||
|
$lang['contact_info'] = 'Contact Info';
|
||||||
// End
|
// End
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>403 Forbidden</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<p>Directory access is forbidden.</p>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -37,48 +37,48 @@
|
||||||
*/
|
*/
|
||||||
defined('BASEPATH') or exit('No direct script access allowed');
|
defined('BASEPATH') or exit('No direct script access allowed');
|
||||||
|
|
||||||
$lang['cal_su'] = 'Su';
|
$lang['cal_su'] = 'Pz';
|
||||||
$lang['cal_mo'] = 'Mo';
|
$lang['cal_mo'] = 'Pt';
|
||||||
$lang['cal_tu'] = 'Tu';
|
$lang['cal_tu'] = 'Sl';
|
||||||
$lang['cal_we'] = 'We';
|
$lang['cal_we'] = 'Çş';
|
||||||
$lang['cal_th'] = 'Th';
|
$lang['cal_th'] = 'Pş';
|
||||||
$lang['cal_fr'] = 'Fr';
|
$lang['cal_fr'] = 'Cm';
|
||||||
$lang['cal_sa'] = 'Sa';
|
$lang['cal_sa'] = 'Ct';
|
||||||
$lang['cal_sun'] = 'Sun';
|
$lang['cal_sun'] = 'Pzr';
|
||||||
$lang['cal_mon'] = 'Mon';
|
$lang['cal_mon'] = 'Pzt';
|
||||||
$lang['cal_tue'] = 'Tue';
|
$lang['cal_tue'] = 'Salı';
|
||||||
$lang['cal_wed'] = 'Wed';
|
$lang['cal_wed'] = 'Çrş';
|
||||||
$lang['cal_thu'] = 'Thu';
|
$lang['cal_thu'] = 'Prş';
|
||||||
$lang['cal_fri'] = 'Fri';
|
$lang['cal_fri'] = 'Cuma';
|
||||||
$lang['cal_sat'] = 'Sat';
|
$lang['cal_sat'] = 'Cmt';
|
||||||
$lang['cal_sunday'] = 'Sunday';
|
$lang['cal_sunday'] = 'Pazar';
|
||||||
$lang['cal_monday'] = 'Monday';
|
$lang['cal_monday'] = 'Pazartesi';
|
||||||
$lang['cal_tuesday'] = 'Tuesday';
|
$lang['cal_tuesday'] = 'Salı';
|
||||||
$lang['cal_wednesday'] = 'Wednesday';
|
$lang['cal_wednesday'] = 'Çarşamba';
|
||||||
$lang['cal_thursday'] = 'Thursday';
|
$lang['cal_thursday'] = 'Perşembe';
|
||||||
$lang['cal_friday'] = 'Friday';
|
$lang['cal_friday'] = 'Cuma';
|
||||||
$lang['cal_saturday'] = 'Saturday';
|
$lang['cal_saturday'] = 'Cumartesi';
|
||||||
$lang['cal_jan'] = 'Jan';
|
$lang['cal_jan'] = 'Oca';
|
||||||
$lang['cal_feb'] = 'Feb';
|
$lang['cal_feb'] = 'Şub';
|
||||||
$lang['cal_mar'] = 'Mar';
|
$lang['cal_mar'] = 'Mar';
|
||||||
$lang['cal_apr'] = 'Apr';
|
$lang['cal_apr'] = 'Nis';
|
||||||
$lang['cal_may'] = 'May';
|
$lang['cal_may'] = 'May';
|
||||||
$lang['cal_jun'] = 'Jun';
|
$lang['cal_jun'] = 'Haz';
|
||||||
$lang['cal_jul'] = 'Jul';
|
$lang['cal_jul'] = 'Tem';
|
||||||
$lang['cal_aug'] = 'Aug';
|
$lang['cal_aug'] = 'Ağu';
|
||||||
$lang['cal_sep'] = 'Sep';
|
$lang['cal_sep'] = 'Eyl';
|
||||||
$lang['cal_oct'] = 'Oct';
|
$lang['cal_oct'] = 'Eki';
|
||||||
$lang['cal_nov'] = 'Nov';
|
$lang['cal_nov'] = 'Kas';
|
||||||
$lang['cal_dec'] = 'Dec';
|
$lang['cal_dec'] = 'Ara';
|
||||||
$lang['cal_january'] = 'January';
|
$lang['cal_january'] = 'Ocak';
|
||||||
$lang['cal_february'] = 'February';
|
$lang['cal_february'] = 'Şubat';
|
||||||
$lang['cal_march'] = 'March';
|
$lang['cal_march'] = 'Mart';
|
||||||
$lang['cal_april'] = 'April';
|
$lang['cal_april'] = 'Nisan';
|
||||||
$lang['cal_mayl'] = 'May';
|
$lang['cal_mayl'] = 'Mayıs';
|
||||||
$lang['cal_june'] = 'June';
|
$lang['cal_june'] = 'Haziran';
|
||||||
$lang['cal_july'] = 'July';
|
$lang['cal_july'] = 'Temmuz';
|
||||||
$lang['cal_august'] = 'August';
|
$lang['cal_august'] = 'Ağustos';
|
||||||
$lang['cal_september'] = 'September';
|
$lang['cal_september'] = 'Eylül';
|
||||||
$lang['cal_october'] = 'October';
|
$lang['cal_october'] = 'Ekim';
|
||||||
$lang['cal_november'] = 'November';
|
$lang['cal_november'] = 'Kasım';
|
||||||
$lang['cal_december'] = 'December';
|
$lang['cal_december'] = 'Aralık';
|
||||||
|
|
|
@ -37,20 +37,20 @@
|
||||||
*/
|
*/
|
||||||
defined('BASEPATH') or exit('No direct script access allowed');
|
defined('BASEPATH') or exit('No direct script access allowed');
|
||||||
|
|
||||||
$lang['date_year'] = 'Year';
|
$lang['date_year'] = 'Yıl';
|
||||||
$lang['date_years'] = 'Years';
|
$lang['date_years'] = 'Yıl';
|
||||||
$lang['date_month'] = 'Month';
|
$lang['date_month'] = 'Ay';
|
||||||
$lang['date_months'] = 'Months';
|
$lang['date_months'] = 'AY';
|
||||||
$lang['date_week'] = 'Week';
|
$lang['date_week'] = 'Hafta';
|
||||||
$lang['date_weeks'] = 'Weeks';
|
$lang['date_weeks'] = 'Hafta';
|
||||||
$lang['date_day'] = 'Day';
|
$lang['date_day'] = 'Gün';
|
||||||
$lang['date_days'] = 'Days';
|
$lang['date_days'] = 'Gün';
|
||||||
$lang['date_hour'] = 'Hour';
|
$lang['date_hour'] = 'Saat';
|
||||||
$lang['date_hours'] = 'Hours';
|
$lang['date_hours'] = 'Saat';
|
||||||
$lang['date_minute'] = 'Minute';
|
$lang['date_minute'] = 'Dakika';
|
||||||
$lang['date_minutes'] = 'Minutes';
|
$lang['date_minutes'] = 'Dakika';
|
||||||
$lang['date_second'] = 'Second';
|
$lang['date_second'] = 'Saniye';
|
||||||
$lang['date_seconds'] = 'Seconds';
|
$lang['date_seconds'] = 'Saniye';
|
||||||
|
|
||||||
$lang['UM12'] = '(UTC -12:00) Baker/Howland Island';
|
$lang['UM12'] = '(UTC -12:00) Baker/Howland Island';
|
||||||
$lang['UM11'] = '(UTC -11:00) Niue';
|
$lang['UM11'] = '(UTC -11:00) Niue';
|
||||||
|
@ -70,7 +70,7 @@ $lang['UM1'] = '(UTC -1:00) Azores, Cape Verde Islands';
|
||||||
$lang['UTC'] = '(UTC) Greenwich Mean Time, Western European Time';
|
$lang['UTC'] = '(UTC) Greenwich Mean Time, Western European Time';
|
||||||
$lang['UP1'] = '(UTC +1:00) Central European Time, West Africa Time';
|
$lang['UP1'] = '(UTC +1:00) Central European Time, West Africa Time';
|
||||||
$lang['UP2'] = '(UTC +2:00) Central Africa Time, Eastern European Time, Kaliningrad Time';
|
$lang['UP2'] = '(UTC +2:00) Central Africa Time, Eastern European Time, Kaliningrad Time';
|
||||||
$lang['UP3'] = '(UTC +3:00) Moscow Time, East Africa Time, Arabia Standard Time';
|
$lang['UP3'] = '(UTC +3:00) Moscow Time, East Africa Time, Arabia Standard Time, Türkiye Time';
|
||||||
$lang['UP35'] = '(UTC +3:30) Iran Standard Time';
|
$lang['UP35'] = '(UTC +3:30) Iran Standard Time';
|
||||||
$lang['UP4'] = '(UTC +4:00) Azerbaijan Standard Time, Samara Time';
|
$lang['UP4'] = '(UTC +4:00) Azerbaijan Standard Time, Samara Time';
|
||||||
$lang['UP45'] = '(UTC +4:30) Afghanistan';
|
$lang['UP45'] = '(UTC +4:30) Afghanistan';
|
||||||
|
|
|
@ -15,7 +15,7 @@ $lang['db_unable_to_select'] = 'Belirtilen veri tabanı seçilemiyor: %s';
|
||||||
$lang['db_unable_to_create'] = 'Belirtilen veri tabanı oluşturulamıyor: %s';
|
$lang['db_unable_to_create'] = 'Belirtilen veri tabanı oluşturulamıyor: %s';
|
||||||
$lang['db_invalid_query'] = 'Verilen sorgu geçersiz.';
|
$lang['db_invalid_query'] = 'Verilen sorgu geçersiz.';
|
||||||
$lang['db_must_set_table'] = 'Sorguda kullanılacak tabloyu belirtmelisiniz.';
|
$lang['db_must_set_table'] = 'Sorguda kullanılacak tabloyu belirtmelisiniz.';
|
||||||
$lang['db_must_use_set'] = 'Kaydı güncellemek için "set" metodu kullanmalısınız.';
|
$lang['db_must_use_set'] = 'Kaydı güncellemek için "set" metodunu kullanmalısınız.';
|
||||||
$lang['db_must_use_index'] = 'Toplu güncellemede eşleştirme için bir indeks belirtmelisiniz.';
|
$lang['db_must_use_index'] = 'Toplu güncellemede eşleştirme için bir indeks belirtmelisiniz.';
|
||||||
$lang['db_batch_missing_index'] = 'Toplu güncelleme için verilen bir veya birden fazla kaydın belirtilen indeksi eksik.';
|
$lang['db_batch_missing_index'] = 'Toplu güncelleme için verilen bir veya birden fazla kaydın belirtilen indeksi eksik.';
|
||||||
$lang['db_must_use_where'] = '"where" sözcüğü olmayan güncellemelere izin verilmez.';
|
$lang['db_must_use_where'] = '"where" sözcüğü olmayan güncellemelere izin verilmez.';
|
||||||
|
|
|
@ -37,8 +37,8 @@
|
||||||
*/
|
*/
|
||||||
defined('BASEPATH') or exit('No direct script access allowed');
|
defined('BASEPATH') or exit('No direct script access allowed');
|
||||||
|
|
||||||
$lang['form_validation_required'] = 'The {field} field is required.';
|
$lang['form_validation_required'] = '{field} alanı zorunludur.';
|
||||||
$lang['form_validation_isset'] = 'The {field} field must have a value.';
|
$lang['form_validation_isset'] = '{field} alanı bir değere sahip olmalıdır.';
|
||||||
$lang['form_validation_valid_email'] = 'The {field} field must contain a valid email address.';
|
$lang['form_validation_valid_email'] = 'The {field} field must contain a valid email address.';
|
||||||
$lang['form_validation_valid_emails'] = 'The {field} field must contain all valid email addresses.';
|
$lang['form_validation_valid_emails'] = 'The {field} field must contain all valid email addresses.';
|
||||||
$lang['form_validation_valid_url'] = 'The {field} field must contain a valid URL.';
|
$lang['form_validation_valid_url'] = 'The {field} field must contain a valid URL.';
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
<?php defined('BASEPATH') OR exit('No direct script access allowed');
|
<?php defined('BASEPATH') OR exit('No direct script access allowed');
|
||||||
// Turkish
|
// Turkish
|
||||||
|
|
||||||
|
$lang['address'] = 'Okulunuzun Adı';
|
||||||
|
$lang['city'] = 'Okulunuzun Bulunduğu Şehir';
|
||||||
|
$lang['zip_code'] = 'Gelecek Öğrenci Sayısı';
|
||||||
|
$lang['notes'] = 'Eklemek İstedikleriniz';
|
||||||
|
|
||||||
$lang['system_installation'] = 'Sistem Yüklemesi';
|
$lang['system_installation'] = 'Sistem Yüklemesi';
|
||||||
$lang['system_installation_welcome_header'] = branding("software", "name") . " sistem yükleme sayfasına hoşgeldiniz";
|
$lang['system_installation_welcome_header'] = branding("software", "name_tr") . " sistem yükleme sayfasına hoşgeldiniz";
|
||||||
$lang['powered_by'] = '<a href="' . branding("software", "website") . '" target="_blank">' . branding("software", "name") . '</a> Gururla Sunar';
|
$lang['powered_by'] = '<a href="' . branding("software", "website") . '" target="_blank">' . branding("software", "name_tr") . '</a> Gururla Sunar';
|
||||||
// End
|
// End
|
||||||
|
|
|
@ -41,4 +41,4 @@ $lang['terabyte_abbr'] = 'TB';
|
||||||
$lang['gigabyte_abbr'] = 'GB';
|
$lang['gigabyte_abbr'] = 'GB';
|
||||||
$lang['megabyte_abbr'] = 'MB';
|
$lang['megabyte_abbr'] = 'MB';
|
||||||
$lang['kilobyte_abbr'] = 'KB';
|
$lang['kilobyte_abbr'] = 'KB';
|
||||||
$lang['bytes'] = 'Bytes';
|
$lang['bytes'] = 'Bayt';
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?php defined('BASEPATH') or exit('No direct script access allowed');
|
<?php defined('BASEPATH') or exit('No direct script access allowed');
|
||||||
// Turkish
|
// Turkish
|
||||||
$lang['page_title'] = 'Randevu Alınacak Kişi';
|
$lang['page_title'] = 'Randevu Al | ';
|
||||||
$lang['service_and_provider'] = 'Hizmet ve Hizmet Sağlayıcıyı Seçin';
|
$lang['service_and_provider'] = 'Hizmet ve Hizmet Sağlayıcıyı Seçin';
|
||||||
$lang['select_service'] = 'Hizmeti Seçin';
|
$lang['select_service'] = 'Hizmeti Seçin';
|
||||||
$lang['select_provider'] = 'Hizmet Sağlayıcıyı Seçin';
|
$lang['select_provider'] = 'Hizmet Sağlayıcıyı Seçin';
|
||||||
|
@ -17,10 +17,10 @@ $lang['last_name'] = 'Soyad';
|
||||||
$lang['email'] = 'Eposta';
|
$lang['email'] = 'Eposta';
|
||||||
$lang['phone_number'] = 'Telefon No';
|
$lang['phone_number'] = 'Telefon No';
|
||||||
$lang['phone'] = 'Phone';
|
$lang['phone'] = 'Phone';
|
||||||
$lang['address'] = 'Adres';
|
// $lang['address'] = 'Adres';
|
||||||
$lang['city'] = 'Şehir';
|
// $lang['city'] = 'Şehir';
|
||||||
$lang['zip_code'] = 'Posta Kodu';
|
// $lang['zip_code'] = 'Posta Kodu';
|
||||||
$lang['notes'] = 'Notlar';
|
// $lang['notes'] = 'Notlar';
|
||||||
$lang['language'] = 'Dil';
|
$lang['language'] = 'Dil';
|
||||||
$lang['no_language'] = 'Dil yok';
|
$lang['no_language'] = 'Dil yok';
|
||||||
$lang['fields_are_required'] = '* Zorunlu Alanlar.';
|
$lang['fields_are_required'] = '* Zorunlu Alanlar.';
|
||||||
|
@ -175,22 +175,22 @@ $lang['visible'] = 'Gözle görülür';
|
||||||
$lang['hidden'] = 'Gizli';
|
$lang['hidden'] = 'Gizli';
|
||||||
$lang['business_logic'] = 'İş Mantığı';
|
$lang['business_logic'] = 'İş Mantığı';
|
||||||
$lang['current_user'] = 'Mevcut Kullanıcı';
|
$lang['current_user'] = 'Mevcut Kullanıcı';
|
||||||
$lang['about_app'] = 'Easy!Appointments Hakkında';
|
$lang['about_app'] = 'MAKET Randevu Hakkında';
|
||||||
$lang['edit_working_plan_hint'] = 'Aağıda şirketinizin kabul edeceği günleri ve saatleri işaretleyin. Çalışma saatleri dışında randevuları ayarlayabilirsiniz, ancak bu saatlere müşterilerin kendileri randevu kaydedemeyecektir. Bu çalışma planı tüm sağlayıcılar için varsayılan değer olup, daha sonra her biri için ayrıca özel plan da girebilir ve araları ekleyebilirsiniz.';
|
$lang['edit_working_plan_hint'] = 'Aağıda şirketinizin kabul edeceği günleri ve saatleri işaretleyin. Çalışma saatleri dışında randevuları ayarlayabilirsiniz, ancak bu saatlere müşterilerin kendileri randevu kaydedemeyecektir. Bu çalışma planı tüm sağlayıcılar için varsayılan değer olup, daha sonra her biri için ayrıca özel plan da girebilir ve araları ekleyebilirsiniz.';
|
||||||
$lang['edit_breaks_hint'] = 'Gün içindeki çalışma aralarını ekleyin. Bu aralar tüm yeni hizmet sağlayıcılar için geçerli olacaktır.';
|
$lang['edit_breaks_hint'] = 'Gün içindeki çalışma aralarını ekleyin. Bu aralar tüm yeni hizmet sağlayıcılar için geçerli olacaktır.';
|
||||||
$lang['book_advance_timeout'] = 'Erken Randevu Zamanaşımı Değeri';
|
$lang['book_advance_timeout'] = 'Erken Randevu Zamanaşımı Değeri';
|
||||||
$lang['book_advance_timeout_hint'] = 'Müşterilerin en az ne kadar önceden randevu alması veya randevu düzenlemesi gerektiğini girin (dakika cinsinden).';
|
$lang['book_advance_timeout_hint'] = 'Müşterilerin en az ne kadar önceden randevu alması veya randevu düzenlemesi gerektiğini girin (dakika cinsinden).';
|
||||||
$lang['timeout_minutes'] = 'Zamanaşımı (Dakika)';
|
$lang['timeout_minutes'] = 'Zamanaşımı (Dakika)';
|
||||||
$lang['about_app_info'] = 'Easy!Appointments yüksek ölçüde özelleştirilebilen, müşterilerinizin web üzerinden randevu almasını sağlayan bir uygulamadır. Ayrıca, bilgilerinizi Google Takvim ile eşitleyerek diğer uygulamalarla da entegre olmasını sağlar. ';
|
$lang['about_app_info'] = 'MAKET Randevu yüksek ölçüde özelleştirilebilen, müşterilerinizin web üzerinden randevu almasını sağlayan bir uygulamadır. Ayrıca, bilgilerinizi Google Takvim ile eşitleyerek diğer uygulamalarla da entegre olmasını sağlar. ';
|
||||||
$lang['current_version'] = 'Mevcut Versiyon';
|
$lang['current_version'] = 'Mevcut Versiyon';
|
||||||
$lang['support'] = 'Destek';
|
$lang['support'] = 'Destek';
|
||||||
$lang['about_app_support'] = 'Easy!Appointments kullanımı sırasında sorun yaşamanız halinde resmi Google Group üzerinde arama yapabilirsiniz. Ayrıca geliştirmeye destek olmak için Google Code sayfasında yeni sorun girişi de yapabilirsiniz.';
|
$lang['about_app_support'] = 'MAKET Randevu kullanımı sırasında sorun yaşamanız halinde resmi Google Group üzerinde arama yapabilirsiniz. Ayrıca geliştirmeye destek olmak için Google Code sayfasında yeni sorun girişi de yapabilirsiniz.';
|
||||||
$lang['official_website'] = 'Resmi Web Sitesi';
|
$lang['official_website'] = 'Resmi Web Sitesi';
|
||||||
$lang['google_plus_community'] = 'Google+ Çevresi';
|
$lang['google_plus_community'] = 'Google+ Çevresi';
|
||||||
$lang['support_group'] = 'Destek Grubu';
|
$lang['support_group'] = 'Destek Grubu';
|
||||||
$lang['project_issues'] = 'Proje Sorunları';
|
$lang['project_issues'] = 'Proje Sorunları';
|
||||||
$lang['license'] = 'Lisans';
|
$lang['license'] = 'Lisans';
|
||||||
$lang['about_app_license'] = 'Easy!Appointments GPLv3 kapsamında lisanslıdır. Bu yazılımı herhangi bir biçimde kullanarak aşağıdaki adreste belirtilen koşulları kabul etmiş olursunuz:';
|
$lang['about_app_license'] = 'MAKET Randevu GPLv3 kapsamında lisanslıdır. Bu yazılımı herhangi bir biçimde kullanarak aşağıdaki adreste belirtilen koşulları kabul etmiş olursunuz:';
|
||||||
$lang['logout_success'] = 'Başarı ile sistemden çıkış yaptınız! Aşağıdaki butonlara tıklayarak diğer sayfalara geçebilirsiniz.';
|
$lang['logout_success'] = 'Başarı ile sistemden çıkış yaptınız! Aşağıdaki butonlara tıklayarak diğer sayfalara geçebilirsiniz.';
|
||||||
$lang['book_appointment_title'] = 'Randevu Al';
|
$lang['book_appointment_title'] = 'Randevu Al';
|
||||||
$lang['backend_section'] = 'Yönetim Paneli';
|
$lang['backend_section'] = 'Yönetim Paneli';
|
||||||
|
@ -272,7 +272,7 @@ $lang['select_google_calendar_prompt'] = 'Randevularınızı eşitlemek istediğ
|
||||||
$lang['google_calendar_selected'] = 'Google Takvimi başarıyla seçildi.';
|
$lang['google_calendar_selected'] = 'Google Takvimi başarıyla seçildi.';
|
||||||
$lang['oops_something_went_wrong'] = 'Oops! Bir Sorun Oluştu.';
|
$lang['oops_something_went_wrong'] = 'Oops! Bir Sorun Oluştu.';
|
||||||
$lang['could_not_add_to_google_calendar'] = 'Randevunuz Google Takvim hesabınıza eklenemedi.';
|
$lang['could_not_add_to_google_calendar'] = 'Randevunuz Google Takvim hesabınıza eklenemedi.';
|
||||||
$lang['ea_update_success'] = 'Easy!Appointments başarı ile güncellendi.';
|
$lang['ea_update_success'] = 'MAKET Randevu başarı ile güncellendi.';
|
||||||
$lang['require_captcha'] = 'CAPTCHA gereklidir';
|
$lang['require_captcha'] = 'CAPTCHA gereklidir';
|
||||||
$lang['require_captcha_hint'] = 'When enabled, the customers will have to type a random generated CAPTCHA string before booking/updating an appointment.';
|
$lang['require_captcha_hint'] = 'When enabled, the customers will have to type a random generated CAPTCHA string before booking/updating an appointment.';
|
||||||
$lang['captcha_is_wrong'] = 'CAPTCHA verification failed, please try again.';
|
$lang['captcha_is_wrong'] = 'CAPTCHA verification failed, please try again.';
|
||||||
|
@ -320,7 +320,7 @@ $lang['add_working_plan_exception'] = 'İstisna ekle';
|
||||||
$lang['require_phone_number'] = 'Telefon num. gerekli';
|
$lang['require_phone_number'] = 'Telefon num. gerekli';
|
||||||
$lang['require_phone_number_hint'] = 'Etkinleştirildiğinde, müşterilerin ve kullanıcıların randevu alırken müşterinin telefon numarasını girmeleri gerekir.';
|
$lang['require_phone_number_hint'] = 'Etkinleştirildiğinde, müşterilerin ve kullanıcıların randevu alırken müşterinin telefon numarasını girmeleri gerekir.';
|
||||||
$lang['check_spam_folder'] = 'E-posta birkaç dakika içinde gelmezse lütfen spam klasörünüzü kontrol edin.';
|
$lang['check_spam_folder'] = 'E-posta birkaç dakika içinde gelmezse lütfen spam klasörünüzü kontrol edin.';
|
||||||
$lang['api_token_hint'] = 'Easy!Appointments Api sinin belirteç tabanlı kimlik doğrulamasını etkinleştirmek için gizli bir belirteç ayarlayın.';
|
$lang['api_token_hint'] = 'MAKET Randevu Api sinin belirteç tabanlı kimlik doğrulamasını etkinleştirmek için gizli bir belirteç ayarlayın.';
|
||||||
$lang['timezone'] = 'Saat Dilimi';
|
$lang['timezone'] = 'Saat Dilimi';
|
||||||
$lang['overwrite_existing_working_plans'] = 'This will overwrite the existing provider working plans, are you sure that you want to continue?';
|
$lang['overwrite_existing_working_plans'] = 'This will overwrite the existing provider working plans, are you sure that you want to continue?';
|
||||||
$lang['working_plans_got_updated'] = 'Tüm çalışma planları güncellendi.';
|
$lang['working_plans_got_updated'] = 'Tüm çalışma planları güncellendi.';
|
||||||
|
@ -362,8 +362,8 @@ $lang['private_hint'] = 'Private records will not be displayed or processed in p
|
||||||
$lang['reset'] = 'Reset';
|
$lang['reset'] = 'Reset';
|
||||||
$lang['all'] = 'All';
|
$lang['all'] = 'All';
|
||||||
$lang['booking_link'] = 'Booking Link';
|
$lang['booking_link'] = 'Booking Link';
|
||||||
$lang['add_new_event'] = 'Add New Event';
|
$lang['add_new_event'] = 'Yeni Etkinlik Ekle';
|
||||||
$lang['what_kind_of_event'] = 'What kind of event would you like to add?';
|
$lang['what_kind_of_event'] = 'Ne tarz bir etkinlik eklemek istersiniz?';
|
||||||
$lang['theme'] = 'Theme';
|
$lang['theme'] = 'Theme';
|
||||||
$lang['limit_customer_access'] = 'Limit Customer Access';
|
$lang['limit_customer_access'] = 'Limit Customer Access';
|
||||||
$lang['limit_customer_access_hint'] = 'If enabled, providers and secretaries will only be able to access customers they have an appointment with.';
|
$lang['limit_customer_access_hint'] = 'If enabled, providers and secretaries will only be able to access customers they have an appointment with.';
|
||||||
|
@ -396,7 +396,7 @@ $lang['google_analytics_info'] = 'Google Analytics enable you to automatically a
|
||||||
$lang['matomo_analytics'] = 'Matomo Analytics';
|
$lang['matomo_analytics'] = 'Matomo Analytics';
|
||||||
$lang['matomo_analytics_info'] = 'Matomo Analytics enable you to automatically add the tracking code and HTML markup to the public page and track all the public booking sessions.';
|
$lang['matomo_analytics_info'] = 'Matomo Analytics enable you to automatically add the tracking code and HTML markup to the public page and track all the public booking sessions.';
|
||||||
$lang['api'] = 'API';
|
$lang['api'] = 'API';
|
||||||
$lang['api_info'] = 'API enable you to interact with all the Easy!Appointments data via the HTTP protocol and the available API endpoints and create your own integrations.';
|
$lang['api_info'] = 'API enable you to interact with all the MAKET Randevu data via the HTTP protocol and the available API endpoints and create your own integrations.';
|
||||||
$lang['google_analytics_code'] = 'Google Analytics Code';
|
$lang['google_analytics_code'] = 'Google Analytics Code';
|
||||||
$lang['matomo_analytics_url'] = 'Matomo Analytics URL';
|
$lang['matomo_analytics_url'] = 'Matomo Analytics URL';
|
||||||
$lang['future_booking_limit'] = 'Future Booking Limit';
|
$lang['future_booking_limit'] = 'Future Booking Limit';
|
||||||
|
@ -408,37 +408,37 @@ $lang['at_least_one_field'] = 'At least one field must be displayed in the booki
|
||||||
$lang['status'] = 'Status';
|
$lang['status'] = 'Status';
|
||||||
$lang['appointment_status_options'] = 'Appointment Status Options';
|
$lang['appointment_status_options'] = 'Appointment Status Options';
|
||||||
$lang['appointment_status_options_info'] = 'Define a list of available appointment status options that can be used in the the calendar page (the first one will automatically become the default value).';
|
$lang['appointment_status_options_info'] = 'Define a list of available appointment status options that can be used in the the calendar page (the first one will automatically become the default value).';
|
||||||
$lang['sunday_short'] = 'Sun';
|
$lang['sunday_short'] = 'Pzr';
|
||||||
$lang['monday_short'] = 'Mon';
|
$lang['monday_short'] = 'Pzt';
|
||||||
$lang['tuesday_short'] = 'Tue';
|
$lang['tuesday_short'] = 'Salı';
|
||||||
$lang['wednesday_short'] = 'Wed';
|
$lang['wednesday_short'] = 'Çrş';
|
||||||
$lang['thursday_short'] = 'Thu';
|
$lang['thursday_short'] = 'Prş';
|
||||||
$lang['friday_short'] = 'Fri';
|
$lang['friday_short'] = 'Cuma';
|
||||||
$lang['saturday_short'] = 'Sat';
|
$lang['saturday_short'] = 'Cmt';
|
||||||
$lang['january_short'] = 'Jan';
|
$lang['january_short'] = 'Oca';
|
||||||
$lang['february_short'] = 'Feb';
|
$lang['february_short'] = 'Şub';
|
||||||
$lang['march_short'] = 'Mar';
|
$lang['march_short'] = 'Mar';
|
||||||
$lang['april_short'] = 'Apr';
|
$lang['april_short'] = 'Nis';
|
||||||
$lang['may_short'] = 'May';
|
$lang['may_short'] = 'May';
|
||||||
$lang['june_short'] = 'Jun';
|
$lang['june_short'] = 'Haz';
|
||||||
$lang['july_short'] = 'Jul';
|
$lang['july_short'] = 'Tem';
|
||||||
$lang['august_short'] = 'Aug';
|
$lang['august_short'] = 'Ağu';
|
||||||
$lang['september_short'] = 'Sep';
|
$lang['september_short'] = 'Eyl';
|
||||||
$lang['october_short'] = 'Oct';
|
$lang['october_short'] = 'Eki';
|
||||||
$lang['november_short'] = 'Nov';
|
$lang['november_short'] = 'Kas';
|
||||||
$lang['december_short'] = 'Dec';
|
$lang['december_short'] = 'Ara';
|
||||||
$lang['am'] = 'am';
|
$lang['am'] = 'am';
|
||||||
$lang['pm'] = 'pm';
|
$lang['pm'] = 'pm';
|
||||||
$lang['to'] = 'to';
|
$lang['to'] = 'to';
|
||||||
$lang['click_to_toggle'] = 'Click To Toggle';
|
$lang['click_to_toggle'] = 'Click To Toggle';
|
||||||
$lang['week_short'] = 'Wk';
|
$lang['week_short'] = 'Hf';
|
||||||
$lang['scroll_to_increment'] = 'Scroll To Increment';
|
$lang['scroll_to_increment'] = 'Scroll To Increment';
|
||||||
$lang['year'] = 'Year';
|
$lang['year'] = 'Yıl';
|
||||||
$lang['make_non_working_day'] = 'This provider will not be available for work on the selected day.';
|
$lang['make_non_working_day'] = 'Hizmet sağlayıcı seçilen günlerde müsait olmayacak';
|
||||||
$lang['no_breaks'] = 'No Breaks';
|
$lang['no_breaks'] = 'No Breaks';
|
||||||
$lang['service_categories'] = 'Service Categories';
|
$lang['service_categories'] = 'Hizmet Kategorileri';
|
||||||
$lang['service_category'] = 'Service Category';
|
$lang['service_category'] = 'Hizmet Kategorisi';
|
||||||
$lang['blocked_period_saved'] = 'Blocked period saved successfully.';
|
$lang['blocked_period_saved'] = 'Bloklanan Periyot başarıyla kaydedildi.'; // REVIEW
|
||||||
$lang['blocked_period_deleted'] = 'Blocked period deleted successfully.';
|
$lang['blocked_period_deleted'] = 'Blocked period deleted successfully.';
|
||||||
$lang['delete_blocked_period'] = 'Delete Blocked Period';
|
$lang['delete_blocked_period'] = 'Delete Blocked Period';
|
||||||
$lang['blocked_period'] = 'Blocked Period';
|
$lang['blocked_period'] = 'Blocked Period';
|
||||||
|
@ -446,7 +446,11 @@ $lang['blocked_periods'] = 'Blocked Periods';
|
||||||
$lang['blocked_period_save'] = 'Blocked Period Save';
|
$lang['blocked_period_save'] = 'Blocked Period Save';
|
||||||
$lang['blocked_period_delete'] = 'Blocked Period Delete';
|
$lang['blocked_period_delete'] = 'Blocked Period Delete';
|
||||||
$lang['blocked_periods_hint'] = 'Define periods of time where public bookings will be disabled for all providers (e.g. closed dates, holidays etc.).';
|
$lang['blocked_periods_hint'] = 'Define periods of time where public bookings will be disabled for all providers (e.g. closed dates, holidays etc.).';
|
||||||
$lang['custom_field'] = 'Custom Field';
|
$lang['custom_field'] = 'Değiştirilebilir Alan';
|
||||||
$lang['custom_fields'] = 'Custom Fields';
|
$lang['custom_fields'] = 'Değiştirilebilir Alanlar';
|
||||||
$lang['label'] = 'Label';
|
$lang['label'] = 'Etiket';
|
||||||
|
$lang['webhook_saved'] = 'Webhook saved successfully.';
|
||||||
|
$lang['webhook_deleted'] = 'Webhook deleted successfully.';
|
||||||
|
$lang['delete_webhook'] = 'Delete Webhook';
|
||||||
|
$lang['contact_info'] = 'İletişim Bilgisi';
|
||||||
// End
|
// End
|
||||||
|
|
|
@ -53,3 +53,5 @@ $lang['upload_no_filepath'] = 'The upload path does not appear to be valid.';
|
||||||
$lang['upload_no_file_types'] = 'You have not specified any allowed file types.';
|
$lang['upload_no_file_types'] = 'You have not specified any allowed file types.';
|
||||||
$lang['upload_bad_filename'] = 'The file name you submitted already exists on the server.';
|
$lang['upload_bad_filename'] = 'The file name you submitted already exists on the server.';
|
||||||
$lang['upload_not_writable'] = 'The upload destination folder does not appear to be writable.';
|
$lang['upload_not_writable'] = 'The upload destination folder does not appear to be writable.';
|
||||||
|
|
||||||
|
// REVIEW ileride kullanıcılardan bir belge alınması istenirse çevirileri kontrol et!
|
||||||
|
|
|
@ -151,7 +151,7 @@ class Api
|
||||||
#[NoReturn]
|
#[NoReturn]
|
||||||
public function request_authentication(): void
|
public function request_authentication(): void
|
||||||
{
|
{
|
||||||
header('WWW-Authenticate: Basic realm="Easy!Appointments"');
|
header('WWW-Authenticate: Basic realm="MAKET Randevu"');
|
||||||
header('HTTP/1.0 401 Unauthorized');
|
header('HTTP/1.0 401 Unauthorized');
|
||||||
exit('You are not authorized to use the API.');
|
exit('You are not authorized to use the API.');
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php defined('BASEPATH') or exit('No direct script access allowed');
|
<?php defined('BASEPATH') or exit('No direct script access allowed');
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------------
|
/* ----------------------------------------------------------------------------
|
||||||
* Easy!Appointments - Open Source Web Scheduler
|
* MAKET Randevu - Open Source Web Scheduler
|
||||||
*
|
*
|
||||||
* @package EasyAppointments
|
* @package EasyAppointments
|
||||||
* @author A.Tselegidis <alextselegidis@gmail.com>
|
* @author A.Tselegidis <alextselegidis@gmail.com>
|
||||||
|
@ -41,6 +41,10 @@ class Captcha_builder
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $lineColor = null;
|
protected $lineColor = null;
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $background = null;
|
||||||
/**
|
/**
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -125,16 +125,15 @@ class Instance
|
||||||
// Provider
|
// Provider
|
||||||
|
|
||||||
$this->CI->providers_model->save([
|
$this->CI->providers_model->save([
|
||||||
'first_name' => 'Jane',
|
'first_name' => 'Hizmet Sağlayıcı İsmini Buraya Girin',
|
||||||
'last_name' => 'Doe',
|
'last_name' => 'Hizmet Sağlayıcı Soyismini Buraya Girin',
|
||||||
'email' => 'jane@example.org',
|
'email' => 'hizmet_saglayici_mail@example.org',
|
||||||
'phone_number' => '+10000000000',
|
'phone_number' => '+90 (000) 000-0000',
|
||||||
'services' => [$service_id],
|
'services' => [$service_id],
|
||||||
'settings' => [
|
'settings' => [
|
||||||
'username' => 'janedoe',
|
'username' => 'ilkhizmetsaglayici',
|
||||||
'password' => random_string(),
|
'password' => random_string(),
|
||||||
'working_plan' => setting('company_working_plan'),
|
'working_plan' => setting('company_working_plan'),
|
||||||
'working_plan_exceptions' => '{}',
|
|
||||||
'notifications' => true,
|
'notifications' => true,
|
||||||
'google_sync' => false,
|
'google_sync' => false,
|
||||||
'sync_past_days' => 30,
|
'sync_past_days' => 30,
|
||||||
|
@ -146,10 +145,10 @@ class Instance
|
||||||
// Customer
|
// Customer
|
||||||
|
|
||||||
$this->CI->customers_model->save([
|
$this->CI->customers_model->save([
|
||||||
'first_name' => 'James',
|
'first_name' => 'Örnek Müşteri İsmi',
|
||||||
'last_name' => 'Doe',
|
'last_name' => 'Örnek Müşteri Soyismi',
|
||||||
'email' => 'james@example.org',
|
'email' => 'ornek_musteri@example.org',
|
||||||
'phone_number' => '+10000000000',
|
'phone_number' => '+90 (000) 000-0000',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return $password;
|
return $password;
|
||||||
|
|
|
@ -63,7 +63,7 @@ class Notifications
|
||||||
bool $manage_mode = false,
|
bool $manage_mode = false,
|
||||||
): void {
|
): void {
|
||||||
try {
|
try {
|
||||||
$current_language = config('english');
|
$current_language = config('language');
|
||||||
|
|
||||||
$customer_link = site_url('booking/reschedule/' . $appointment['hash']);
|
$customer_link = site_url('booking/reschedule/' . $appointment['hash']);
|
||||||
|
|
||||||
|
|
|
@ -28,14 +28,15 @@ class Timezones
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected string $default = 'UTC';
|
protected string $default = 'Istanbul (+3:00)'; // REVIEW is it working??
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected array $timezones = [
|
protected array $timezones = [
|
||||||
'UTC' => [
|
'General' => [
|
||||||
'UTC' => 'UTC',
|
'UTC' => 'UTC',
|
||||||
|
'Europe/Istanbul' => 'Istanbul (+3:00)', // REVIEW is this line proper and working correctly???
|
||||||
],
|
],
|
||||||
'America' => [
|
'America' => [
|
||||||
'America/Adak' => 'Adak (-10:00)',
|
'America/Adak' => 'Adak (-10:00)',
|
||||||
|
@ -317,7 +318,6 @@ class Timezones
|
||||||
'Europe/Bucharest' => 'Bucharest (+2:00)',
|
'Europe/Bucharest' => 'Bucharest (+2:00)',
|
||||||
'Europe/Chisinau' => 'Chisinau (+2:00)',
|
'Europe/Chisinau' => 'Chisinau (+2:00)',
|
||||||
'Europe/Helsinki' => 'Helsinki (+2:00)',
|
'Europe/Helsinki' => 'Helsinki (+2:00)',
|
||||||
'Europe/Istanbul' => 'Istanbul (+3:00)',
|
|
||||||
'Europe/Kaliningrad' => 'Kaliningrad (+2:00)',
|
'Europe/Kaliningrad' => 'Kaliningrad (+2:00)',
|
||||||
'Europe/Kiev' => 'Kiev (+2:00)',
|
'Europe/Kiev' => 'Kiev (+2:00)',
|
||||||
'Europe/Mariehamn' => 'Mariehamn (+2:00)',
|
'Europe/Mariehamn' => 'Mariehamn (+2:00)',
|
||||||
|
@ -331,6 +331,7 @@ class Timezones
|
||||||
'Europe/Uzhgorod' => 'Uzhgorod (+2:00)',
|
'Europe/Uzhgorod' => 'Uzhgorod (+2:00)',
|
||||||
'Europe/Vilnius' => 'Vilnius (+2:00)',
|
'Europe/Vilnius' => 'Vilnius (+2:00)',
|
||||||
'Europe/Zaporozhye' => 'Zaporozhye (+2:00)',
|
'Europe/Zaporozhye' => 'Zaporozhye (+2:00)',
|
||||||
|
'Europe/Istanbul' => 'Istanbul (+3:00)',
|
||||||
'Europe/Moscow' => 'Moscow (+3:00)',
|
'Europe/Moscow' => 'Moscow (+3:00)',
|
||||||
'Europe/Volgograd' => 'Volgograd (+3:00)',
|
'Europe/Volgograd' => 'Volgograd (+3:00)',
|
||||||
'Europe/Samara' => 'Samara (+4:00)',
|
'Europe/Samara' => 'Samara (+4:00)',
|
||||||
|
@ -343,13 +344,13 @@ class Timezones
|
||||||
'Asia/Beirut' => 'Beirut (+2:00)',
|
'Asia/Beirut' => 'Beirut (+2:00)',
|
||||||
'Asia/Damascus' => 'Damascus (+2:00)',
|
'Asia/Damascus' => 'Damascus (+2:00)',
|
||||||
'Asia/Gaza' => 'Gaza (+2:00)',
|
'Asia/Gaza' => 'Gaza (+2:00)',
|
||||||
'Asia/Istanbul' => 'Istanbul (+3:00)',
|
|
||||||
'Asia/Jerusalem' => 'Jerusalem (+2:00)',
|
'Asia/Jerusalem' => 'Jerusalem (+2:00)',
|
||||||
'Asia/Nicosia' => 'Nicosia (+2:00)',
|
'Asia/Nicosia' => 'Nicosia (+2:00)',
|
||||||
'Asia/Tel_Aviv' => 'Tel_Aviv (+2:00)',
|
'Asia/Tel_Aviv' => 'Tel_Aviv (+2:00)',
|
||||||
'Asia/Aden' => 'Aden (+3:00)',
|
'Asia/Aden' => 'Aden (+3:00)',
|
||||||
'Asia/Baghdad' => 'Baghdad (+3:00)',
|
'Asia/Baghdad' => 'Baghdad (+3:00)',
|
||||||
'Asia/Bahrain' => 'Bahrain (+3:00)',
|
'Asia/Bahrain' => 'Bahrain (+3:00)',
|
||||||
|
'Asia/Istanbul' => 'Istanbul (+3:00)',
|
||||||
'Asia/Kuwait' => 'Kuwait (+3:00)',
|
'Asia/Kuwait' => 'Kuwait (+3:00)',
|
||||||
'Asia/Qatar' => 'Qatar (+3:00)',
|
'Asia/Qatar' => 'Qatar (+3:00)',
|
||||||
'Asia/Tehran' => 'Tehran (+3:30)',
|
'Asia/Tehran' => 'Tehran (+3:30)',
|
||||||
|
@ -530,7 +531,7 @@ class Timezones
|
||||||
*/
|
*/
|
||||||
public function get_default_timezone(): string
|
public function get_default_timezone(): string
|
||||||
{
|
{
|
||||||
return 'UTC';
|
return 'Europe/Istanbul'; // REVIEW is it working in proper way?
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -23,7 +23,7 @@ class Migration_Add_timezone_to_users extends EA_Migration
|
||||||
'timezone' => [
|
'timezone' => [
|
||||||
'type' => 'VARCHAR',
|
'type' => 'VARCHAR',
|
||||||
'constraint' => '256',
|
'constraint' => '256',
|
||||||
'default' => 'UTC',
|
'default' => 'Europe/Istanbul', // REVIEW Works under migration ?
|
||||||
'after' => 'notes',
|
'after' => 'notes',
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -96,7 +96,9 @@ class Services_model extends EA_Model
|
||||||
|
|
||||||
// If a category was provided then make sure it really exists in the database.
|
// If a category was provided then make sure it really exists in the database.
|
||||||
if (!empty($service['id_service_categories'])) {
|
if (!empty($service['id_service_categories'])) {
|
||||||
$count = $this->db->get_where('categories', ['id' => $service['id_service_categories']])->num_rows();
|
$count = $this->db
|
||||||
|
->get_where('service_categories', ['id' => $service['id_service_categories']])
|
||||||
|
->num_rows();
|
||||||
|
|
||||||
if (!$count) {
|
if (!$count) {
|
||||||
throw new InvalidArgumentException(
|
throw new InvalidArgumentException(
|
||||||
|
@ -387,7 +389,7 @@ class Services_model extends EA_Model
|
||||||
foreach ($resources as $resource) {
|
foreach ($resources as $resource) {
|
||||||
$service['category'] = match ($resource) {
|
$service['category'] = match ($resource) {
|
||||||
'category' => $this->db
|
'category' => $this->db
|
||||||
->get_where('categories', [
|
->get_where('service_categories', [
|
||||||
'id' => $service['id_service_categories'] ?? ($service['serviceCategoryId'] ?? null),
|
'id' => $service['id_service_categories'] ?? ($service['serviceCategoryId'] ?? null),
|
||||||
])
|
])
|
||||||
->row_array(),
|
->row_array(),
|
||||||
|
|
|
@ -277,4 +277,65 @@ class Webhooks_model extends EA_Model
|
||||||
{
|
{
|
||||||
// Webhooks do not currently have any related resources.
|
// Webhooks do not currently have any related resources.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert the database webhook record to the equivalent API resource.
|
||||||
|
*
|
||||||
|
* @param array $webhook Webhook data.
|
||||||
|
*/
|
||||||
|
public function api_encode(array &$webhook): void
|
||||||
|
{
|
||||||
|
$encoded_resource = [
|
||||||
|
'id' => array_key_exists('id', $webhook) ? (int) $webhook['id'] : null,
|
||||||
|
'name' => $webhook['name'],
|
||||||
|
'url' => $webhook['url'],
|
||||||
|
'actions' => $webhook['actions'],
|
||||||
|
'secret_token' => $webhook['secret_token'],
|
||||||
|
'is_ssl_verified' => $webhook['is_ssl_verified'],
|
||||||
|
'notes' => $webhook['notes'],
|
||||||
|
];
|
||||||
|
|
||||||
|
$webhook = $encoded_resource;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert the API resource to the equivalent database webhook record.
|
||||||
|
*
|
||||||
|
* @param array $webhook API resource.
|
||||||
|
* @param array|null $base Base webhook data to be overwritten with the provided values (useful for updates).
|
||||||
|
*/
|
||||||
|
public function api_decode(array &$webhook, array $base = null)
|
||||||
|
{
|
||||||
|
$decoded_resource = $base ?: [];
|
||||||
|
|
||||||
|
if (array_key_exists('id', $webhook)) {
|
||||||
|
$decoded_resource['id'] = $webhook['id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (array_key_exists('name', $webhook)) {
|
||||||
|
$decoded_resource['name'] = $webhook['name'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (array_key_exists('url', $webhook)) {
|
||||||
|
$decoded_resource['url'] = $webhook['url'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (array_key_exists('actions', $webhook)) {
|
||||||
|
$decoded_resource['actions'] = $webhook['actions'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (array_key_exists('secretToken', $webhook)) {
|
||||||
|
$decoded_resource['secret_token'] = $webhook['secretToken'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (array_key_exists('isSslVerified', $webhook)) {
|
||||||
|
$decoded_resource['is_ssl_verified'] = $webhook['isSslVerified'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (array_key_exists('notes', $webhook)) {
|
||||||
|
$decoded_resource['notes'] = $webhook['notes'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$webhook = $decoded_resource;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -172,7 +172,7 @@
|
||||||
<small>
|
<small>
|
||||||
<?= lang('current_user') ?>:
|
<?= lang('current_user') ?>:
|
||||||
<span>
|
<span>
|
||||||
<?= $timezones[session('timezone', 'UTC')] ?>
|
<?= $timezones[session('timezone', 'Europe/Istanbul')] ?>
|
||||||
</span>
|
</span>
|
||||||
</small>
|
</small>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
?>
|
?>
|
||||||
<div id="footer" class="d-lg-flex justify-content-lg-start align-items-lg-center p-2 text-center text-lg-left mt-auto">
|
<div id="footer" class="d-lg-flex justify-content-lg-start align-items-lg-center p-2 text-center text-lg-left mt-auto">
|
||||||
<div class="mb-3 me-lg-5 mb-lg-0">
|
<div class="mb-3 me-lg-5 mb-lg-0">
|
||||||
<img class="me-1" src="<?= base_url('assets/img/logo-16x16.png') ?>" alt="Easy!Appointments Logo">
|
<img class="me-1" src="<?= base_url('assets/img/logo-16x16.png') ?>" alt="MAKET Randevu Logo">
|
||||||
|
|
||||||
<a href="<?= branding('software','website')?>"><?= branding('software','name')?></a>
|
<a href="<?= branding('software','website')?>"><?= branding('software','name')?></a>
|
||||||
|
|
||||||
|
|
|
@ -11,13 +11,19 @@
|
||||||
<div id="wizard-frame-4" class="wizard-frame" style="display:none;">
|
<div id="wizard-frame-4" class="wizard-frame" style="display:none;">
|
||||||
<div class="frame-container">
|
<div class="frame-container">
|
||||||
<h2 class="frame-title"><?= lang('appointment_confirmation') ?></h2>
|
<h2 class="frame-title"><?= lang('appointment_confirmation') ?></h2>
|
||||||
<div class="row frame-content">
|
|
||||||
<div id="appointment-details" class="col-12 col-md-6 text-center text-md-start"></div>
|
<div class="row frame-content m-auto pt-md-4 mb-4">
|
||||||
<div id="customer-details" class="col-12 col-md-6 text-center text-md-end"></div>
|
<div id="appointment-details" class="col-12 col-md-6 text-center text-md-start mb-2 mb-md-0">
|
||||||
|
<!-- JS -->
|
||||||
|
</div>
|
||||||
|
<div id="customer-details" class="col-12 col-md-6 text-center text-md-end">
|
||||||
|
<!-- JS -->
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php if (setting('require_captcha')): ?>
|
<?php if (setting('require_captcha')): ?>
|
||||||
<div class="row frame-content">
|
<div class="row frame-content m-auto">
|
||||||
<div class="col-12 col-md-6">
|
<div class="col">
|
||||||
<label class="captcha-title" for="captcha-text">
|
<label class="captcha-title" for="captcha-text">
|
||||||
CAPTCHA
|
CAPTCHA
|
||||||
<button class="btn btn-link text-dark text-decoration-none py-0">
|
<button class="btn btn-link text-dark text-decoration-none py-0">
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
<?= lang('timezone') ?>
|
<?= lang('timezone') ?>
|
||||||
</label>
|
</label>
|
||||||
<?php component('timezone_dropdown', [
|
<?php component('timezone_dropdown', [
|
||||||
'attributes' => 'id="select-timezone" class="form-control" value="UTC"',
|
'attributes' => 'id="select-timezone" class="form-control" value="Europe/Istanbul"',
|
||||||
'grouped_timezones' => $grouped_timezones,
|
'grouped_timezones' => $grouped_timezones,
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
<h2 class="frame-title"><?= lang('service_and_provider') ?></h2>
|
<h2 class="frame-title"><?= lang('service_and_provider') ?></h2>
|
||||||
|
|
||||||
<div class="row frame-content">
|
<div class="row frame-content">
|
||||||
<div class="col">
|
<div class="col col-md-8 offset-md-2 mt-md-5">
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="select-service">
|
<label for="select-service">
|
||||||
<strong><?= lang('service') ?></strong>
|
<strong><?= lang('service') ?></strong>
|
||||||
|
@ -83,7 +83,9 @@
|
||||||
<select id="select-provider" class="form-control"></select>
|
<select id="select-provider" class="form-control"></select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="service-description"></div>
|
<div id="service-description" class="small">
|
||||||
|
<!-- JS -->
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -63,7 +63,7 @@
|
||||||
<small>
|
<small>
|
||||||
<?= lang('current_user') ?>:
|
<?= lang('current_user') ?>:
|
||||||
<span>
|
<span>
|
||||||
<?= $timezones[session('timezone', 'UTC')] ?>
|
<?= $timezones[session('timezone', 'Europe/Istanbul')] ?>
|
||||||
</span>
|
</span>
|
||||||
</small>
|
</small>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
|
||||||
<title>Error | Easy!Appointments</title>
|
<title>Error | MAKET Randevu</title>
|
||||||
<style>
|
<style>
|
||||||
#error-container {
|
#error-container {
|
||||||
background: #ffffff;
|
background: #ffffff;
|
||||||
|
@ -74,7 +74,7 @@
|
||||||
<p>
|
<p>
|
||||||
<small>
|
<small>
|
||||||
|
|
||||||
<a href="https://easyappointments.org">Easy!Appointments</a>
|
<a href="https://iflpanel.com/about/maketrandevu">MAKET Randevu</a>
|
||||||
</small>
|
</small>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
<?php slot('meta'); ?>
|
<?php slot('meta'); ?>
|
||||||
|
|
||||||
<title><?= vars('page_title') ?? lang('backend_section') ?> | Easy!Appointments</title>
|
<title><?= vars('page_title') ?? lang('backend_section') ?> | MAKET Randevu</title>
|
||||||
|
|
||||||
<link rel="icon" type="image/x-icon" href="<?= asset_url('assets/img/favicon.ico') ?>">
|
<link rel="icon" type="image/x-icon" href="<?= asset_url('assets/img/favicon.ico') ?>">
|
||||||
<link rel="icon" sizes="192x192" href="<?= asset_url('assets/img/logo.png') ?>">
|
<link rel="icon" sizes="192x192" href="<?= asset_url('assets/img/logo.png') ?>">
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<meta name="theme-color" content="#35A768">
|
<meta name="theme-color" content="#35A768">
|
||||||
<meta name="google" content="notranslate">
|
<meta name="google" content="notranslate">
|
||||||
|
|
||||||
<meta property="og:title" content="<?= lang('page_title') . ' ' . vars('company_name') ?> | Easy!Appointments"/>
|
<meta property="og:title" content="<?= lang('page_title') . ' ' . vars('company_name') ?> | MAKET Randevu"/>
|
||||||
<meta property="og:description" content="Book Your Appointment With A Few Clicks"/>
|
<meta property="og:description" content="Book Your Appointment With A Few Clicks"/>
|
||||||
<meta property="og:url" content="<?= base_url() ?>">
|
<meta property="og:url" content="<?= base_url() ?>">
|
||||||
<meta property="og:image" content="<?= base_url('assets/img/social-card.png') ?>"/>
|
<meta property="og:image" content="<?= base_url('assets/img/social-card.png') ?>"/>
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
<?php slot('meta'); ?>
|
<?php slot('meta'); ?>
|
||||||
|
|
||||||
<title><?= lang('page_title') . ' ' . vars('company_name') ?> | Easy!Appointments</title>
|
<title><?= lang('page_title') . ' ' . vars('company_name') ?> | MAKET Randevu</title>
|
||||||
|
|
||||||
<link rel="icon" type="image/x-icon" href="<?= asset_url('assets/img/favicon.ico') ?>">
|
<link rel="icon" type="image/x-icon" href="<?= asset_url('assets/img/favicon.ico') ?>">
|
||||||
<link rel="icon" sizes="192x192" href="<?= asset_url('assets/img/logo.png') ?>">
|
<link rel="icon" sizes="192x192" href="<?= asset_url('assets/img/logo.png') ?>">
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
<?php slot('meta'); ?>
|
<?php slot('meta'); ?>
|
||||||
|
|
||||||
<title><?= vars('page_title') ?> | Easy!Appointments</title>
|
<title><?= vars('page_title') ?> | MAKET Randevu</title>
|
||||||
|
|
||||||
<link rel="icon" type="image/x-icon" href="<?= asset_url('assets/img/favicon.ico') ?>">
|
<link rel="icon" type="image/x-icon" href="<?= asset_url('assets/img/favicon.ico') ?>">
|
||||||
<link rel="icon" sizes="192x192" href="<?= asset_url('assets/img/logo.png') ?>">
|
<link rel="icon" sizes="192x192" href="<?= asset_url('assets/img/logo.png') ?>">
|
||||||
|
@ -32,8 +32,7 @@
|
||||||
|
|
||||||
<div class="mt-2">
|
<div class="mt-2">
|
||||||
<small>
|
<small>
|
||||||
|
<?= lang("powered_by") ?>
|
||||||
<a href="https://easyappointments.org">Easy!Appointments</a>
|
|
||||||
</small>
|
</small>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -6,10 +6,10 @@
|
||||||
<div id="about" class="col-lg-8 offset-lg-2">
|
<div id="about" class="col-lg-8 offset-lg-2">
|
||||||
|
|
||||||
<div class="text-center my-5">
|
<div class="text-center my-5">
|
||||||
<img src="<?= base_url('assets/img/logo.png') ?>" alt="Easy!Appointments Logo" class="mb-5">
|
<img src="<?= base_url('assets/img/logo.png') ?>" alt="MAKET Randevu Logo" class="mb-5">
|
||||||
|
|
||||||
<h3>
|
<h3>
|
||||||
Easy!Appointments
|
<?= branding("software", "name") ?>
|
||||||
</h3>
|
</h3>
|
||||||
<h6 class="text-primary">
|
<h6 class="text-primary">
|
||||||
Online Appointment Scheduler
|
Online Appointment Scheduler
|
||||||
|
|
|
@ -28,6 +28,11 @@
|
||||||
|
|
||||||
<div class="record-details col-12 col-md-5">
|
<div class="record-details col-12 col-md-5">
|
||||||
<div class="btn-toolbar mb-4">
|
<div class="btn-toolbar mb-4">
|
||||||
|
<a href="<?= site_url('business_settings') ?>" class="btn btn-outline-primary me-2">
|
||||||
|
<i class="fas fa-chevron-left me-2"></i>
|
||||||
|
<?= lang('back') ?>
|
||||||
|
</a>
|
||||||
|
|
||||||
<div class="add-edit-delete-group btn-group">
|
<div class="add-edit-delete-group btn-group">
|
||||||
<button id="add-blocked-period" class="btn btn-primary">
|
<button id="add-blocked-period" class="btn btn-primary">
|
||||||
<i class="fas fa-plus-square me-2"></i>
|
<i class="fas fa-plus-square me-2"></i>
|
||||||
|
@ -52,11 +57,6 @@
|
||||||
<?= lang('cancel') ?>
|
<?= lang('cancel') ?>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<a href="<?= site_url('business_settings') ?>" class="btn btn-outline-primary ms-4">
|
|
||||||
<i class="fas fa-chevron-left me-2"></i>
|
|
||||||
<?= lang('back') ?>
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h4 class="text-black-50 mb-3 fw-light">
|
<h4 class="text-black-50 mb-3 fw-light">
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||||||
|
|
||||||
<title>Installation | Easy!Appointments</title>
|
<title>Installation | MAKET Randevu</title>
|
||||||
|
|
||||||
<link rel="icon" type="image/x-icon" href="<?= asset_url('assets/img/favicon.ico') ?>">
|
<link rel="icon" type="image/x-icon" href="<?= asset_url('assets/img/favicon.ico') ?>">
|
||||||
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/themes/default.min.css') ?>">
|
<link rel="stylesheet" type="text/css" href="<?= asset_url('assets/css/themes/default.min.css') ?>">
|
||||||
|
@ -17,20 +17,20 @@
|
||||||
|
|
||||||
<header>
|
<header>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h1 class="page-title">Easy!Appointments Installation</h1>
|
<h1 class="page-title">MAKET Randevu Installation</h1>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div class="content container">
|
<div class="content container">
|
||||||
<div class="welcome">
|
<div class="welcome">
|
||||||
<h3>Welcome to the Easy!Appointments installation page.</h3>
|
<h3>Welcome to the MAKET Randevu installation page.</h3>
|
||||||
<p>
|
<p>
|
||||||
This page will help you set the main settings of your Easy!Appointments installation. You will be able to
|
This page will help you set the main settings of your MAKET Randevu installation. You will be able to
|
||||||
edit these settings and many more in the backend session of your system. Remember to use the
|
edit these settings and many more in the backend session of your system. Remember to use the
|
||||||
<strong class="text-primary"><?= site_url('user/login') ?></strong> URL to connect to the backend section
|
<strong class="text-primary"><?= site_url('user/login') ?></strong> URL to connect to the backend section
|
||||||
of Easy!Appointments.
|
of MAKET Randevu.
|
||||||
|
|
||||||
If you face any problems during the usage of Easy!Appointments you can always check the
|
If you face any problems during the usage of MAKET Randevu you can always check the
|
||||||
<a href="https://easyappointments.org/docs.html">Documentation</a> and
|
<a href="https://easyappointments.org/docs.html">Documentation</a> and
|
||||||
<a href="https://groups.google.com/group/easy-appointments">Support Group</a> for getting help. You may also
|
<a href="https://groups.google.com/group/easy-appointments">Support Group</a> for getting help. You may also
|
||||||
submit new issues on
|
submit new issues on
|
||||||
|
@ -113,9 +113,9 @@
|
||||||
|
|
||||||
<div class="mb-2">
|
<div class="mb-2">
|
||||||
<h3>License</h3>
|
<h3>License</h3>
|
||||||
Easy!Appointments is licensed under the <span class="badge bg-secondary">GPL-3.0 license</span>. By using the
|
MAKET Randevu is licensed under the <span class="badge bg-secondary">GPL-3.0 license</span>. By using the
|
||||||
code
|
code
|
||||||
of Easy!Appointments in any way <br> you agree with the terms described in the following url:
|
of MAKET Randevu in any way <br> you agree with the terms described in the following url:
|
||||||
<a href="https://www.gnu.org/licenses/gpl-3.0.en.html">https://www.gnu.org/licenses/gpl-3.0.en.html</a>
|
<a href="https://www.gnu.org/licenses/gpl-3.0.en.html">https://www.gnu.org/licenses/gpl-3.0.en.html</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -123,13 +123,13 @@
|
||||||
|
|
||||||
<button type="button" id="install" class="btn btn-primary">
|
<button type="button" id="install" class="btn btn-primary">
|
||||||
<i class="icon-white icon-ok me-2"></i>
|
<i class="icon-white icon-ok me-2"></i>
|
||||||
Install Easy!Appointments
|
Install MAKET Randevu
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<footer>
|
<footer>
|
||||||
|
|
||||||
<a href="https://easyappointments.org">Easy!Appointments</a>
|
<a href="https://easyappointments.org">MAKET Randevu</a>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<?php component('js_vars_script'); ?>
|
<?php component('js_vars_script'); ?>
|
||||||
|
|
|
@ -27,6 +27,11 @@
|
||||||
|
|
||||||
<div class="record-details column col-12 col-md-5">
|
<div class="record-details column col-12 col-md-5">
|
||||||
<div class="btn-toolbar mb-4">
|
<div class="btn-toolbar mb-4">
|
||||||
|
<a href="<?= site_url('integrations') ?>" class="btn btn-outline-primary me-2">
|
||||||
|
<i class="fas fa-chevron-left me-2"></i>
|
||||||
|
<?= lang('back') ?>
|
||||||
|
</a>
|
||||||
|
|
||||||
<div class="add-edit-delete-group btn-group">
|
<div class="add-edit-delete-group btn-group">
|
||||||
<button id="add-webhook" class="btn btn-primary">
|
<button id="add-webhook" class="btn btn-primary">
|
||||||
<i class="fas fa-plus-square me-2"></i>
|
<i class="fas fa-plus-square me-2"></i>
|
||||||
|
@ -51,11 +56,6 @@
|
||||||
<?= lang('cancel') ?>
|
<?= lang('cancel') ?>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<a href="<?= site_url('integrations') ?>" class="btn btn-outline-primary ms-4">
|
|
||||||
<i class="fas fa-chevron-left me-2"></i>
|
|
||||||
<?= lang('back') ?>
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h4 class="text-black-50 mb-3 fw-light">
|
<h4 class="text-black-50 mb-3 fw-light">
|
||||||
|
|
|
@ -185,7 +185,7 @@ body {
|
||||||
margin: 15px 0;
|
margin: 15px 0;
|
||||||
padding-right: 10px;
|
padding-right: 10px;
|
||||||
width: auto;
|
width: auto;
|
||||||
max-height: 255px;
|
max-height: 250px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#book-appointment-wizard #available-hours div {
|
#book-appointment-wizard #available-hours div {
|
||||||
|
@ -273,6 +273,10 @@ body {
|
||||||
margin: 15px 0;
|
margin: 15px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#book-appointment-wizard #wizard-frame-4 .frame-container .frame-content {
|
||||||
|
max-width: 630px;
|
||||||
|
}
|
||||||
|
|
||||||
@media (min-width: 768px) {
|
@media (min-width: 768px) {
|
||||||
.wrapper {
|
.wrapper {
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
|
|
|
@ -52,6 +52,8 @@ App.Components.AppointmentsModal = (function () {
|
||||||
const $customField4 = $('#custom-field-4');
|
const $customField4 = $('#custom-field-4');
|
||||||
const $customField5 = $('#custom-field-5');
|
const $customField5 = $('#custom-field-5');
|
||||||
|
|
||||||
|
const moment = window.moment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update the displayed timezone.
|
* Update the displayed timezone.
|
||||||
*/
|
*/
|
||||||
|
@ -85,8 +87,11 @@ App.Components.AppointmentsModal = (function () {
|
||||||
// ID must exist on the object in order for the model to update the record and not to perform
|
// ID must exist on the object in order for the model to update the record and not to perform
|
||||||
// an insert operation.
|
// an insert operation.
|
||||||
|
|
||||||
const startDatetime = moment($startDatetime[0]._flatpickr.selectedDates[0]).format('YYYY-MM-DD HH:mm:ss');
|
const startDateTimeObject = App.Utils.UI.getDateTimePickerValue($startDatetime);
|
||||||
const endDatetime = moment($endDatetime[0]._flatpickr.selectedDates[0]).format('YYYY-MM-DD HH:mm:ss');
|
const startDatetime = moment(startDateTimeObject).format('YYYY-MM-DD HH:mm:ss');
|
||||||
|
|
||||||
|
const endDateTimeObject = App.Utils.UI.getDateTimePickerValue($endDatetime);
|
||||||
|
const endDatetime = moment(endDateTimeObject).format('YYYY-MM-DD HH:mm:ss');
|
||||||
|
|
||||||
const appointment = {
|
const appointment = {
|
||||||
id_services: $selectService.val(),
|
id_services: $selectService.val(),
|
||||||
|
@ -204,8 +209,8 @@ App.Components.AppointmentsModal = (function () {
|
||||||
startMoment.add(1, 'hour').set({minutes: 0});
|
startMoment.add(1, 'hour').set({minutes: 0});
|
||||||
}
|
}
|
||||||
|
|
||||||
$startDatetime[0]._flatpickr.setDate(startMoment.toDate());
|
App.Utils.UI.setDateTimePickerValue($startDatetime, startMoment.toDate());
|
||||||
$endDatetime[0]._flatpickr.setDate(startMoment.add(duration, 'minutes').toDate());
|
App.Utils.UI.setDateTimePickerValue($endDatetime, startMoment.add(duration, 'minutes').toDate());
|
||||||
|
|
||||||
// Display modal form.
|
// Display modal form.
|
||||||
$appointmentsModal.find('.modal-header h3').text(lang('new_appointment_title'));
|
$appointmentsModal.find('.modal-header h3').text(lang('new_appointment_title'));
|
||||||
|
@ -362,8 +367,9 @@ App.Components.AppointmentsModal = (function () {
|
||||||
|
|
||||||
const duration = service ? service.duration : 60;
|
const duration = service ? service.duration : 60;
|
||||||
|
|
||||||
const start = $startDatetime[0]._flatpickr.selectedDates[0];
|
const startDateTimeObject = App.Utils.UI.getDateTimePickerValue($startDatetime);
|
||||||
$endDatetime[0]._flatpickr.setDate(new Date(start.getTime() + duration * 60000));
|
const endDateTimeObject = new Date(startDateTimeObject.getTime() + duration * 60000);
|
||||||
|
App.Utils.UI.setDateTimePickerValue($endDatetime, endDateTimeObject);
|
||||||
|
|
||||||
// Update the providers select box.
|
// Update the providers select box.
|
||||||
|
|
||||||
|
@ -481,7 +487,7 @@ App.Components.AppointmentsModal = (function () {
|
||||||
const startDatetime = new Date();
|
const startDatetime = new Date();
|
||||||
const endDatetime = moment().add(duration, 'minutes').toDate();
|
const endDatetime = moment().add(duration, 'minutes').toDate();
|
||||||
|
|
||||||
App.Utils.UI.initializeDatetimepicker($startDatetime, {
|
App.Utils.UI.initializeDateTimePicker($startDatetime, {
|
||||||
onClose: () => {
|
onClose: () => {
|
||||||
const serviceId = $selectService.val();
|
const serviceId = $selectService.val();
|
||||||
|
|
||||||
|
@ -490,15 +496,16 @@ App.Components.AppointmentsModal = (function () {
|
||||||
(availableService) => Number(availableService.id) === Number(serviceId),
|
(availableService) => Number(availableService.id) === Number(serviceId),
|
||||||
);
|
);
|
||||||
|
|
||||||
const start = $startDatetime[0]._flatpickr.selectedDates[0];
|
const startDateTimeObject = App.Utils.UI.getDateTimePickerValue($startDatetime);
|
||||||
$endDatetime[0]._flatpickr.setDate(new Date(start.getTime() + service.duration * 60000));
|
const endDateTimeObject = new Date(startDateTimeObject.getTime() + service.duration * 60000);
|
||||||
|
App.Utils.UI.setDateTimePickerValue($endDatetime, endDateTimeObject);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
$startDatetime[0]._flatpickr.setDate(startDatetime);
|
App.Utils.UI.setDateTimePickerValue($startDatetime, startDatetime);
|
||||||
|
|
||||||
App.Utils.UI.initializeDatetimepicker($endDatetime);
|
App.Utils.UI.initializeDateTimePicker($endDatetime);
|
||||||
$endDatetime[0]._flatpickr.setDate(endDatetime);
|
App.Utils.UI.setDateTimePickerValue($endDatetime, endDatetime);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -538,9 +545,10 @@ App.Components.AppointmentsModal = (function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check appointment start and end time.
|
// Check appointment start and end time.
|
||||||
const start = $startDatetime[0]._flatpickr.selectedDates[0];
|
const startDateTimeObject = App.Utils.UI.getDateTimePickerValue($startDatetime);
|
||||||
const end = $endDatetime[0]._flatpickr.selectedDates[0];
|
const endDateTimeObject = App.Utils.UI.getDateTimePickerValue($endDatetime);
|
||||||
if (start > end) {
|
|
||||||
|
if (startDateTimeObject > endDateTimeObject) {
|
||||||
$startDatetime.addClass('is-invalid');
|
$startDatetime.addClass('is-invalid');
|
||||||
$endDatetime.addClass('is-invalid');
|
$endDatetime.addClass('is-invalid');
|
||||||
throw new Error(lang('start_date_before_end_error'));
|
throw new Error(lang('start_date_before_end_error'));
|
||||||
|
|
|
@ -28,6 +28,8 @@ App.Components.UnavailabilitiesModal = (function () {
|
||||||
const $selectFilterItem = $('#select-filter-item');
|
const $selectFilterItem = $('#select-filter-item');
|
||||||
const $reloadAppointments = $('#reload-appointments');
|
const $reloadAppointments = $('#reload-appointments');
|
||||||
|
|
||||||
|
const moment = window.moment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update the displayed timezone.
|
* Update the displayed timezone.
|
||||||
*/
|
*/
|
||||||
|
@ -68,22 +70,22 @@ App.Components.UnavailabilitiesModal = (function () {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const startMoment = moment($startDatetime[0]._flatpickr.selectedDates[0]);
|
const startDateTimeMoment = moment(App.Utils.UI.getDateTimePickerValue($startDatetime));
|
||||||
|
|
||||||
if (!startMoment.isValid()) {
|
if (!startDateTimeMoment.isValid()) {
|
||||||
$startDatetime.addClass('is-invalid');
|
$startDatetime.addClass('is-invalid');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const endMoment = moment($endDatetime[0]._flatpickr.selectedDates[0]);
|
const endDateTimeMoment = moment(App.Utils.UI.getDateTimePickerValue($endDatetime));
|
||||||
|
|
||||||
if (!endMoment.isValid()) {
|
if (!endDateTimeMoment.isValid()) {
|
||||||
$endDatetime.addClass('is-invalid');
|
$endDatetime.addClass('is-invalid');
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (startMoment.isAfter(endMoment)) {
|
if (startDateTimeMoment.isAfter(endDateTimeMoment)) {
|
||||||
// Start time is after end time - display message to user.
|
// Start time is after end time - display message to user.
|
||||||
$unavailabilitiesModal
|
$unavailabilitiesModal
|
||||||
.find('.modal-message')
|
.find('.modal-message')
|
||||||
|
@ -100,8 +102,8 @@ App.Components.UnavailabilitiesModal = (function () {
|
||||||
|
|
||||||
// Unavailability period records go to the appointments table.
|
// Unavailability period records go to the appointments table.
|
||||||
const unavailability = {
|
const unavailability = {
|
||||||
start_datetime: startMoment.format('YYYY-MM-DD HH:mm:ss'),
|
start_datetime: startDateTimeMoment.format('YYYY-MM-DD HH:mm:ss'),
|
||||||
end_datetime: endMoment.format('YYYY-MM-DD HH:mm:ss'),
|
end_datetime: endDateTimeMoment.format('YYYY-MM-DD HH:mm:ss'),
|
||||||
notes: $unavailabilitiesModal.find('#unavailability-notes').val(),
|
notes: $unavailabilitiesModal.find('#unavailability-notes').val(),
|
||||||
id_users_provider: $selectProvider.val(),
|
id_users_provider: $selectProvider.val(),
|
||||||
};
|
};
|
||||||
|
@ -156,8 +158,8 @@ App.Components.UnavailabilitiesModal = (function () {
|
||||||
$selectProvider.val($selectFilterItem.val()).closest('.form-group').hide();
|
$selectProvider.val($selectFilterItem.val()).closest('.form-group').hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
$startDatetime[0]._flatpickr.setDate(startMoment.toDate());
|
App.Utils.UI.setDateTimePickerValue($startDatetime, startMoment.toDate());
|
||||||
$endDatetime[0]._flatpickr.setDate(startMoment.add(1, 'hour').toDate());
|
App.Utils.UI.setDateTimePickerValue($endDatetime, startMoment.add(1, 'hour').toDate());
|
||||||
|
|
||||||
$dialog.find('.modal-header h3').text(lang('new_unavailability_title'));
|
$dialog.find('.modal-header h3').text(lang('new_unavailability_title'));
|
||||||
$dialog.modal('show');
|
$dialog.modal('show');
|
||||||
|
@ -183,11 +185,11 @@ App.Components.UnavailabilitiesModal = (function () {
|
||||||
true,
|
true,
|
||||||
);
|
);
|
||||||
|
|
||||||
App.Utils.UI.initializeDatetimepicker($startDatetime);
|
App.Utils.UI.initializeDateTimePicker($startDatetime);
|
||||||
|
|
||||||
$startDatetime.val(start);
|
$startDatetime.val(start);
|
||||||
|
|
||||||
App.Utils.UI.initializeDatetimepicker($endDatetime);
|
App.Utils.UI.initializeDateTimePicker($endDatetime);
|
||||||
|
|
||||||
$endDatetime.val(end);
|
$endDatetime.val(end);
|
||||||
|
|
||||||
|
|
|
@ -77,19 +77,19 @@ App.Components.WorkingPlanExceptionsModal = (function () {
|
||||||
function validate() {
|
function validate() {
|
||||||
$modal.find('.is-invalid').removeClass('is-invalid');
|
$modal.find('.is-invalid').removeClass('is-invalid');
|
||||||
|
|
||||||
const date = $date[0]._flatpickr.selectedDates[0];
|
const date = App.Utils.UI.getDateTimePickerValue($date);
|
||||||
|
|
||||||
if (!date) {
|
if (!date) {
|
||||||
$date.addClass('is-invalid');
|
$date.addClass('is-invalid');
|
||||||
}
|
}
|
||||||
|
|
||||||
const start = $start[0]._flatpickr.selectedDates[0];
|
const start = App.Utils.UI.getDateTimePickerValue($start);
|
||||||
|
|
||||||
if (!start) {
|
if (!start) {
|
||||||
$start.addClass('is-invalid');
|
$start.addClass('is-invalid');
|
||||||
}
|
}
|
||||||
|
|
||||||
const end = $end[0]._flatpickr.selectedDates[0];
|
const end = App.Utils.UI.getDateTimePickerValue($end);
|
||||||
|
|
||||||
if (!end) {
|
if (!end) {
|
||||||
$end.addClass('is-invalid');
|
$end.addClass('is-invalid');
|
||||||
|
@ -157,15 +157,15 @@ App.Components.WorkingPlanExceptionsModal = (function () {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const date = moment($date[0]._flatpickr.selectedDates[0]).format('YYYY-MM-DD');
|
const date = moment(App.Utils.UI.getDateTimePickerValue($date)).format('YYYY-MM-DD');
|
||||||
|
|
||||||
const isNonWorkingDay = $isNonWorkingDay.prop('checked');
|
const isNonWorkingDay = $isNonWorkingDay.prop('checked');
|
||||||
|
|
||||||
const workingPlanException = isNonWorkingDay
|
const workingPlanException = isNonWorkingDay
|
||||||
? null
|
? null
|
||||||
: {
|
: {
|
||||||
start: moment($start[0]._flatpickr.selectedDates[0]).format('HH:mm'),
|
start: moment(App.Utils.UI.getDateTimePickerValue($start)).format('HH:mm'),
|
||||||
end: moment($end[0]._flatpickr.selectedDates[0]).format('HH:mm'),
|
end: moment(App.Utils.UI.getDateTimePickerValue($end)).format('HH:mm'),
|
||||||
breaks: getBreaks(),
|
breaks: getBreaks(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -223,9 +223,9 @@ App.Components.WorkingPlanExceptionsModal = (function () {
|
||||||
function add() {
|
function add() {
|
||||||
deferred = $.Deferred();
|
deferred = $.Deferred();
|
||||||
|
|
||||||
$date[0]._flatpickr.setDate(new Date());
|
App.Utils.UI.setDateTimePickerValue($date, new Date());
|
||||||
$start[0]._flatpickr.setDate(moment('08:00', 'HH:mm').toDate());
|
App.Utils.UI.setDateTimePickerValue($start, moment('08:00', 'HH:mm').toDate());
|
||||||
$end[0]._flatpickr.setDate(moment('20:00', 'HH:mm').toDate());
|
App.Utils.UI.setDateTimePickerValue($end, moment('20:00', 'HH:mm').toDate());
|
||||||
|
|
||||||
$isNonWorkingDay.prop('checked', false);
|
$isNonWorkingDay.prop('checked', false);
|
||||||
|
|
||||||
|
@ -249,11 +249,11 @@ App.Components.WorkingPlanExceptionsModal = (function () {
|
||||||
|
|
||||||
const isNonWorkingDay = !Boolean(workingPlanException);
|
const isNonWorkingDay = !Boolean(workingPlanException);
|
||||||
|
|
||||||
$date[0]._flatpickr.setDate(moment(date, 'YYYY-MM-DD').toDate());
|
App.Utils.UI.setDateTimePickerValue($date, moment(date, 'YYYY-MM-DD').toDate());
|
||||||
|
|
||||||
if (isNonWorkingDay === false) {
|
if (isNonWorkingDay === false) {
|
||||||
$start[0]._flatpickr.setDate(moment(workingPlanException.start, 'HH:mm').toDate());
|
App.Utils.UI.setDateTimePickerValue($start, moment(workingPlanException.start, 'HH:mm').toDate());
|
||||||
$end[0]._flatpickr.setDate(moment(workingPlanException.end, 'HH:mm').toDate());
|
App.Utils.UI.setDateTimePickerValue($end, moment(workingPlanException.end, 'HH:mm').toDate());
|
||||||
|
|
||||||
if (!workingPlanException.breaks) {
|
if (!workingPlanException.breaks) {
|
||||||
$breaks.find('tbody').html(renderNoBreaksRow());
|
$breaks.find('tbody').html(renderNoBreaksRow());
|
||||||
|
@ -267,8 +267,8 @@ App.Components.WorkingPlanExceptionsModal = (function () {
|
||||||
$breaks.find('tbody .working-plan-exceptions-break-start, tbody .working-plan-exceptions-break-end'),
|
$breaks.find('tbody .working-plan-exceptions-break-start, tbody .working-plan-exceptions-break-end'),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
$start[0]._flatpickr.setDate(moment('08:00', 'HH:mm').toDate());
|
App.Utils.UI.setDateTimePickerValue($start, moment('08:00', 'HH:mm').toDate());
|
||||||
$end[0]._flatpickr.setDate(moment('20:00', 'HH:mm').toDate());
|
App.Utils.UI.setDateTimePickerValue($end, moment('20:00', 'HH:mm').toDate());
|
||||||
$breaks.find('tbody').html(renderNoBreaksRow());
|
$breaks.find('tbody').html(renderNoBreaksRow());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -380,7 +380,7 @@ App.Components.WorkingPlanExceptionsModal = (function () {
|
||||||
// Make all cells in current row editable.
|
// Make all cells in current row editable.
|
||||||
let $tr = $(this).closest('tr');
|
let $tr = $(this).closest('tr');
|
||||||
$tr.children().trigger('edit');
|
$tr.children().trigger('edit');
|
||||||
App.Utils.UI.initializeTimepicker(
|
App.Utils.UI.initializeTimePicker(
|
||||||
$tr.find('.working-plan-exceptions-break-start input, .working-plan-exceptions-break-end input'),
|
$tr.find('.working-plan-exceptions-break-start input, .working-plan-exceptions-break-end input'),
|
||||||
);
|
);
|
||||||
$(this).closest('tr').find('.working-plan-exceptions-break-start').focus();
|
$(this).closest('tr').find('.working-plan-exceptions-break-start').focus();
|
||||||
|
@ -462,9 +462,9 @@ App.Components.WorkingPlanExceptionsModal = (function () {
|
||||||
* Initialize the module.
|
* Initialize the module.
|
||||||
*/
|
*/
|
||||||
function initialize() {
|
function initialize() {
|
||||||
App.Utils.UI.initializeDatepicker($date);
|
App.Utils.UI.initializeDatePicker($date);
|
||||||
App.Utils.UI.initializeTimepicker($start);
|
App.Utils.UI.initializeTimePicker($start);
|
||||||
App.Utils.UI.initializeTimepicker($end);
|
App.Utils.UI.initializeTimePicker($end);
|
||||||
|
|
||||||
$modal
|
$modal
|
||||||
.on('hidden.bs.modal', onModalHidden)
|
.on('hidden.bs.modal', onModalHidden)
|
||||||
|
|
|
@ -300,7 +300,7 @@ App.Http.Booking = (function () {
|
||||||
const currentDate = new Date(selectedDate.getFullYear(), selectedDate.getMonth(), i);
|
const currentDate = new Date(selectedDate.getFullYear(), selectedDate.getMonth(), i);
|
||||||
|
|
||||||
if (unavailableDates.indexOf(moment(currentDate).format('YYYY-MM-DD')) === -1) {
|
if (unavailableDates.indexOf(moment(currentDate).format('YYYY-MM-DD')) === -1) {
|
||||||
$('#select-date')[0]._flatpickr.setDate(currentDate);
|
App.Utils.UI.setDateTimePickerValue($('#select-date'), currentDate);
|
||||||
getAvailableHours(moment(currentDate).format('YYYY-MM-DD'));
|
getAvailableHours(moment(currentDate).format('YYYY-MM-DD'));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -328,7 +328,7 @@ App.Http.Booking = (function () {
|
||||||
!unavailableDates.includes(dateQueryParam) &&
|
!unavailableDates.includes(dateQueryParam) &&
|
||||||
dateQueryParamMoment.format('YYYY-MM') === selectedDateMoment.format('YYYY-MM')
|
dateQueryParamMoment.format('YYYY-MM') === selectedDateMoment.format('YYYY-MM')
|
||||||
) {
|
) {
|
||||||
$('#select-date')[0]._flatpickr.setDate(dateQueryParamMoment.toDate());
|
App.Utils.UI.setDateTimePickerValue($('#select-date'), dateQueryParamMoment.toDate());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -123,9 +123,9 @@ App.Pages.BlockedPeriods = (function () {
|
||||||
* Event: Blocked period Save Button "Click"
|
* Event: Blocked period Save Button "Click"
|
||||||
*/
|
*/
|
||||||
$blockedPeriods.on('click', '#save-blocked-period', () => {
|
$blockedPeriods.on('click', '#save-blocked-period', () => {
|
||||||
const startDateTimeObject = App.Utils.UI.getDatetimepickerValue($startDateTime);
|
const startDateTimeObject = App.Utils.UI.getDateTimePickerValue($startDateTime);
|
||||||
const startDateTimeMoment = moment(startDateTimeObject);
|
const startDateTimeMoment = moment(startDateTimeObject);
|
||||||
const endDateTimeObject = App.Utils.UI.getDatetimepickerValue($endDateTime);
|
const endDateTimeObject = App.Utils.UI.getDateTimePickerValue($endDateTime);
|
||||||
const endDateTimeMoment = moment(endDateTimeObject);
|
const endDateTimeMoment = moment(endDateTimeObject);
|
||||||
|
|
||||||
const blockedPeriod = {
|
const blockedPeriod = {
|
||||||
|
@ -235,8 +235,8 @@ App.Pages.BlockedPeriods = (function () {
|
||||||
function display(blockedPeriod) {
|
function display(blockedPeriod) {
|
||||||
$id.val(blockedPeriod.id);
|
$id.val(blockedPeriod.id);
|
||||||
$name.val(blockedPeriod.name);
|
$name.val(blockedPeriod.name);
|
||||||
App.Utils.UI.setDatetimepickerValue($startDateTime, new Date(blockedPeriod.start_datetime));
|
App.Utils.UI.setDateTimePickerValue($startDateTime, new Date(blockedPeriod.start_datetime));
|
||||||
App.Utils.UI.setDatetimepickerValue($endDateTime, new Date(blockedPeriod.end_datetime));
|
App.Utils.UI.setDateTimePickerValue($endDateTime, new Date(blockedPeriod.end_datetime));
|
||||||
$notes.val(blockedPeriod.notes);
|
$notes.val(blockedPeriod.notes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -263,8 +263,8 @@ App.Pages.BlockedPeriods = (function () {
|
||||||
throw new Error(lang('fields_are_required'));
|
throw new Error(lang('fields_are_required'));
|
||||||
}
|
}
|
||||||
|
|
||||||
const startDateTimeObject = App.Utils.UI.getDatetimepickerValue($startDateTime);
|
const startDateTimeObject = App.Utils.UI.getDateTimePickerValue($startDateTime);
|
||||||
const endDateTimeObject = App.Utils.UI.getDatetimepickerValue($endDateTime);
|
const endDateTimeObject = App.Utils.UI.getDateTimePickerValue($endDateTime);
|
||||||
|
|
||||||
if (startDateTimeObject >= endDateTimeObject) {
|
if (startDateTimeObject >= endDateTimeObject) {
|
||||||
$startDateTime.addClass('is-invalid');
|
$startDateTime.addClass('is-invalid');
|
||||||
|
@ -346,8 +346,8 @@ App.Pages.BlockedPeriods = (function () {
|
||||||
resetForm();
|
resetForm();
|
||||||
filter('');
|
filter('');
|
||||||
addEventListeners();
|
addEventListeners();
|
||||||
App.Utils.UI.initializeDatetimepicker($startDateTime);
|
App.Utils.UI.initializeDateTimePicker($startDateTime);
|
||||||
App.Utils.UI.initializeDatetimepicker($endDateTime);
|
App.Utils.UI.initializeDateTimePicker($endDateTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', initialize);
|
document.addEventListener('DOMContentLoaded', initialize);
|
||||||
|
|
|
@ -82,7 +82,7 @@ App.Pages.Booking = (function () {
|
||||||
// Initialize page's components (tooltips, date pickers etc).
|
// Initialize page's components (tooltips, date pickers etc).
|
||||||
tippy('[data-tippy-content]');
|
tippy('[data-tippy-content]');
|
||||||
|
|
||||||
App.Utils.UI.initializeDatepicker($selectDate, {
|
App.Utils.UI.initializeDatePicker($selectDate, {
|
||||||
inline: true,
|
inline: true,
|
||||||
minDate: moment().subtract(1, 'day').set({hours: 23, minutes: 59, seconds: 59}).toDate(),
|
minDate: moment().subtract(1, 'day').set({hours: 23, minutes: 59, seconds: 59}).toDate(),
|
||||||
maxDate: moment().add(vars('future_booking_limit'), 'days').toDate(),
|
maxDate: moment().add(vars('future_booking_limit'), 'days').toDate(),
|
||||||
|
@ -126,7 +126,7 @@ App.Pages.Booking = (function () {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
$selectDate[0]._flatpickr.setDate(new Date());
|
App.Utils.UI.setDateTimePickerValue($selectDate, new Date());
|
||||||
|
|
||||||
const browserTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
const browserTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
||||||
const isTimezoneSupported = $selectTimezone.find(`option[value="${browserTimezone}"]`).length > 0;
|
const isTimezoneSupported = $selectTimezone.find(`option[value="${browserTimezone}"]`).length > 0;
|
||||||
|
@ -269,7 +269,7 @@ App.Pages.Booking = (function () {
|
||||||
* Event: Timezone "Changed"
|
* Event: Timezone "Changed"
|
||||||
*/
|
*/
|
||||||
$selectTimezone.on('change', () => {
|
$selectTimezone.on('change', () => {
|
||||||
const date = $selectDate[0]._flatpickr.selectedDates[0];
|
const date = App.Utils.UI.getDateTimePickerValue($selectDate);
|
||||||
|
|
||||||
if (!date) {
|
if (!date) {
|
||||||
return;
|
return;
|
||||||
|
@ -291,7 +291,7 @@ App.Pages.Booking = (function () {
|
||||||
App.Http.Booking.getUnavailableDates(
|
App.Http.Booking.getUnavailableDates(
|
||||||
$target.val(),
|
$target.val(),
|
||||||
$selectService.val(),
|
$selectService.val(),
|
||||||
moment($selectDate[0]._flatpickr.selectedDates[0]).format('YYYY-MM-DD'),
|
moment(App.Utils.UI.getDateTimePickerValue($selectDate)).format('YYYY-MM-DD'),
|
||||||
);
|
);
|
||||||
updateConfirmFrame();
|
updateConfirmFrame();
|
||||||
});
|
});
|
||||||
|
@ -327,7 +327,7 @@ App.Pages.Booking = (function () {
|
||||||
App.Http.Booking.getUnavailableDates(
|
App.Http.Booking.getUnavailableDates(
|
||||||
$selectProvider.val(),
|
$selectProvider.val(),
|
||||||
$target.val(),
|
$target.val(),
|
||||||
moment($selectDate[0]._flatpickr.selectedDates[0]).format('YYYY-MM-DD'),
|
moment(App.Utils.UI.getDateTimePickerValue($selectDate)).format('YYYY-MM-DD'),
|
||||||
);
|
);
|
||||||
|
|
||||||
updateConfirmFrame();
|
updateConfirmFrame();
|
||||||
|
@ -586,141 +586,120 @@ App.Pages.Booking = (function () {
|
||||||
* customer settings and input for the appointment booking.
|
* customer settings and input for the appointment booking.
|
||||||
*/
|
*/
|
||||||
function updateConfirmFrame() {
|
function updateConfirmFrame() {
|
||||||
if ($availableHours.find('.selected-hour').text() === '') {
|
const serviceOptionText = $selectService.find('option:selected').text();
|
||||||
return;
|
$('.display-selected-service').text(serviceOptionText).removeClass('invisible');
|
||||||
|
|
||||||
|
const providerOptionText = $selectProvider.find('option:selected').text();
|
||||||
|
$('.display-selected-provider').text(providerOptionText).removeClass('invisible');
|
||||||
|
|
||||||
|
if (!$availableHours.find('.selected-hour').text()) {
|
||||||
|
return; // No time is selected, skip the rest of this function...
|
||||||
}
|
}
|
||||||
|
|
||||||
// Appointment Details
|
// Render the appointment details
|
||||||
let selectedDate = $selectDate[0]._flatpickr.selectedDates[0];
|
|
||||||
|
|
||||||
if (selectedDate !== null) {
|
|
||||||
selectedDate = App.Utils.Date.format(selectedDate, vars('date_format'), vars('time_format'));
|
|
||||||
}
|
|
||||||
|
|
||||||
const serviceId = $selectService.val();
|
const serviceId = $selectService.val();
|
||||||
let servicePrice = '';
|
|
||||||
let serviceCurrency = '';
|
|
||||||
|
|
||||||
vars('available_services').forEach((service) => {
|
const service = vars('available_services').find(
|
||||||
if (Number(service.id) === Number(serviceId) && Number(service.price) > 0) {
|
(availableService) => Number(availableService.id) === Number(serviceId),
|
||||||
servicePrice = service.price;
|
);
|
||||||
serviceCurrency = service.currency;
|
|
||||||
return false; // Break loop
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$(document)
|
if (!service) {
|
||||||
.find('.display-selected-service')
|
return; // Service was not found
|
||||||
.text($selectService.find('option:selected').text())
|
}
|
||||||
.removeClass('invisible');
|
|
||||||
|
|
||||||
$(document)
|
const selectedDateObject = App.Utils.UI.getDateTimePickerValue($selectDate);
|
||||||
.find('.display-selected-provider')
|
const selectedDateMoment = moment(selectedDateObject);
|
||||||
.text($selectProvider.find('option:selected').text())
|
const selectedDate = selectedDateMoment.format('YYYY-MM-DD');
|
||||||
.removeClass('invisible');
|
const selectedTime = $availableHours.find('.selected-hour').text();
|
||||||
|
const selectedDateTime = `${selectedDate} ${selectedTime}`;
|
||||||
|
|
||||||
$('#appointment-details').empty();
|
let formattedSelectedDate;
|
||||||
|
|
||||||
$('<div/>', {
|
if (selectedDateObject) {
|
||||||
'html': [
|
formattedSelectedDate = App.Utils.Date.format(
|
||||||
$('<h4/>', {
|
selectedDateTime,
|
||||||
'text': lang('appointment'),
|
vars('date_format'),
|
||||||
}),
|
vars('time_format'),
|
||||||
$('<p/>', {
|
true,
|
||||||
'html': [
|
);
|
||||||
$('<span/>', {
|
}
|
||||||
'text': lang('service') + ': ' + $selectService.find('option:selected').text(),
|
|
||||||
}),
|
const timezoneOptionText = $selectTimezone.find('option:selected').text();
|
||||||
$('<br/>'),
|
|
||||||
$('<span/>', {
|
$('#appointment-details').html(`
|
||||||
'text': lang('provider') + ': ' + $selectProvider.find('option:selected').text(),
|
<div>
|
||||||
}),
|
<div class="mb-2 fw-bold fs-3">
|
||||||
$('<br/>'),
|
${serviceOptionText}
|
||||||
$('<span/>', {
|
</div>
|
||||||
'text':
|
<div class="mb-2 fw-bold text-muted">
|
||||||
lang('start') +
|
${providerOptionText}
|
||||||
': ' +
|
</div>
|
||||||
selectedDate +
|
<div class="mb-2">
|
||||||
' ' +
|
<i class="fas fa-clock me-2"></i>
|
||||||
$availableHours.find('.selected-hour').text(),
|
${service.duration} ${lang('minutes')}
|
||||||
}),
|
</div>
|
||||||
$('<br/>'),
|
<div class="mb-2">
|
||||||
$('<span/>', {
|
<i class="fas fa-calendar-day me-2"></i>
|
||||||
'text': lang('timezone') + ': ' + $selectTimezone.find('option:selected').text(),
|
${formattedSelectedDate}
|
||||||
}),
|
</div>
|
||||||
$('<br/>'),
|
<div class="mb-2">
|
||||||
$('<span/>', {
|
<i class="fas fa-globe me-2"></i>
|
||||||
'text': lang('price') + ': ' + servicePrice + ' ' + serviceCurrency,
|
${timezoneOptionText}
|
||||||
'prop': {
|
</div>
|
||||||
'hidden': !servicePrice,
|
<div class="mb-2" ${!Number(service.price) ? 'hidden' : ''}>
|
||||||
},
|
<i class="fas fa-cash-register me-2"></i>
|
||||||
}),
|
${Number(service.price).toFixed(2)} ${service.currency}
|
||||||
],
|
</div>
|
||||||
}),
|
</div>
|
||||||
],
|
`);
|
||||||
}).appendTo('#appointment-details');
|
|
||||||
|
// Render the customer information
|
||||||
|
|
||||||
// Customer Details
|
|
||||||
const firstName = App.Utils.String.escapeHtml($firstName.val());
|
const firstName = App.Utils.String.escapeHtml($firstName.val());
|
||||||
const lastName = App.Utils.String.escapeHtml($lastName.val());
|
const lastName = App.Utils.String.escapeHtml($lastName.val());
|
||||||
const fullName = firstName + ' ' + lastName;
|
const fullName = `${firstName} ${lastName}`.trim();
|
||||||
const phoneNumber = App.Utils.String.escapeHtml($phoneNumber.val());
|
|
||||||
const email = App.Utils.String.escapeHtml($email.val());
|
const email = App.Utils.String.escapeHtml($email.val());
|
||||||
|
const phoneNumber = App.Utils.String.escapeHtml($phoneNumber.val());
|
||||||
const address = App.Utils.String.escapeHtml($address.val());
|
const address = App.Utils.String.escapeHtml($address.val());
|
||||||
const city = App.Utils.String.escapeHtml($city.val());
|
const city = App.Utils.String.escapeHtml($city.val());
|
||||||
const zipCode = App.Utils.String.escapeHtml($zipCode.val());
|
const zipCode = App.Utils.String.escapeHtml($zipCode.val());
|
||||||
|
|
||||||
$('#customer-details').empty();
|
const addressParts = [];
|
||||||
|
|
||||||
$('<div/>', {
|
if (city) {
|
||||||
'html': [
|
addressParts.push(city);
|
||||||
$('<h4/>)', {
|
}
|
||||||
'text': lang('customer'),
|
|
||||||
}),
|
if (zipCode) {
|
||||||
$('<p/>', {
|
addressParts.push(zipCode);
|
||||||
'html': [
|
}
|
||||||
fullName
|
|
||||||
? $('<span/>', {
|
$('#customer-details').html(`
|
||||||
'text': lang('customer') + ': ' + fullName,
|
<div>
|
||||||
})
|
<div class="mb-2 fw-bold fs-3">
|
||||||
: null,
|
${lang('contact_info')}
|
||||||
fullName ? $('<br/>') : null,
|
</div>
|
||||||
phoneNumber
|
<div class="mb-2 fw-bold text-muted" ${!fullName ? 'hidden' : ''}>
|
||||||
? $('<span/>', {
|
${fullName}
|
||||||
'text': lang('phone_number') + ': ' + phoneNumber,
|
</div>
|
||||||
})
|
<div class="mb-2" ${!email ? 'hidden' : ''}>
|
||||||
: null,
|
${email}
|
||||||
phoneNumber ? $('<br/>') : null,
|
</div>
|
||||||
email
|
<div class="mb-2" ${!email ? 'hidden' : ''}>
|
||||||
? $('<span/>', {
|
${phoneNumber}
|
||||||
'text': lang('email') + ': ' + email,
|
</div>
|
||||||
})
|
<div class="mb-2" ${!address ? 'hidden' : ''}>
|
||||||
: null,
|
${address}
|
||||||
email ? $('<br/>') : null,
|
</div>
|
||||||
address
|
<div class="mb-2" ${!addressParts.length ? 'hidden' : ''}>
|
||||||
? $('<span/>', {
|
${addressParts.join(', ')}
|
||||||
'text': lang('address') + ': ' + address,
|
</div>
|
||||||
})
|
</div>
|
||||||
: null,
|
`);
|
||||||
address ? $('<br/>') : null,
|
|
||||||
city
|
|
||||||
? $('<span/>', {
|
|
||||||
'text': lang('city') + ': ' + city,
|
|
||||||
})
|
|
||||||
: null,
|
|
||||||
city ? $('<br/>') : null,
|
|
||||||
zipCode
|
|
||||||
? $('<span/>', {
|
|
||||||
'text': lang('zip_code') + ': ' + zipCode,
|
|
||||||
})
|
|
||||||
: null,
|
|
||||||
zipCode ? $('<br/>') : null,
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
}).appendTo('#customer-details');
|
|
||||||
|
|
||||||
// Update appointment form data for submission to server when the user confirms the appointment.
|
// Update appointment form data for submission to server when the user confirms the appointment.
|
||||||
|
|
||||||
const data = {};
|
const data = {};
|
||||||
|
|
||||||
data.customer = {
|
data.customer = {
|
||||||
|
@ -736,7 +715,7 @@ App.Pages.Booking = (function () {
|
||||||
|
|
||||||
data.appointment = {
|
data.appointment = {
|
||||||
start_datetime:
|
start_datetime:
|
||||||
moment($selectDate[0]._flatpickr.selectedDates[0]).format('YYYY-MM-DD') +
|
moment(App.Utils.UI.getDateTimePickerValue($selectDate)).format('YYYY-MM-DD') +
|
||||||
' ' +
|
' ' +
|
||||||
moment($('.selected-hour').data('value'), 'HH:mm').format('HH:mm') +
|
moment($('.selected-hour').data('value'), 'HH:mm').format('HH:mm') +
|
||||||
':00',
|
':00',
|
||||||
|
@ -753,6 +732,7 @@ App.Pages.Booking = (function () {
|
||||||
data.appointment.id = vars('appointment_data').id;
|
data.appointment.id = vars('appointment_data').id;
|
||||||
data.customer.id = vars('customer_data').id;
|
data.customer.id = vars('customer_data').id;
|
||||||
}
|
}
|
||||||
|
|
||||||
$('input[name="post_data"]').val(JSON.stringify(data));
|
$('input[name="post_data"]').val(JSON.stringify(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -772,7 +752,7 @@ App.Pages.Booking = (function () {
|
||||||
);
|
);
|
||||||
|
|
||||||
// Add the duration to the start datetime.
|
// Add the duration to the start datetime.
|
||||||
const selectedDate = moment($selectDate[0]._flatpickr.selectedDates[0]).format('YYYY-MM-DD');
|
const selectedDate = moment(App.Utils.UI.getDateTimePickerValue($selectDate)).format('YYYY-MM-DD');
|
||||||
|
|
||||||
const selectedHour = $('.selected-hour').data('value'); // HH:mm
|
const selectedHour = $('.selected-hour').data('value'); // HH:mm
|
||||||
|
|
||||||
|
@ -807,7 +787,7 @@ App.Pages.Booking = (function () {
|
||||||
|
|
||||||
// Set Appointment Date
|
// Set Appointment Date
|
||||||
const startMoment = moment(appointment.start_datetime);
|
const startMoment = moment(appointment.start_datetime);
|
||||||
$selectDate[0]._flatpickr.setDate(startMoment.toDate());
|
App.Utils.UI.setDateTimePickerValue($selectDate, startMoment.toDate());
|
||||||
App.Http.Booking.getAvailableHours(startMoment.format('YYYY-MM-DD'));
|
App.Http.Booking.getAvailableHours(startMoment.format('YYYY-MM-DD'));
|
||||||
|
|
||||||
// Apply Customer's Data
|
// Apply Customer's Data
|
||||||
|
@ -833,6 +813,8 @@ App.Pages.Booking = (function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Update the service description and information.
|
||||||
|
*
|
||||||
* This method updates the HTML content with a brief description of the
|
* This method updates the HTML content with a brief description of the
|
||||||
* user selected service (only if available in db). This is useful for the
|
* user selected service (only if available in db). This is useful for the
|
||||||
* customers upon selecting the correct service.
|
* customers upon selecting the correct service.
|
||||||
|
@ -849,41 +831,45 @@ App.Pages.Booking = (function () {
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!service) {
|
if (!service) {
|
||||||
return;
|
return; // Service not found
|
||||||
}
|
}
|
||||||
|
|
||||||
$('<strong/>', {
|
// Render the additional service information
|
||||||
'text': App.Utils.String.escapeHtml(service.name),
|
|
||||||
}).appendTo($serviceDescription);
|
|
||||||
|
|
||||||
if (service.description) {
|
const additionalInfoParts = [];
|
||||||
$('<br/>').appendTo($serviceDescription);
|
|
||||||
|
|
||||||
$('<span/>', {
|
|
||||||
'html': App.Utils.String.escapeHtml(service.description).replaceAll('\n', '<br/>'),
|
|
||||||
}).appendTo($serviceDescription);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (service.duration || Number(service.price) > 0 || service.location) {
|
|
||||||
$('<br/>').appendTo($serviceDescription);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (service.duration) {
|
if (service.duration) {
|
||||||
$('<span/>', {
|
additionalInfoParts.push(`${lang('duration')}: ${service.duration} ${lang('minutes')}`);
|
||||||
'text': '[' + lang('duration') + ' ' + service.duration + ' ' + lang('minutes') + ']',
|
|
||||||
}).appendTo($serviceDescription);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Number(service.price) > 0) {
|
if (Number(service.price) > 0) {
|
||||||
$('<span/>', {
|
additionalInfoParts.push(`${lang('price')}: ${service.price} ${service.currency}`);
|
||||||
'text': '[' + lang('price') + ' ' + service.price + ' ' + service.currency + ']',
|
|
||||||
}).appendTo($serviceDescription);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (service.location) {
|
if (service.location) {
|
||||||
$('<span/>', {
|
additionalInfoParts.push(`${lang('location')}: ${service.location}`);
|
||||||
'text': '[' + lang('location') + ' ' + service.location + ']',
|
}
|
||||||
}).appendTo($serviceDescription);
|
|
||||||
|
if (additionalInfoParts.length) {
|
||||||
|
$(`
|
||||||
|
<div class="mb-2 fst-italic">
|
||||||
|
${additionalInfoParts.join(', ')}
|
||||||
|
</div>
|
||||||
|
`).appendTo($serviceDescription);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Render the service description
|
||||||
|
|
||||||
|
if (service.description.length) {
|
||||||
|
const escapedDescription = App.Utils.String.escapeHtml(service.description);
|
||||||
|
|
||||||
|
const multiLineDescription = escapedDescription.replaceAll('\n', '<br/>');
|
||||||
|
|
||||||
|
$(`
|
||||||
|
<div class="text-muted">
|
||||||
|
${multiLineDescription}
|
||||||
|
</div>
|
||||||
|
`).appendTo($serviceDescription);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -138,10 +138,10 @@ App.Utils.CalendarDefaultView = (function () {
|
||||||
|
|
||||||
// Set the start and end datetime of the appointment.
|
// Set the start and end datetime of the appointment.
|
||||||
startMoment = moment(appointment.start_datetime);
|
startMoment = moment(appointment.start_datetime);
|
||||||
$appointmentsModal.find('#start-datetime')[0]._flatpickr.setDate(startMoment.toDate());
|
App.Utils.UI.setDateTimePickerValue($appointmentsModal.find('#start-datetime'), startMoment.toDate());
|
||||||
|
|
||||||
endMoment = moment(appointment.end_datetime);
|
endMoment = moment(appointment.end_datetime);
|
||||||
$appointmentsModal.find('#end-datetime')[0]._flatpickr.setDate(endMoment.toDate());
|
App.Utils.UI.setDateTimePickerValue($appointmentsModal.find('#end-datetime'), endMoment.toDate());
|
||||||
|
|
||||||
const customer = appointment.customer;
|
const customer = appointment.customer;
|
||||||
$appointmentsModal.find('#customer-id').val(appointment.id_users_customer);
|
$appointmentsModal.find('#customer-id').val(appointment.id_users_customer);
|
||||||
|
@ -183,10 +183,16 @@ App.Utils.CalendarDefaultView = (function () {
|
||||||
|
|
||||||
// Apply unavailability data to dialog.
|
// Apply unavailability data to dialog.
|
||||||
$unavailabilitiesModal.find('.modal-header h3').text(lang('edit_unavailability_title'));
|
$unavailabilitiesModal.find('.modal-header h3').text(lang('edit_unavailability_title'));
|
||||||
$unavailabilitiesModal.find('#unavailability-start')[0]._flatpickr.setDate(startMoment.toDate());
|
App.Utils.UI.setDateTimePickerValue(
|
||||||
|
$unavailabilitiesModal.find('#unavailability-start'),
|
||||||
|
startMoment.toDate(),
|
||||||
|
);
|
||||||
|
App.Utils.UI.setDateTimePickerValue(
|
||||||
|
$unavailabilitiesModal.find('#unavailability-end'),
|
||||||
|
endMoment.toDate(),
|
||||||
|
);
|
||||||
$unavailabilitiesModal.find('#unavailability-id').val(unavailability.id);
|
$unavailabilitiesModal.find('#unavailability-id').val(unavailability.id);
|
||||||
$unavailabilitiesModal.find('#unavailability-provider').val(unavailability.id_users_provider);
|
$unavailabilitiesModal.find('#unavailability-provider').val(unavailability.id_users_provider);
|
||||||
$unavailabilitiesModal.find('#unavailability-end')[0]._flatpickr.setDate(endMoment.toDate());
|
|
||||||
$unavailabilitiesModal.find('#unavailability-notes').val(unavailability.notes);
|
$unavailabilitiesModal.find('#unavailability-notes').val(unavailability.notes);
|
||||||
$unavailabilitiesModal.modal('show');
|
$unavailabilitiesModal.modal('show');
|
||||||
}
|
}
|
||||||
|
@ -1057,9 +1063,9 @@ App.Utils.CalendarDefaultView = (function () {
|
||||||
|
|
||||||
$('#unavailability-provider').trigger('change');
|
$('#unavailability-provider').trigger('change');
|
||||||
|
|
||||||
$('#unavailability-start')[0]._flatpickr.setDate(info.start);
|
App.Utils.UI.setDateTimePickerValue($('#unavailability-start'), info.start);
|
||||||
|
|
||||||
$('#unavailability-end')[0]._flatpickr.setDate(info.end);
|
App.Utils.UI.setDateTimePickerValue($('#unavailability-end'), info.end);
|
||||||
|
|
||||||
messageModal.dispose();
|
messageModal.dispose();
|
||||||
},
|
},
|
||||||
|
@ -1113,8 +1119,11 @@ App.Utils.CalendarDefaultView = (function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Preselect time
|
// Preselect time
|
||||||
$('#start-datetime')[0]._flatpickr.setDate(info.start);
|
App.Utils.UI.setDateTimePickerValue($('#start-datetime'), info.start);
|
||||||
$('#end-datetime')[0]._flatpickr.setDate(App.Pages.Calendar.getSelectionEndDate(info));
|
App.Utils.UI.setDateTimePickerValue(
|
||||||
|
$('#end-datetime'),
|
||||||
|
App.Pages.Calendar.getSelectionEndDate(info),
|
||||||
|
);
|
||||||
|
|
||||||
messageModal.dispose();
|
messageModal.dispose();
|
||||||
},
|
},
|
||||||
|
@ -1586,10 +1595,13 @@ App.Utils.CalendarDefaultView = (function () {
|
||||||
|
|
||||||
// Set the start and end datetime of the appointment.
|
// Set the start and end datetime of the appointment.
|
||||||
const startDatetimeMoment = moment(appointment.start_datetime);
|
const startDatetimeMoment = moment(appointment.start_datetime);
|
||||||
$appointmentsModal.find('#start-datetime')[0]._flatpickr.setDate(startDatetimeMoment.toDate());
|
App.Utils.UI.setDateTimePickerValue(
|
||||||
|
$appointmentsModal.find('#start-datetime'),
|
||||||
|
startDatetimeMoment.toDate(),
|
||||||
|
);
|
||||||
|
|
||||||
const endDatetimeMoment = moment(appointment.end_datetime);
|
const endDatetimeMoment = moment(appointment.end_datetime);
|
||||||
$appointmentsModal.find('#end-datetime')[0]._flatpickr.setDate(endDatetimeMoment.toDate());
|
App.Utils.UI.setDateTimePickerValue($appointmentsModal.find('#end-datetime'), endDatetimeMoment.toDate());
|
||||||
|
|
||||||
const customer = appointment.customer;
|
const customer = appointment.customer;
|
||||||
$appointmentsModal.find('#customer-id').val(appointment.id_users_customer);
|
$appointmentsModal.find('#customer-id').val(appointment.id_users_customer);
|
||||||
|
|
|
@ -43,25 +43,25 @@ App.Utils.CalendarTableView = (function () {
|
||||||
function addEventListeners() {
|
function addEventListeners() {
|
||||||
$calendar.on('click', '.calendar-header .btn.previous', () => {
|
$calendar.on('click', '.calendar-header .btn.previous', () => {
|
||||||
const dayInterval = $selectFilterItem.val();
|
const dayInterval = $selectFilterItem.val();
|
||||||
const currentDate = $selectDate[0]._flatpickr.selectedDates[0];
|
const currentDate = App.Utils.UI.getDateTimePickerValue($selectDate);
|
||||||
const startDate = moment(currentDate).subtract(1, 'days');
|
const startDate = moment(currentDate).subtract(1, 'days');
|
||||||
const endDate = startDate.clone().add(dayInterval - 1, 'days');
|
const endDate = startDate.clone().add(dayInterval - 1, 'days');
|
||||||
$selectDate[0]._flatpickr.setDate(startDate.toDate());
|
App.Utils.UI.setDateTimePickerValue($selectDate, startDate.toDate());
|
||||||
createView(startDate.toDate(), endDate.toDate());
|
createView(startDate.toDate(), endDate.toDate());
|
||||||
});
|
});
|
||||||
|
|
||||||
$calendar.on('click', '.calendar-header .btn.next', () => {
|
$calendar.on('click', '.calendar-header .btn.next', () => {
|
||||||
const dayInterval = $selectFilterItem.val();
|
const dayInterval = $selectFilterItem.val();
|
||||||
const currentDate = $selectDate[0]._flatpickr.selectedDates[0];
|
const currentDate = App.Utils.UI.getDateTimePickerValue($selectDate);
|
||||||
const startDate = moment(currentDate).add(1, 'days');
|
const startDate = moment(currentDate).add(1, 'days');
|
||||||
const endDate = startDate.clone().add(dayInterval - 1, 'days');
|
const endDate = startDate.clone().add(dayInterval - 1, 'days');
|
||||||
$selectDate[0]._flatpickr.setDate(startDate.toDate());
|
App.Utils.UI.setDateTimePickerValue($selectDate, startDate.toDate());
|
||||||
createView(startDate.toDate(), endDate.toDate());
|
createView(startDate.toDate(), endDate.toDate());
|
||||||
});
|
});
|
||||||
|
|
||||||
$calendarToolbar.on('change', '#select-filter-item', () => {
|
$calendarToolbar.on('change', '#select-filter-item', () => {
|
||||||
const dayInterval = $selectFilterItem.val();
|
const dayInterval = $selectFilterItem.val();
|
||||||
const currentDate = $selectDate[0]._flatpickr.selectedDates[0];
|
const currentDate = App.Utils.UI.getDateTimePickerValue($selectDate);
|
||||||
const startDate = moment(currentDate);
|
const startDate = moment(currentDate);
|
||||||
const endDate = startDate.clone().add(dayInterval - 1, 'days');
|
const endDate = startDate.clone().add(dayInterval - 1, 'days');
|
||||||
createView(startDate.toDate(), endDate.toDate());
|
createView(startDate.toDate(), endDate.toDate());
|
||||||
|
@ -70,7 +70,7 @@ App.Utils.CalendarTableView = (function () {
|
||||||
$calendarToolbar.on('click', '#reload-appointments', () => {
|
$calendarToolbar.on('click', '#reload-appointments', () => {
|
||||||
// Fetch the events and place them in the existing HTML format.
|
// Fetch the events and place them in the existing HTML format.
|
||||||
const dayInterval = $selectFilterItem.val();
|
const dayInterval = $selectFilterItem.val();
|
||||||
const currentDate = $selectDate[0]._flatpickr.selectedDates[0];
|
const currentDate = App.Utils.UI.getDateTimePickerValue($selectDate);
|
||||||
const startDateMoment = moment(currentDate);
|
const startDateMoment = moment(currentDate);
|
||||||
const startDate = startDateMoment.toDate();
|
const startDate = startDateMoment.toDate();
|
||||||
const endDateMoment = startDateMoment.clone().add(dayInterval - 1, 'days');
|
const endDateMoment = startDateMoment.clone().add(dayInterval - 1, 'days');
|
||||||
|
@ -212,10 +212,10 @@ App.Utils.CalendarTableView = (function () {
|
||||||
|
|
||||||
// Set the start and end datetime of the appointment.
|
// Set the start and end datetime of the appointment.
|
||||||
startMoment = moment(appointment.start_datetime);
|
startMoment = moment(appointment.start_datetime);
|
||||||
$appointmentsModal.find('#start-datetime')[0]._flatpickr.setDate(startMoment.toDate());
|
App.Utils.UI.setDateTimePickerValue($appointmentsModal.find('#start-datetime'), startMoment.toDate());
|
||||||
|
|
||||||
endMoment = moment(appointment.end_datetime);
|
endMoment = moment(appointment.end_datetime);
|
||||||
$appointmentsModal.find('#end-datetime')[0]._flatpickr.setDate(endMoment.toDate());
|
App.Utils.UI.setDateTimePickerValue($appointmentsModal.find('#end-datetime'), endMoment.toDate());
|
||||||
|
|
||||||
const customer = appointment.customer;
|
const customer = appointment.customer;
|
||||||
$appointmentsModal.find('#customer-id').val(appointment.id_users_customer);
|
$appointmentsModal.find('#customer-id').val(appointment.id_users_customer);
|
||||||
|
@ -257,10 +257,10 @@ App.Utils.CalendarTableView = (function () {
|
||||||
|
|
||||||
// Apply unavailability data to dialog.
|
// Apply unavailability data to dialog.
|
||||||
$unavailabilitiesModal.find('.modal-header h3').text(lang('edit_unavailability_title'));
|
$unavailabilitiesModal.find('.modal-header h3').text(lang('edit_unavailability_title'));
|
||||||
$unavailabilitiesModal.find('#unavailability-start')[0]._flatpickr.setDate(startMoment.toDate());
|
App.Utils.UI.setDateTimePickerValue($('#unavailability-start'), startMoment.toDate());
|
||||||
|
App.Utils.UI.setDateTimePickerValue($('#unavailability-end'), endMoment.toDate());
|
||||||
$unavailabilitiesModal.find('#unavailability-id').val(unavailability.id);
|
$unavailabilitiesModal.find('#unavailability-id').val(unavailability.id);
|
||||||
$unavailabilitiesModal.find('#unavailability-provider').val(unavailability.id_users_provider);
|
$unavailabilitiesModal.find('#unavailability-provider').val(unavailability.id_users_provider);
|
||||||
$unavailabilitiesModal.find('#unavailability-end')[0]._flatpickr.setDate(endMoment.toDate());
|
|
||||||
$unavailabilitiesModal.find('#unavailability-notes').val(unavailability.notes);
|
$unavailabilitiesModal.find('#unavailability-notes').val(unavailability.notes);
|
||||||
|
|
||||||
$unavailabilitiesModal.modal('show');
|
$unavailabilitiesModal.modal('show');
|
||||||
|
@ -389,7 +389,7 @@ App.Utils.CalendarTableView = (function () {
|
||||||
],
|
],
|
||||||
}).appendTo($calendarHeader);
|
}).appendTo($calendarHeader);
|
||||||
|
|
||||||
App.Utils.UI.initializeDatepicker($calendarHeader.find('.select-date'), {
|
App.Utils.UI.initializeDatePicker($calendarHeader.find('.select-date'), {
|
||||||
onChange(selectedDates) {
|
onChange(selectedDates) {
|
||||||
const startDate = selectedDates[0];
|
const startDate = selectedDates[0];
|
||||||
const endDate = moment(startDate)
|
const endDate = moment(startDate)
|
||||||
|
@ -1742,9 +1742,8 @@ App.Utils.CalendarTableView = (function () {
|
||||||
|
|
||||||
$('#unavailability-provider').trigger('change');
|
$('#unavailability-provider').trigger('change');
|
||||||
|
|
||||||
$('#unavailability-start')[0]._flatpickr.setDate(info.start);
|
App.Utils.UI.setDateTimePickerValue($('#unavailability-start'), info.start);
|
||||||
|
App.Utils.UI.setDateTimePickerValue($('#unavailability-end'), info.end);
|
||||||
$('#unavailability-end')[0]._flatpickr.setDate(info.end);
|
|
||||||
|
|
||||||
messageModal.dispose();
|
messageModal.dispose();
|
||||||
},
|
},
|
||||||
|
@ -1783,8 +1782,11 @@ App.Utils.CalendarTableView = (function () {
|
||||||
$selectProvider.trigger('change');
|
$selectProvider.trigger('change');
|
||||||
|
|
||||||
// Preselect time
|
// Preselect time
|
||||||
$('#start-datetime')[0]._flatpickr.setDate(info.start);
|
App.Utils.UI.setDateTimePickerValue($('#start-datetime'), info.start);
|
||||||
$('#end-datetime')[0]._flatpickr.setDate(App.Pages.Calendar.getSelectionEndDate(info));
|
App.Utils.UI.setDateTimePickerValue(
|
||||||
|
$('#end-datetime'),
|
||||||
|
App.Pages.Calendar.getSelectionEndDate(info),
|
||||||
|
);
|
||||||
|
|
||||||
messageModal.dispose();
|
messageModal.dispose();
|
||||||
},
|
},
|
||||||
|
|
|
@ -148,7 +148,7 @@ window.App.Utils.UI = (function () {
|
||||||
* @param {jQuery} $target
|
* @param {jQuery} $target
|
||||||
* @param {Object} [params]
|
* @param {Object} [params]
|
||||||
*/
|
*/
|
||||||
function initializeDatetimepicker($target, params = {}) {
|
function initializeDateTimePicker($target, params = {}) {
|
||||||
$target.flatpickr({
|
$target.flatpickr({
|
||||||
enableTime: true,
|
enableTime: true,
|
||||||
allowInput: true,
|
allowInput: true,
|
||||||
|
@ -168,7 +168,7 @@ window.App.Utils.UI = (function () {
|
||||||
* @param {jQuery} $target
|
* @param {jQuery} $target
|
||||||
* @param {Object} [params]
|
* @param {Object} [params]
|
||||||
*/
|
*/
|
||||||
function initializeDatepicker($target, params = {}) {
|
function initializeDatePicker($target, params = {}) {
|
||||||
$target.flatpickr({
|
$target.flatpickr({
|
||||||
allowInput: true,
|
allowInput: true,
|
||||||
dateFormat: getDateFormat(),
|
dateFormat: getDateFormat(),
|
||||||
|
@ -186,7 +186,7 @@ window.App.Utils.UI = (function () {
|
||||||
* @param {jQuery} $target
|
* @param {jQuery} $target
|
||||||
* @param {Object} [params]
|
* @param {Object} [params]
|
||||||
*/
|
*/
|
||||||
function initializeTimepicker($target, params = {}) {
|
function initializeTimePicker($target, params = {}) {
|
||||||
$target.flatpickr({
|
$target.flatpickr({
|
||||||
noCalendar: true,
|
noCalendar: true,
|
||||||
enableTime: true,
|
enableTime: true,
|
||||||
|
@ -230,7 +230,7 @@ window.App.Utils.UI = (function () {
|
||||||
*
|
*
|
||||||
* @return {Date}
|
* @return {Date}
|
||||||
*/
|
*/
|
||||||
function getDatetimepickerValue($target) {
|
function getDateTimePickerValue($target) {
|
||||||
if (!$target?.length) {
|
if (!$target?.length) {
|
||||||
throw new Error('Empty $target argument provided.');
|
throw new Error('Empty $target argument provided.');
|
||||||
}
|
}
|
||||||
|
@ -244,7 +244,7 @@ window.App.Utils.UI = (function () {
|
||||||
* @param {jQuery} $target
|
* @param {jQuery} $target
|
||||||
* @param {Date} value
|
* @param {Date} value
|
||||||
*/
|
*/
|
||||||
function setDatetimepickerValue($target, value) {
|
function setDateTimePickerValue($target, value) {
|
||||||
if (!$target?.length) {
|
if (!$target?.length) {
|
||||||
throw new Error('Empty $target argument provided.');
|
throw new Error('Empty $target argument provided.');
|
||||||
}
|
}
|
||||||
|
@ -253,12 +253,12 @@ window.App.Utils.UI = (function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
initializeDatetimepicker,
|
initializeDateTimePicker,
|
||||||
initializeDatepicker,
|
initializeDatePicker,
|
||||||
initializeTimepicker,
|
initializeTimePicker,
|
||||||
initializeDropdown,
|
initializeDropdown,
|
||||||
initializeTextEditor,
|
initializeTextEditor,
|
||||||
getDatetimepickerValue,
|
getDateTimePickerValue,
|
||||||
setDatetimepickerValue,
|
setDateTimePickerValue,
|
||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|
|
@ -15,6 +15,8 @@
|
||||||
* This module implements the functionality of working plans.
|
* This module implements the functionality of working plans.
|
||||||
*/
|
*/
|
||||||
App.Utils.WorkingPlan = (function () {
|
App.Utils.WorkingPlan = (function () {
|
||||||
|
const moment = window.moment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class WorkingPlan
|
* Class WorkingPlan
|
||||||
*
|
*
|
||||||
|
@ -480,7 +482,7 @@ App.Utils.WorkingPlan = (function () {
|
||||||
|
|
||||||
$tr.children().trigger('edit');
|
$tr.children().trigger('edit');
|
||||||
|
|
||||||
App.Utils.UI.initializeTimepicker($tr.find('.break-start input, .break-end input'));
|
App.Utils.UI.initializeTimePicker($tr.find('.break-start input, .break-end input'));
|
||||||
|
|
||||||
$tr.find('.break-day select').focus();
|
$tr.find('.break-day select').focus();
|
||||||
|
|
||||||
|
@ -686,16 +688,16 @@ App.Utils.WorkingPlan = (function () {
|
||||||
disabled = disabled || false;
|
disabled = disabled || false;
|
||||||
|
|
||||||
if (disabled === false) {
|
if (disabled === false) {
|
||||||
App.Utils.UI.initializeTimepicker($('.working-plan input:text'), {
|
App.Utils.UI.initializeTimePicker($('.working-plan input:text'), {
|
||||||
onChange: (selectedDates, dateStr, instance) => {
|
onChange: (selectedDates, dateStr, instance) => {
|
||||||
const startMoment = moment(selectedDates[0]);
|
const startMoment = moment(selectedDates[0]);
|
||||||
|
|
||||||
const $workEnd = $(instance.input).closest('tr').find('.work-end');
|
const $workEnd = $(instance.input).closest('tr').find('.work-end');
|
||||||
|
|
||||||
const endMoment = moment($workEnd[0]._flatpickr.selectedDates[0]);
|
const endMoment = moment(App.Utils.UI.getDateTimePickerValue($workEnd));
|
||||||
|
|
||||||
if (startMoment > endMoment) {
|
if (startMoment > endMoment) {
|
||||||
$workEnd[0]._flatpickr.setDate(startMoment.add(1, 'hour').toDate());
|
App.Utils.UI.setDateTimePickerValue($workEnd, startMoment.add(1, 'hour').toDate());
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "maket/maketrandevu",
|
"name": "maket/maketrandevu",
|
||||||
"description": "MAKET Randevu Portalı",
|
"description": "MAKET Randevu Portalı",
|
||||||
"version": "1.5.0-p1",
|
"version": "1.5.0-RC2",
|
||||||
"homepage": "https://iflpanel.com/about/maketrandevu",
|
"homepage": "https://iflpanel.com/about/maketrandevu",
|
||||||
"type": "project",
|
"type": "project",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
|
|
6
composer.lock
generated
6
composer.lock
generated
|
@ -4,7 +4,7 @@
|
||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "70cead7cce550cc0e5a37eb1e558aee9",
|
"content-hash": "eafeafe75a984017de7900242825c958",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "firebase/php-jwt",
|
"name": "firebase/php-jwt",
|
||||||
|
@ -140,7 +140,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "google/apiclient-services",
|
"name": "google/apiclient-services",
|
||||||
"version": "v0.329.0",
|
"version": "v0.330.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/googleapis/google-api-php-client-services.git",
|
"url": "https://github.com/googleapis/google-api-php-client-services.git",
|
||||||
|
@ -178,7 +178,7 @@
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/googleapis/google-api-php-client-services/issues",
|
"issues": "https://github.com/googleapis/google-api-php-client-services/issues",
|
||||||
"source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.329.0"
|
"source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.330.0"
|
||||||
},
|
},
|
||||||
"time": "2023-12-24T01:02:15+00:00"
|
"time": "2023-12-24T01:02:15+00:00"
|
||||||
},
|
},
|
||||||
|
|
|
@ -46,7 +46,7 @@ services:
|
||||||
|
|
||||||
swagger-ui:
|
swagger-ui:
|
||||||
platform: linux/amd64
|
platform: linux/amd64
|
||||||
image: swaggerapi/swagger-ui
|
image: swaggerapi/swagger-ui:v5.10.5
|
||||||
ports:
|
ports:
|
||||||
- "8000:8080"
|
- "8000:8080"
|
||||||
volumes:
|
volumes:
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
# Approximately 10min (tested with 4vcpu / 8GB RAM / 30Mbps network speed)
|
# Approximately 10min (tested with 4vcpu / 8GB RAM / 30Mbps network speed)
|
||||||
|
|
||||||
# MAKETRANDEVU_VER="test"
|
# MAKETRANDEVU_VER="test"
|
||||||
MAKETRANDEVU_VER="1.5.0-p1" # UPDATE MANUALLY !
|
MAKETRANDEVU_VER="1.5.0-RC2" # UPDATE MANUALLY !
|
||||||
|
|
||||||
_RED='\033[0;31m'
|
_RED='\033[0;31m'
|
||||||
_NC='\033[0m \e[0m' # No Color, No Effect
|
_NC='\033[0m \e[0m' # No Color, No Effect
|
||||||
|
|
|
@ -25,7 +25,7 @@ const zip = require('zip-dir');
|
||||||
// const debug = require('gulp-debug');
|
// const debug = require('gulp-debug');
|
||||||
|
|
||||||
function archive(done) {
|
function archive(done) {
|
||||||
const version = "1.5.0-p1"
|
const version = "1.5.0-RC2"
|
||||||
const filename = 'maketrandevu-' + version + '.zip';
|
const filename = 'maketrandevu-' + version + '.zip';
|
||||||
|
|
||||||
fs.removeSync('build');
|
fs.removeSync('build');
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
# Nginx Docker Localtest
|
# Nginx Docker Localtest
|
||||||
|
|
||||||
CONT_NAME="MAKETRANDEVU_NGINX_LOCALTEST" # nginx docker name
|
CONT_NAME="MAKETRANDEVU_NGINX_LOCALTEST" # nginx docker name
|
||||||
MOUNT_PATH="/source" # binded mount path in nginx docker
|
MOUNT_PATH="/source" # binded mount path in nginx docker
|
||||||
SCRIPT_NAME="nginx_docker_localtest.sh" # name of the *this* file
|
SCRIPT_NAME="nginx_docker_localtest.sh" # name of the *this* file
|
||||||
DEBUG="FALSE"
|
DEBUG="FALSE"
|
||||||
|
|
||||||
### REMOTE RELEASE ###
|
### REMOTE RELEASE ###
|
||||||
LATEST_RELEASE="1.5.0-p1"
|
LATEST_RELEASE="1.5.0-RC2"
|
||||||
FILE_NAME="maketrandevu-$LATEST_RELEASE.zip"
|
FILE_NAME="maketrandevu-$LATEST_RELEASE.zip"
|
||||||
DOWNLOAD_LINK=https://git.aliberksandikci.com.tr/maket/maketrandevu/releases/download/$LATEST_RELEASE/$FILE_NAME
|
DOWNLOAD_LINK=https://git.aliberksandikci.com.tr/maket/maketrandevu/releases/download/$LATEST_RELEASE/$FILE_NAME
|
||||||
|
|
||||||
|
@ -34,16 +34,21 @@ COMMANDS:
|
||||||
restart: restart services (nginx, mariadb, php-fpm)
|
restart: restart services (nginx, mariadb, php-fpm)
|
||||||
update: update source files with new build on /source/
|
update: update source files with new build on /source/
|
||||||
status: see current webserver status
|
status: see current webserver status
|
||||||
root: move to root web folder
|
|
||||||
help : see this help text
|
help : see this help text
|
||||||
|
|
||||||
|
BUNDLE COMMANDS:
|
||||||
|
complete-restart: update + reconf + restart + reconf
|
||||||
|
|
||||||
|
EXTERNAL COMMANDS: (without dock keyword)
|
||||||
|
root: move to root web folder
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
CONFIG_FILE_CONTENT="""
|
CONFIG_FILE_CONTENT="""
|
||||||
<?php
|
<?php
|
||||||
/* ----------------------------------------------------------------------------
|
/* ----------------------------------------------------------------------------
|
||||||
* MaketRandevu - Izmir Fen Lisesi Randevu Portali
|
* MaketRandevu - MAKET Randevu Portalı
|
||||||
*
|
*
|
||||||
* @package maketrandevu
|
* @package maketrandevu
|
||||||
* @author asandikci <contact@aliberksandikci.com.tr>
|
* @author asandikci <contact@aliberksandikci.com.tr>
|
||||||
|
@ -176,8 +181,8 @@ _status() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if [[ $# -eq 0 ]]; then
|
if [[ $# -eq 0 ]]; then
|
||||||
if [[ $(pwd) != *maketrandevu ]]; then
|
if [[ $(pwd) != *MaketRandevu ]]; then
|
||||||
echo "PLEASE CHANGE DIRECTORY TO \`maketrandevu/\` BEFORE STARTING SCRIPT"
|
echo "PLEASE CHANGE DIRECTORY TO \`MaketRandevu/\` BEFORE STARTING SCRIPT"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
# TODO silmeden önce onay iste!
|
# TODO silmeden önce onay iste!
|
||||||
|
@ -235,6 +240,27 @@ elif [[ $1 == "docker" ]]; then
|
||||||
echo RECONFIGURED
|
echo RECONFIGURED
|
||||||
echo
|
echo
|
||||||
_exit
|
_exit
|
||||||
|
elif [[ $2 == "complete-restart" ]]; then
|
||||||
|
echo "updating sources!"
|
||||||
|
rsync -a --progress /source/build/ $WEB_ROOT_FOLDER --exclude config.php --exclude storage
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
echo -e "$CONFIG_FILE_CONTENT" >"$WEB_ROOT_FOLDER/config.php"
|
||||||
|
echo -e "$NGINX_CONFIG_FILE" >"/etc/nginx/conf.d/default.conf"
|
||||||
|
echo -e "$PHP_FPM_CONFIG_FILE" >"/etc/php/8.2/fpm/pool.d/maketrandevu.conf"
|
||||||
|
echo RECONFIGURED
|
||||||
|
echo
|
||||||
|
|
||||||
|
service mariadb restart
|
||||||
|
sleep 3
|
||||||
|
service php8.2-fpm restart
|
||||||
|
sleep 3
|
||||||
|
service nginx restart
|
||||||
|
|
||||||
|
_status
|
||||||
|
|
||||||
|
|
||||||
elif [[ $2 == "update" ]]; then
|
elif [[ $2 == "update" ]]; then
|
||||||
echo "updating sources!"
|
echo "updating sources!"
|
||||||
rsync -a --progress /source/build/ $WEB_ROOT_FOLDER --exclude config.php --exclude storage
|
rsync -a --progress /source/build/ $WEB_ROOT_FOLDER --exclude config.php --exclude storage
|
||||||
|
|
88
openapi.yml
88
openapi.yml
|
@ -54,7 +54,9 @@ paths:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/Availabilities'
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
'401':
|
'401':
|
||||||
description: Unauthorized
|
description: Unauthorized
|
||||||
'500':
|
'500':
|
||||||
|
@ -131,7 +133,9 @@ paths:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/AppointmentCollection'
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/AppointmentRecord'
|
||||||
'401':
|
'401':
|
||||||
description: Unauthorized
|
description: Unauthorized
|
||||||
'500':
|
'500':
|
||||||
|
@ -302,7 +306,9 @@ paths:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/UnavailabilityCollection'
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/UnavailabilityRecord'
|
||||||
'401':
|
'401':
|
||||||
description: Unauthorized
|
description: Unauthorized
|
||||||
'500':
|
'500':
|
||||||
|
@ -311,6 +317,10 @@ paths:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/ErrorResponse'
|
$ref: '#/components/schemas/ErrorResponse'
|
||||||
|
x-codegen-request-body-name: body
|
||||||
|
security:
|
||||||
|
- BearerToken: [ ]
|
||||||
|
- BasicAuth: [ ]
|
||||||
post:
|
post:
|
||||||
tags:
|
tags:
|
||||||
- unavailabilities
|
- unavailabilities
|
||||||
|
@ -470,7 +480,9 @@ paths:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/CustomerCollection'
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/CustomerRecord'
|
||||||
'401':
|
'401':
|
||||||
description: Unauthorized
|
description: Unauthorized
|
||||||
'500':
|
'500':
|
||||||
|
@ -641,7 +653,9 @@ paths:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/ServiceCollection'
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/ServiceRecord'
|
||||||
'401':
|
'401':
|
||||||
description: Unauthorized
|
description: Unauthorized
|
||||||
'500':
|
'500':
|
||||||
|
@ -812,7 +826,9 @@ paths:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/ServiceCategoryCollection'
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/ServiceCategoryRecord'
|
||||||
'401':
|
'401':
|
||||||
description: Unauthorized
|
description: Unauthorized
|
||||||
'500':
|
'500':
|
||||||
|
@ -983,7 +999,9 @@ paths:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/AdminCollection'
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/AdminRecord'
|
||||||
'401':
|
'401':
|
||||||
description: Unauthorized
|
description: Unauthorized
|
||||||
'500':
|
'500':
|
||||||
|
@ -1154,7 +1172,9 @@ paths:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/ProviderCollection'
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/ProviderRecord'
|
||||||
'401':
|
'401':
|
||||||
description: Unauthorized
|
description: Unauthorized
|
||||||
'500':
|
'500':
|
||||||
|
@ -1325,7 +1345,9 @@ paths:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/SecretaryCollection'
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/SecretaryRecord'
|
||||||
'401':
|
'401':
|
||||||
description: Unauthorized
|
description: Unauthorized
|
||||||
'500':
|
'500':
|
||||||
|
@ -1490,7 +1512,9 @@ paths:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/SettingCollection'
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/ServiceRecord'
|
||||||
'401':
|
'401':
|
||||||
description: Unauthorized
|
description: Unauthorized
|
||||||
'500':
|
'500':
|
||||||
|
@ -1606,7 +1630,9 @@ paths:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/WebhookCollection'
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/WebhookRecord'
|
||||||
'401':
|
'401':
|
||||||
description: Unauthorized
|
description: Unauthorized
|
||||||
'500':
|
'500':
|
||||||
|
@ -1821,10 +1847,6 @@ components:
|
||||||
customerId: 5
|
customerId: 5
|
||||||
providerId: 2
|
providerId: 2
|
||||||
serviceId: 6
|
serviceId: 6
|
||||||
AppointmentCollection:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/components/schemas/AppointmentRecord'
|
|
||||||
UnavailabilityRecord:
|
UnavailabilityRecord:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
@ -1875,10 +1897,6 @@ components:
|
||||||
location: Test Street 1A, 12345 Some State, Some Place
|
location: Test Street 1A, 12345 Some State, Some Place
|
||||||
notes: This is a test appointment.
|
notes: This is a test appointment.
|
||||||
providerId: 2
|
providerId: 2
|
||||||
UnavailabilityCollection:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/components/schemas/UnavailabilityRecord'
|
|
||||||
CustomerRecord:
|
CustomerRecord:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
@ -1978,10 +1996,6 @@ components:
|
||||||
customField4: Value4
|
customField4: Value4
|
||||||
customField5: Value5
|
customField5: Value5
|
||||||
notes: This is a test customer.
|
notes: This is a test customer.
|
||||||
CustomerCollection:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/components/schemas/CustomerRecord'
|
|
||||||
ServiceRecord:
|
ServiceRecord:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
@ -2048,10 +2062,6 @@ components:
|
||||||
availabilitiesType: flexible
|
availabilitiesType: flexible
|
||||||
attendantsNumber: 1
|
attendantsNumber: 1
|
||||||
serviceCategoryId: null
|
serviceCategoryId: null
|
||||||
ServiceCollection:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/components/schemas/ServiceRecord'
|
|
||||||
ServiceCategoryRecord:
|
ServiceCategoryRecord:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
@ -2075,10 +2085,6 @@ components:
|
||||||
example:
|
example:
|
||||||
name: Test Category
|
name: Test Category
|
||||||
description: This is a test category.
|
description: This is a test category.
|
||||||
ServiceCategoryCollection:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/components/schemas/ServiceCategoryRecord'
|
|
||||||
AdminRecord:
|
AdminRecord:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
@ -2187,10 +2193,6 @@ components:
|
||||||
password: Password@123
|
password: Password@123
|
||||||
notifications: true
|
notifications: true
|
||||||
calendarView: default
|
calendarView: default
|
||||||
AdminCollection:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/components/schemas/AdminRecord'
|
|
||||||
ProviderRecord:
|
ProviderRecord:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
@ -2391,10 +2393,6 @@ components:
|
||||||
end: '17:00'
|
end: '17:00'
|
||||||
breaks: [ ]
|
breaks: [ ]
|
||||||
saturday: null
|
saturday: null
|
||||||
ProviderCollection:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/components/schemas/ProviderRecord'
|
|
||||||
SecretaryRecord:
|
SecretaryRecord:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
@ -2516,10 +2514,6 @@ components:
|
||||||
password: Password@123
|
password: Password@123
|
||||||
notifications: true
|
notifications: true
|
||||||
calendarView: default
|
calendarView: default
|
||||||
SecretaryCollection:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/components/schemas/SecretaryRecord'
|
|
||||||
SettingRecord:
|
SettingRecord:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
@ -2537,10 +2531,6 @@ components:
|
||||||
type: string
|
type: string
|
||||||
example:
|
example:
|
||||||
value: ACME Inc
|
value: ACME Inc
|
||||||
SettingCollection:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/components/schemas/SettingRecord'
|
|
||||||
WebhookRecord:
|
WebhookRecord:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
@ -2588,10 +2578,6 @@ components:
|
||||||
secretToken: SecureSecretTokenHere
|
secretToken: SecureSecretTokenHere
|
||||||
isSslVerified: true
|
isSslVerified: true
|
||||||
notes: This is a webhook.
|
notes: This is a webhook.
|
||||||
WebhookCollection:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/components/schemas/WebhookRecord'
|
|
||||||
ErrorResponse:
|
ErrorResponse:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|
135
package-lock.json
generated
135
package-lock.json
generated
|
@ -60,12 +60,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/code-frame": {
|
"node_modules/@babel/code-frame": {
|
||||||
"version": "7.21.4",
|
"version": "7.23.5",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
|
||||||
"integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==",
|
"integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/highlight": "^7.18.6"
|
"@babel/highlight": "^7.23.4",
|
||||||
|
"chalk": "^2.4.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
|
@ -111,12 +112,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/generator": {
|
"node_modules/@babel/generator": {
|
||||||
"version": "7.21.5",
|
"version": "7.23.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
|
||||||
"integrity": "sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==",
|
"integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/types": "^7.21.5",
|
"@babel/types": "^7.23.6",
|
||||||
"@jridgewell/gen-mapping": "^0.3.2",
|
"@jridgewell/gen-mapping": "^0.3.2",
|
||||||
"@jridgewell/trace-mapping": "^0.3.17",
|
"@jridgewell/trace-mapping": "^0.3.17",
|
||||||
"jsesc": "^2.5.1"
|
"jsesc": "^2.5.1"
|
||||||
|
@ -226,34 +227,34 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-environment-visitor": {
|
"node_modules/@babel/helper-environment-visitor": {
|
||||||
"version": "7.21.5",
|
"version": "7.22.20",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
|
||||||
"integrity": "sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==",
|
"integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-function-name": {
|
"node_modules/@babel/helper-function-name": {
|
||||||
"version": "7.21.0",
|
"version": "7.23.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
|
||||||
"integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==",
|
"integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/template": "^7.20.7",
|
"@babel/template": "^7.22.15",
|
||||||
"@babel/types": "^7.21.0"
|
"@babel/types": "^7.23.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-hoist-variables": {
|
"node_modules/@babel/helper-hoist-variables": {
|
||||||
"version": "7.18.6",
|
"version": "7.22.5",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
|
||||||
"integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
|
"integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/types": "^7.18.6"
|
"@babel/types": "^7.22.5"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
|
@ -383,30 +384,30 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-split-export-declaration": {
|
"node_modules/@babel/helper-split-export-declaration": {
|
||||||
"version": "7.18.6",
|
"version": "7.22.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
|
||||||
"integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
|
"integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/types": "^7.18.6"
|
"@babel/types": "^7.22.5"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-string-parser": {
|
"node_modules/@babel/helper-string-parser": {
|
||||||
"version": "7.21.5",
|
"version": "7.23.4",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
|
||||||
"integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==",
|
"integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-validator-identifier": {
|
"node_modules/@babel/helper-validator-identifier": {
|
||||||
"version": "7.19.1",
|
"version": "7.22.20",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
|
||||||
"integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
|
"integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
|
@ -451,13 +452,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/highlight": {
|
"node_modules/@babel/highlight": {
|
||||||
"version": "7.18.6",
|
"version": "7.23.4",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
|
||||||
"integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
|
"integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-validator-identifier": "^7.18.6",
|
"@babel/helper-validator-identifier": "^7.22.20",
|
||||||
"chalk": "^2.0.0",
|
"chalk": "^2.4.2",
|
||||||
"js-tokens": "^4.0.0"
|
"js-tokens": "^4.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -465,9 +466,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/parser": {
|
"node_modules/@babel/parser": {
|
||||||
"version": "7.21.8",
|
"version": "7.23.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.8.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz",
|
||||||
"integrity": "sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==",
|
"integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"parser": "bin/babel-parser.js"
|
"parser": "bin/babel-parser.js"
|
||||||
|
@ -1593,34 +1594,34 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/template": {
|
"node_modules/@babel/template": {
|
||||||
"version": "7.20.7",
|
"version": "7.22.15",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
|
||||||
"integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
|
"integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/code-frame": "^7.18.6",
|
"@babel/code-frame": "^7.22.13",
|
||||||
"@babel/parser": "^7.20.7",
|
"@babel/parser": "^7.22.15",
|
||||||
"@babel/types": "^7.20.7"
|
"@babel/types": "^7.22.15"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/traverse": {
|
"node_modules/@babel/traverse": {
|
||||||
"version": "7.21.5",
|
"version": "7.23.7",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz",
|
||||||
"integrity": "sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==",
|
"integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/code-frame": "^7.21.4",
|
"@babel/code-frame": "^7.23.5",
|
||||||
"@babel/generator": "^7.21.5",
|
"@babel/generator": "^7.23.6",
|
||||||
"@babel/helper-environment-visitor": "^7.21.5",
|
"@babel/helper-environment-visitor": "^7.22.20",
|
||||||
"@babel/helper-function-name": "^7.21.0",
|
"@babel/helper-function-name": "^7.23.0",
|
||||||
"@babel/helper-hoist-variables": "^7.18.6",
|
"@babel/helper-hoist-variables": "^7.22.5",
|
||||||
"@babel/helper-split-export-declaration": "^7.18.6",
|
"@babel/helper-split-export-declaration": "^7.22.6",
|
||||||
"@babel/parser": "^7.21.5",
|
"@babel/parser": "^7.23.6",
|
||||||
"@babel/types": "^7.21.5",
|
"@babel/types": "^7.23.6",
|
||||||
"debug": "^4.1.0",
|
"debug": "^4.3.1",
|
||||||
"globals": "^11.1.0"
|
"globals": "^11.1.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -1628,13 +1629,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/types": {
|
"node_modules/@babel/types": {
|
||||||
"version": "7.21.5",
|
"version": "7.23.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz",
|
||||||
"integrity": "sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==",
|
"integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-string-parser": "^7.21.5",
|
"@babel/helper-string-parser": "^7.23.4",
|
||||||
"@babel/helper-validator-identifier": "^7.19.1",
|
"@babel/helper-validator-identifier": "^7.22.20",
|
||||||
"to-fast-properties": "^2.0.0"
|
"to-fast-properties": "^2.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -5814,9 +5815,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/normalize-package-data/node_modules/semver": {
|
"node_modules/normalize-package-data/node_modules/semver": {
|
||||||
"version": "5.7.1",
|
"version": "5.7.2",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
|
||||||
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
|
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"semver": "bin/semver"
|
"semver": "bin/semver"
|
||||||
|
@ -7051,9 +7052,9 @@
|
||||||
"integrity": "sha512-Hr9TdhyHCZUtwznEH2CBf7967mEM0idtJ5nMtjvk3Up5tPukOLXbHUNmh10oRfeNIhj+3GD3niu+g6sVK+gK0A=="
|
"integrity": "sha512-Hr9TdhyHCZUtwznEH2CBf7967mEM0idtJ5nMtjvk3Up5tPukOLXbHUNmh10oRfeNIhj+3GD3niu+g6sVK+gK0A=="
|
||||||
},
|
},
|
||||||
"node_modules/semver": {
|
"node_modules/semver": {
|
||||||
"version": "6.3.0",
|
"version": "6.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"semver": "bin/semver.js"
|
"semver": "bin/semver.js"
|
||||||
|
|
Loading…
Reference in a new issue