Commit graph

1011 commits

Author SHA1 Message Date
Alex Tselegidis
dbba0865e8 Removed caching from the settings helper as it may lead to unexpected behavior (if for example values get updated in another way). 2021-12-17 09:01:12 +01:00
Alex Tselegidis
bfe6664d58 Added new "page_vars" function that will handle the rendered page variables. 2021-12-17 08:46:47 +01:00
Alex Tselegidis
bfef58672c Added new "is_route" helper method 2021-12-17 08:45:28 +01:00
Alex Tselegidis
775d385e09 Added caching to the settings helper so that we avoid unnecessary queries to the database. 2021-12-17 08:44:38 +01:00
Alex Tselegidis
e071ec46dc Common CSRF token generation correctly 2021-12-16 08:45:55 +01:00
Alex Tselegidis
c49f141bbb Moved the booking confirmation and cancellation code out of the booking controller 2021-12-16 08:37:55 +01:00
Alex Tselegidis
bb3665272d Renamed language_script.php to js_language_script.php for clarity 2021-12-16 08:21:29 +01:00
Alex Tselegidis
c9d9153594 Renamed config_script.php to js_config_script.php for clarity 2021-12-16 08:20:10 +01:00
Alex Tselegidis
4ef2c0a9bb Changed cancellation frame view file name 2021-12-16 08:19:08 +01:00
Alex Tselegidis
1a0ed47fe3 Changed the names of the booking step components 2021-12-16 08:18:37 +01:00
Alex Tselegidis
3dee36d4c1 Moved booking sections into the components directory 2021-12-16 08:13:27 +01:00
Alex Tselegidis
dc8d6ad140 Update has its own controller class 2021-12-16 08:10:01 +01:00
Alex Tselegidis
ff03b71060 Replaced resource names with constants for "cannot" checks 2021-12-15 08:05:08 +01:00
Alex Tselegidis
568ff9be2e Renamed the service category resource to just category 2021-12-15 08:00:48 +01:00
Alex Tselegidis
41635413a1 Moved scripts to the script slot 2021-12-15 07:59:54 +01:00
Alex Tselegidis
16863bcf5b Renamed the id_service_categories field of services to id_categories 2021-12-15 07:45:41 +01:00
Alex Tselegidis
777dcb0d9e Reverted invalid migration changes 2021-12-15 07:41:05 +01:00
Alex Tselegidis
5d8a35f120 Renamed service categories table to categories 2021-12-15 07:31:42 +01:00
Alex Tselegidis
ba38392c46 Corrected validation check in routes.php file 2021-12-15 07:31:05 +01:00
Alex Tselegidis
c8bd47d1e5 Removed the "_page" postfix from page view files 2021-12-14 08:08:06 +01:00
Alex Tselegidis
12e4eebd1f Set the "dest_url" js config 2021-12-14 08:06:10 +01:00
Alex Tselegidis
e8a1976521 The dest_url may have not been set by all account layout pages 2021-12-14 08:05:49 +01:00
Alex Tselegidis
d1e79910a9 Moved scripts to the scripts section 2021-12-14 08:05:22 +01:00
Alex Tselegidis
58e38fd488 Load common JS config for all requests 2021-12-14 07:59:11 +01:00
Alex Tselegidis
c761f6d37c Use the js_config component in all pages 2021-12-14 07:52:41 +01:00
Alex Tselegidis
1eaa59d192 Corrected the js_config helper function 2021-12-14 07:51:26 +01:00
Alex Tselegidis
62a5ace98e Added the config_script.php file that will load the application config values to the global App object 2021-12-14 07:48:09 +01:00
Alex Tselegidis
29b22ece3c Added the js_config helper method that will assign public JS config values 2021-12-14 07:47:35 +01:00
Alex Tselegidis
9c44b8644f Renamed csrfToken var to csrf_token for consistency 2021-12-14 07:29:51 +01:00
Alex Tselegidis
6376fea885 Added the find method to controllers 2021-12-14 07:18:46 +01:00
Alex Tselegidis
d0ad54ce49 Replaced EALang with the global App.Lang object 2021-12-13 07:52:09 +01:00
Alex Tselegidis
4f9fbc05e3 Added the language script in the layout templates 2021-12-13 07:48:56 +01:00
Alex Tselegidis
530422608a Moved scripts inside the script section 2021-12-13 07:44:01 +01:00
Alex Tselegidis
a95df871b9 Load the app and the layout JS files 2021-12-13 07:41:02 +01:00
Alex Tselegidis
885dcbf5c8 Moved the footer and header templates to the component directory 2021-12-13 07:34:51 +01:00
Kim Holzmann
52ac27cee1 danish translation 2021-12-11 23:27:35 +01:00
Kim Holzmann
6c321b5c2c Update email_lang.php
Dansih translation
2021-12-11 23:15:11 +01:00
Kim Holzmann
cdd1e49a13 Danish translation
Danish translation
2021-12-11 23:12:11 +01:00
Alex Tselegidis
271be99f05 Layout view file improvements 2021-12-10 22:21:44 +01:00
Alex Tselegidis
450bc49932 Moved setting JS files to the pages directory. 2021-12-10 22:00:26 +01:00
Alex Tselegidis
bd412eba8e Refactored the installation page functionality 2021-12-10 09:12:08 +01:00
Alex Tselegidis
17b7ff6631 The login page now links to the new recovery route 2021-12-10 08:41:28 +01:00
Alex Tselegidis
6ab32781ad Moved the recovery functionality into its own controller and files 2021-12-10 08:41:16 +01:00
Alex Tselegidis
c00bfd9948 Changed var order 2021-12-10 08:34:56 +01:00
Alex Tselegidis
246d25c7f4 Moved the logout functionality into its own controller and files 2021-12-10 08:26:05 +01:00
Alex Tselegidis
63da7afce2 Renamed and moved the controller and view files of the settings page 2021-12-07 11:09:34 +01:00
Alex Tselegidis
622a4e9390 Moved the about controller and renamed the view file 2021-12-07 11:00:13 +01:00
Alex Tselegidis
523db7e5e3 Moved the login functionality into its own controller and files 2021-12-07 10:53:59 +01:00
Alex Tselegidis
db0b4fbdbd Removed the unused account_no_permissions_page.php file 2021-12-07 10:53:44 +01:00
Alex Tselegidis
cd5eff8819 Use the show_error function instead of the no-permissions callback 2021-12-07 10:53:20 +01:00
Alex Tselegidis
8528713ea2 Corrected script paths for the settings pages 2021-12-07 10:22:10 +01:00
Alex Tselegidis
f1849e3a16 Restructured the view/js/css files (flatter file structure) 2021-12-06 09:00:02 +01:00
Alex Tselegidis
e7d7307cd6 Corrected users menu item 2021-11-29 08:58:51 +01:00
Alex Tselegidis
617ada7641 Major assets restructuring (for better scalability). 2021-11-29 08:55:29 +01:00
Alex Tselegidis
3601cf14fc Footer styling 2021-11-29 08:12:02 +01:00
Alex Tselegidis
c188e678bc Link styling 2021-11-29 08:10:09 +01:00
Alex Tselegidis
ba3655266e Easily customize the bootstrap theme 2021-11-25 09:24:07 +01:00
Alex Tselegidis
8fc4e9587d Use the permission helper functions in backend_header.php 2021-11-25 09:17:07 +01:00
Alex Tselegidis
c9457a30e7 Various calendar page variable fixes 2021-11-25 09:13:27 +01:00
Alex Tselegidis
d94617945b Added missing index method of Calendar controller 2021-11-25 09:13:19 +01:00
Alex Tselegidis
e2d6dd7f4f Updated header link to calendar controller 2021-11-25 09:13:00 +01:00
Alex Tselegidis
056e445dba Corrected prop name 2021-11-25 09:08:30 +01:00
Alex Tselegidis
7841535802 Corrections in the customers page 2021-11-25 08:46:01 +01:00
Alex Tselegidis
bc723c2609 Added legal-contents to the backend header navigation 2021-11-25 08:41:46 +01:00
Alex Tselegidis
f2bb4519a5 Load the appointment and customer data after inserting them for the first time 2021-11-25 08:40:37 +01:00
Alex Tselegidis
232fa89b15 Load roles model 2021-11-24 09:23:48 +01:00
Alex Tselegidis
5906ae2aef Removed the datejs from the layouts 2021-11-24 08:34:13 +01:00
Alex Tselegidis
73bc0659cd Corrected the database table name 2021-11-24 08:33:27 +01:00
Alex Tselegidis
bea81e4aa3 Since Bootstrap 5 is using popper v2, we can use the bootstrap.min.js file directly 2021-11-23 10:12:49 +01:00
Alex Tselegidis
3808185ac9 Replaced the use of the "hidden" class with the "hidden" attribute 2021-11-23 10:06:13 +01:00
Alex Tselegidis
633cf0a722 Adjusted the form elements based on the new Bootstrap 5 structure 2021-11-23 09:53:10 +01:00
Alex Tselegidis
ec2109db54 Changed data-dismiss to data-bs-dismiss 2021-11-23 08:46:32 +01:00
Alex Tselegidis
01fe98602f Further utility class fixes 2021-11-23 08:43:40 +01:00
Alex Tselegidis
0088065e43 Updated the margin helper classes 2021-11-23 08:41:37 +01:00
Alex Tselegidis
684b7e700e Changed data-toggle to data-bs-toggle 2021-11-23 08:37:41 +01:00
Alex Tselegidis
4a9f5f4a87 Updated the modal close button 2021-11-23 08:35:39 +01:00
Alex Tselegidis
c2cb077850 There are no badge color classes any more 2021-11-23 08:34:03 +01:00
Alex Tselegidis
6eaebe449e Corrected typo 2021-11-23 08:21:50 +01:00
alextselegidis
35301e769a Renamed migration class 2021-11-22 08:09:56 +01:00
alextselegidis
e0a6f9482e Removed the tabindex prop as it makes problems with datepickers in iOS mobile devices 2021-11-22 08:09:56 +01:00
alextselegidis
d6debb40f5 Removed old settings files 2021-11-22 08:09:56 +01:00
alextselegidis
1cd0d45153 Converted the settings menu to a dropdown widget 2021-11-22 08:09:56 +01:00
alextselegidis
83bfd87d5d Ported the current about content to a new standalone page 2021-11-22 08:09:56 +01:00
alextselegidis
a622f2f295 Ported the current user settings functionality to a new standalone page 2021-11-22 08:09:56 +01:00
alextselegidis
35a05de1f0 Ported the legal contents settings functionality to a new standalone page 2021-11-22 08:09:56 +01:00
alextselegidis
fc48db0ea4 Ported the client form settings functionality to a new standalone page 2021-11-22 08:09:56 +01:00
Alex Tselegidis
81044eb9c6 Corrected issue with routing and CORS while running from the terminal 2021-11-18 17:17:08 +01:00
Alex Tselegidis
255d1b5d95 Corrected the CORS headers hanlding 2021-11-18 15:01:17 +01:00
alextselegidis
2d1fb357c8 Ported the business logic settings functionality to a new standalone page 2021-11-18 08:49:23 +01:00
alextselegidis
753237d003 Ported the general settings functionality to a new standalone page 2021-11-18 07:53:41 +01:00
alextselegidis
fa97f743ae Added settings related callbacks to the Settings controller (copied from Backend_api) 2021-11-18 07:34:43 +01:00
alextselegidis
f5cedbd0d5 Added calendar related callbacks to the Calendar controller (copied from Backend_api) 2021-11-18 07:30:52 +01:00
alextselegidis
4b4d8887e8 Added google related callbacks to the Google controller (copied from Backend_api) 2021-11-18 07:30:31 +01:00
alextselegidis
b06a2505b2 Created a new unavailabilities resource controller 2021-11-18 07:29:41 +01:00
alextselegidis
8a8f4a7ce0 Changed the cancellation URL to point to the Booking controller 2021-11-18 07:13:11 +01:00
alextselegidis
fa52b14bb7 The default route should point to the booking controller 2021-11-18 07:12:30 +01:00
alextselegidis
7eac5b8638 Moved the frontend book functionality to a new controller called Booking.php and created a new resource controller for appointments 2021-11-18 07:12:16 +01:00
alextselegidis
28f6a58211 Updated comment 2021-11-18 07:09:21 +01:00
alextselegidis
fec42278c8 Created a new customers resource controller 2021-11-18 06:34:07 +01:00
alextselegidis
df13336af5 Changed page ID attribute (service categories) 2021-11-18 06:28:00 +01:00
alextselegidis
d8a5460397 Changed page ID attribute (providers) 2021-11-18 06:28:00 +01:00
alextselegidis
16cfd17536 Dropdown navbar menu for users 2021-11-18 06:25:30 +01:00
alextselegidis
7a3aa38622 Created a new secretaries resource controller 2021-11-18 06:23:21 +01:00
alextselegidis
e842089694 Removed semicolon 2021-11-18 06:13:28 +01:00
alextselegidis
d6b294a12b Created a new admins resource controller 2021-11-18 06:11:18 +01:00
alextselegidis
4bbcb9fff8 Created a new providers resource controller 2021-11-18 06:08:36 +01:00
alextselegidis
8682fc886b Removed the services part from the service categories page 2021-11-18 05:35:56 +01:00
alextselegidis
2a599f11b8 Removed the service categories part from the services page 2021-11-18 05:32:46 +01:00
alextselegidis
54ee7ac924 Dropdown navbar menu for services 2021-11-18 05:28:16 +01:00
alextselegidis
aadac6a060 Created a new service categories resource controller 2021-11-18 05:23:54 +01:00
alextselegidis
8dd509d4dc Created a new services resource controller 2021-11-18 05:21:30 +01:00
alextselegidis
af42c7c532 The availability generation algorithm needs performance improvements when many appointments are stored in the system (#1171). 2021-11-17 18:10:06 +01:00
alextselegidis
f7b2e60f95 PHP formatting 2021-11-17 09:28:35 +01:00
alextselegidis
e86b01dada Added background color to the standalone error pages 2021-11-17 09:28:04 +01:00
alextselegidis
8bad857edb Modified the exception and error messages so that they display nicely within the modal and on standalone pages 2021-11-17 09:26:13 +01:00
alextselegidis
758e556f56 Use the bootstrap.bundle.min.js in the installations page 2021-11-17 08:49:51 +01:00
alextselegidis
8c353917b2 Load the working plan exceptions modal via the component helper 2021-11-17 08:46:58 +01:00
alextselegidis
81b93fc17d The set setting may also get int and bool values 2021-11-17 08:46:48 +01:00
alextselegidis
8ce3a8ffce The timezone dropdown becomes a component for customers_page.php 2021-11-17 08:42:12 +01:00
alextselegidis
532ee4fabc Allow multiple renders with the loader class during the rendering of a layout page 2021-11-17 08:41:51 +01:00
alextselegidis
35f9a6eb1c Replaced bootstrap.min.js with bootstrap.bundle.min.js so that popper dependent widgets work 2021-11-17 08:28:44 +01:00
alextselegidis
d3787b2b29 The calendar page must also extend from the backend layout 2021-11-16 10:40:54 +01:00
alextselegidis
aa760e827e Fixed variable problems of the manage_appointment_modal.php component 2021-11-16 10:40:15 +01:00
alextselegidis
12a12caa36 Added missing slots to the backend layout file 2021-11-16 10:39:51 +01:00
alextselegidis
4a49800674 Minor formatting 2021-11-16 10:22:24 +01:00
alextselegidis
a3ab7ad898 Added the meta and styles slots to the account layout 2021-11-16 10:21:42 +01:00
alextselegidis
2966b89a59 Added the missing scripts section to the account layout 2021-11-16 10:20:53 +01:00
alextselegidis
ca8f3524ef Replaced the render function with the new component function 2021-11-16 10:15:37 +01:00
alextselegidis
5fb2fcdf71 Relative paths in booking_page.php 2021-11-16 10:15:23 +01:00
alextselegidis
f0109226ce Render the layout filename prop 2021-11-16 10:15:05 +01:00
alextselegidis
62b0651ce8 Fixed issues with component rendering 2021-11-16 10:14:47 +01:00
alextselegidis
8f74643437 Updated the controller classes to use the slots instead 2021-11-15 09:49:19 +01:00
alextselegidis
914ed84a40 The view files use the new layout slots 2021-11-15 09:49:08 +01:00
alextselegidis
79d2460b2a Added slots to the layouts 2021-11-15 09:48:51 +01:00
alextselegidis
ae408c4bfb Adjusted the components html helper function 2021-11-15 09:48:26 +01:00
alextselegidis
31b6c104c3 Removed the layout method as it is no longer needed 2021-11-15 09:47:51 +01:00
alextselegidis
b7bcaa86be Override the "view" method of the CI_Loader class so that layouts are supported 2021-11-15 08:53:59 +01:00
alextselegidis
b7c39e94a2 Renamed the component_helper.php file to html_helper.php 2021-11-15 08:53:24 +01:00
alextselegidis
4a29034418 Added new layout helper methods in the component_helper.php file 2021-11-15 08:52:35 +01:00
alextselegidis
abf9bdd049 Set the page title of the booking page 2021-11-12 21:27:11 +01:00
alextselegidis
702089beb7 Removed period from translation key 2021-11-12 21:26:43 +01:00
alextselegidis
1103db92df Loaded scripts from the appointments controller 2021-11-12 17:30:09 +01:00
alextselegidis
2d1c7c0f7a Miscellaneous fixes and refactoring on Appointments.php 2021-11-12 17:23:43 +01:00
alextselegidis
548bc04c88 Corrected moment timezone script URL 2021-11-12 17:22:39 +01:00
alextselegidis
d2be2327e8 Minor refactoring for the appointments page 2021-11-12 17:09:39 +01:00
alextselegidis
eb64b6c7ef The google analytics code does not need to be loaded twice 2021-11-12 17:09:01 +01:00
alextselegidis
3fa817d52d Renamed the email templates for more consistency 2021-11-12 16:58:55 +01:00
alextselegidis
007e95ed7a Moved the installation and update pages to the new view/pages directory 2021-11-12 16:57:05 +01:00
alextselegidis
0b9f7ecea2 Updated the routes.php config file comments and added the missing "translate_uri_dashes" config entry 2021-11-12 16:54:21 +01:00
alextselegidis
cf579dddc2 Removed the error override configuration and files 2021-11-12 16:53:42 +01:00
alextselegidis
ee6729cf0b Converted all the account related pages to the new layout structure 2021-11-12 16:51:25 +01:00
alextselegidis
64846e0107 Removed the appointments directory from the view files 2021-11-12 16:40:12 +01:00
alextselegidis
9fdafa5497 Converted the booking message to the booking message layout 2021-11-12 16:39:38 +01:00
alextselegidis
b31b4c87bd Converted the booking success page to the layout structure 2021-11-12 16:33:01 +01:00
alextselegidis
35393642fa Default value for the styles, scripts and global variables entry 2021-11-12 16:32:31 +01:00
alextselegidis
d96e65792b Converted the booking page view files to the layout structure 2021-11-12 08:38:20 +01:00
alextselegidis
2479ffb3a1 Changed the users callback to use the layout loading method 2021-11-12 08:37:50 +01:00
alextselegidis
3ca9211449 Created the backend layout and moved all of its templates into the new "pages" directory 2021-11-12 08:25:27 +01:00
alextselegidis
fa313c3ef3 Moved partial and other reusable view files into the new "components" directory 2021-11-12 08:24:43 +01:00
alextselegidis
ad3d726d1a Added new layout loading method to the EA_Loader.php file. 2021-11-12 08:22:49 +01:00
alextselegidis
2d681a774a Autoload the new component helper 2021-11-11 09:01:57 +01:00
alextselegidis
179e72bfb9 Changed the directory of the render functions to "components" 2021-11-11 09:01:42 +01:00
alextselegidis
538ded7d69 Added new component helper file 2021-11-11 09:00:48 +01:00
alextselegidis
0e8ebc8110 Added doc blocks for template vars and did minor template fixes 2021-11-10 08:32:46 +01:00
alextselegidis
44fffb1c56 Moved the remaining modals into their own files. 2021-11-09 08:53:09 +01:00
alextselegidis
2068f70840 Moved the modal view files to a new modals directory 2021-11-09 08:47:09 +01:00
alextselegidis
fb92fa1832 Updated the meta html tag of the view files 2021-11-09 08:44:37 +01:00
alextselegidis
6c356aec50 Added new functions to the render helper that render the global variables and EALang scripts into a view file 2021-11-09 08:40:20 +01:00
alextselegidis
6d567a74a4 Added new layout method to the loader 2021-11-09 08:39:30 +01:00
alextselegidis
cd9a92bed9 Removed the polyfill scripts as it is no longer needed. 2021-11-09 08:11:33 +01:00
Alex Tselegidis
f371177fb6 Updated the vendor script paths in the view files 2021-11-08 10:57:03 +01:00
Alex Tselegidis
f41547b77d Method could also return null and not always an int 2021-11-08 10:44:36 +01:00
Alex Tselegidis
85bd7b9b38 Renamed attach to load in Backend_api.php 2021-11-06 17:14:57 +01:00
Alex Tselegidis
331aa8c174 Moved the old BASE URL to the app configuration for use in mails etc where a public facing URL is required 2021-11-06 17:11:09 +01:00
Alex Tselegidis
1c88a2f987 The app will now automatically detect the BASE URL based on the current request. 2021-11-06 17:07:03 +01:00
Alex Tselegidis
4a696fc992 Changed the develop state version 2021-11-06 16:54:34 +01:00
Alex Tselegidis
5f211f3cf1 Updated comment 2021-11-06 16:53:57 +01:00
Alex Tselegidis
356629fab6 Minor formatting 2021-11-06 16:52:52 +01:00
Alex Tselegidis
3e1381c302 Moved the app related config in a new app.php config file 2021-11-06 16:52:46 +01:00
Alex Tselegidis
a20f2e9e33 Corrected the login HTTP callback 2021-11-06 16:51:36 +01:00
Alex Tselegidis
54e86795d5 Minor comment changes for consistency 2021-11-06 16:21:27 +01:00
Alex Tselegidis
245fc43ec1 Replaced the old engine class use with the new Email_messages library 2021-11-06 16:11:55 +01:00
Alex Tselegidis
130adf88c3 Created new email messages library (ported the deprecated engine email class) 2021-11-06 16:11:44 +01:00
Alex Tselegidis
31b452766d Refactored the login controller callback 2021-11-06 16:09:59 +01:00
Alex Tselegidis
e38df7452b Renamed the attach query paramter of API controllers to with 2021-11-06 15:41:11 +01:00
Alex Tselegidis
c68565e2c3 Renamed the attached method to load for all models 2021-11-06 15:40:55 +01:00
Alex Tselegidis
f36c49819c Added support for the "attach" query parameter to all API controllers 2021-11-06 15:34:54 +01:00
Alex Tselegidis
bd8144f7cb Make sure the attach method works with API properties 2021-11-06 15:34:35 +01:00
Alex Tselegidis
89b9c802a2 Unavailabilities can only attach a provider record 2021-11-06 15:21:11 +01:00
Alex Tselegidis
bcc9b88623 Added support for upgrading and downgrading manually the database via the CLI 2021-11-06 15:17:03 +01:00
Alex Tselegidis
0a88442aa2 Corrected the settings routing config 2021-11-06 15:04:26 +01:00
Alex Tselegidis
8603a8ae33 Refactored all the API controller classes (and renamed them) to work well on top of the models 2021-11-06 15:03:08 +01:00
Alex Tselegidis
b4f903e724 Various fixes and additions to the model classes 2021-11-06 15:02:40 +01:00
Alex Tselegidis
1883b97630 Fixed API authorization issue 2021-11-06 15:01:17 +01:00
Alex Tselegidis
27c5c3ab35 Replaced the appointments model with the unavailabilities model in the Backend_api.php 2021-11-06 14:56:56 +01:00
Alex Tselegidis
00f54dcfec Added the new Unavailabilities_model @property to EA_Controller.php 2021-11-06 14:56:12 +01:00
Alex Tselegidis
c7bb9d3a47 Added new Unavailabilities_model.php to enable handling such records as an independent resource 2021-11-06 14:55:36 +01:00
Alex Tselegidis
2406eefd39 Added validation to the sort direction value 2021-11-06 13:30:12 +01:00
Alex Tselegidis
01dfdf22f1 Added manual imports so that the migration system works again 2021-11-06 11:15:32 +01:00
Alex Tselegidis
4020e40a25 Corrected settings and availabilities routes 2021-11-06 11:15:15 +01:00
Alex Tselegidis
169b9818a6 Use the new routes helper in the routes.php config file 2021-11-06 10:23:25 +01:00
Alex Tselegidis
308e41bbe1 Autoload the new routes_helper.php file 2021-11-06 10:22:09 +01:00
Alex Tselegidis
3476807b40 Added the routes helper file 2021-11-06 10:18:46 +01:00
Alex Tselegidis
ba77658551 Ported the api parser encode and decode into the model classes 2021-11-05 09:37:14 +01:00
Alex Tselegidis
95a4e94a53 The response helper function must properly set the status code and the headers 2021-11-05 08:31:37 +01:00
Alex Tselegidis
3c5be0d12b The set setting method could also get a NULL value 2021-11-05 08:28:59 +01:00
Alex Tselegidis
afc05577a4 Refactored the admins API controller (no engine code is being used). 2021-11-03 08:38:59 +01:00
Alex Tselegidis
ea659ccb9f The base model knows how to map an API resource field to a DB field. 2021-11-03 08:22:27 +01:00
Alex Tselegidis
c390a6552a Using the request helper without specifying a key should return the entire request body. 2021-11-03 08:22:05 +01:00
Alex Tselegidis
10ee3401e4 The API library can correctly sort and set the CORS headers 2021-11-03 08:21:30 +01:00
Alex Tselegidis
6eaa6e52a5 Added API resource mapping 2021-11-03 08:21:03 +01:00
Alex Tselegidis
4c6c5b5913 Remove the old and deprecated API_V1_Controller.php 2021-11-02 10:45:05 +01:00
Alex Tselegidis
7d3bc3104c Created new library that handles common API functionality. 2021-11-02 10:44:37 +01:00
Alex Tselegidis
c2127a28fb Added missing comments 2021-11-02 10:04:46 +01:00
Alex Tselegidis
dc50f8dee1 Updated @since tag 2021-11-02 09:24:28 +01:00
Alex Tselegidis
bdaa46459c The new settings model does not have the set_setting and get_setting values. 2021-10-29 13:21:03 +02:00
Alex Tselegidis
306e94a082 The delete model method does not return a result any more. 2021-10-29 13:20:33 +02:00
Alex Tselegidis
4ed7465784 Corrected the name of the exception variable 2021-10-29 13:16:21 +02:00
Alex Tselegidis
182cebfb74 Renamed the add_unavailable method to save_unavailable for consistency 2021-10-29 13:12:39 +02:00
Alex Tselegidis
e29c2198de Removed the delete_unavailable method 2021-10-29 13:11:56 +02:00
Alex Tselegidis
8b02cbb369 Added missing type hints for method params 2021-10-29 13:10:54 +02:00
Alex Tselegidis
3dee2ef4ef Added missing @method tag in phpdoc comments 2021-10-29 13:10:36 +02:00
Alex Tselegidis
8947500968 If the request does not have the application/json content type header then return NULL 2021-10-29 13:08:41 +02:00
Alex Tselegidis
d886f6db16 Override the CSRF validation to support the X-CSRF header. 2021-10-29 13:06:56 +02:00
Alex Tselegidis
3233c19571 Added overrides for all the framework classes as templates and for consistency 2021-10-29 13:04:26 +02:00
Alex Tselegidis
12ec5c1ac3 The request helper can now also fetch JSON-payload attributes 2021-10-29 12:54:49 +02:00
Alex Tselegidis
dd546164fb Common type casting functionality 2021-10-29 12:39:49 +02:00
Alex Tselegidis
b7305be038 Type casting for the Users_model.php 2021-10-29 12:39:38 +02:00
Alex Tselegidis
d62dd9b053 Type casting for the Settings_model.php 2021-10-29 12:39:32 +02:00
Alex Tselegidis
83777d35ba Type casting for the Services_model.php 2021-10-29 12:39:27 +02:00
Alex Tselegidis
791f1e38e4 Type casting for the Service_categories_model.php 2021-10-29 12:39:20 +02:00
Alex Tselegidis
879b58ad6a Type casting for the Secretaries_model.php 2021-10-29 12:39:14 +02:00
Alex Tselegidis
23cdaa2c6b Type casting for the Roles_model.php 2021-10-29 12:39:08 +02:00
Alex Tselegidis
e0dbdeccfc Type casting for the Providers_model.php 2021-10-29 12:39:02 +02:00
Alex Tselegidis
9338ec4445 Type casting for the Customers_model.php 2021-10-29 12:38:56 +02:00
Alex Tselegidis
6cc17d7bf5 Type casting for the Consents_model.php 2021-10-29 12:38:49 +02:00
Alex Tselegidis
d1b78397ef Type casting for the Admins_model.php 2021-10-29 12:38:41 +02:00
Alex Tselegidis
64205cb23b Type casting for the Appointments_model.php 2021-10-29 12:38:30 +02:00
Alex Tselegidis
76afdef30b Moved the instance handling logic to a re-usable library 2021-10-29 10:44:01 +02:00
Alex Tselegidis
18348e02a5 Added core migration class. 2021-10-29 10:19:10 +02:00
Alex Tselegidis
9a528e6734 Updated the class comments 2021-10-29 10:18:44 +02:00
Alex Tselegidis
8ecf389bf1 Updated all the API controllers to work with the updated code. 2021-10-28 14:01:27 +02:00
Alex Tselegidis
a280496294 Updated all the main controllers to work with the updated code. 2021-10-28 14:01:17 +02:00
Alex Tselegidis
61a718cb2f Updated the Timezones.php library to work with the updated code. 2021-10-28 14:00:48 +02:00
Alex Tselegidis
8e11dddf4a Updated the Synchronization.php library to work with the updated code. 2021-10-28 14:00:40 +02:00
Alex Tselegidis
44aea4febb Updated the Notifications.php library to work with the updated code. 2021-10-28 14:00:33 +02:00
Alex Tselegidis
23d80259d9 Updated the Ics_file.php library to work with the updated code. 2021-10-28 14:00:18 +02:00
Alex Tselegidis
f540922abc Updated the Google_sync.php library to work with the updated code. 2021-10-28 14:00:10 +02:00
Alex Tselegidis
e4c01f54f8 Updated the Availability.php library to work with the updated code. 2021-10-28 13:59:56 +02:00
Alex Tselegidis
adc6d00bb5 Updated the Google Analytics and Permissions helper functions. 2021-10-28 13:59:27 +02:00
Alex Tselegidis
5e4bf0bd22 Corrected variable and table name 2021-10-28 13:51:46 +02:00
Alex Tselegidis
b2d2a5a1ce Updated the new accounts library. 2021-10-28 13:29:15 +02:00
Alex Tselegidis
198db17100 Minor formatting changes 2021-10-28 13:28:37 +02:00
Alex Tselegidis
18e89e1ba4 Minor formatting change 2021-10-28 13:27:47 +02:00
Alex Tselegidis
110e5ec17d Properly read and write settings via the settings helper 2021-10-28 13:27:14 +02:00
Alex Tselegidis
af58f924b1 Autoload the string helper as well 2021-10-28 13:26:48 +02:00
Alex Tselegidis
4671055a52 Corrected typo on get customer role ID method 2021-10-28 13:26:31 +02:00
Alex Tselegidis
0aaff2eae1 Removed manual helper loading 2021-10-27 12:05:28 +02:00
Alex Tselegidis
2e9bf9d29d Automatically load all the core helper files 2021-10-27 12:03:51 +02:00
Alex Tselegidis
a241e8b2a4 Removed teh custom_exceptions_helper.php file 2021-10-27 12:02:24 +02:00
Alex Tselegidis
c1db2b636c The content array must be encoded before returned 2021-10-27 11:44:45 +02:00
Alex Tselegidis
c495cd8225 Added the success prop to the json exception response payload 2021-10-27 11:19:45 +02:00
Alex Tselegidis
4bec35d70c Removed the : void return typehint 2021-10-27 10:49:42 +02:00
Alex Tselegidis
85ac86caae Updated class comment 2021-10-27 10:46:32 +02:00
Alex Tselegidis
e0ad767ec7 Updated @property tags in EA_Controller.php 2021-10-27 10:06:58 +02:00
Alex Tselegidis
40e06d2f19 The base model class has all the deprecated methods for backwards compatibility. 2021-10-27 10:06:44 +02:00
Alex Tselegidis
97c7a2821d Created the users model class. 2021-10-27 10:05:43 +02:00
Alex Tselegidis
de4c232488 Migrated the user model logic into the accounts library 2021-10-27 10:05:26 +02:00
Alex Tselegidis
d914a52c02 Created the service categories model class. 2021-10-27 10:04:59 +02:00
Alex Tselegidis
65282bc5a2 Updated the settings model class. 2021-10-27 10:04:48 +02:00
Alex Tselegidis
175b6a9ffe Updated the services model class. 2021-10-27 10:04:42 +02:00
Alex Tselegidis
8022ab28af Updated the secretaries model class. 2021-10-27 10:04:35 +02:00
Alex Tselegidis
a4cd74863b Updated the roles model class. 2021-10-27 10:04:28 +02:00
Alex Tselegidis
beeb821f8a Updated the providers model class. 2021-10-27 10:04:21 +02:00
Alex Tselegidis
024479e5c6 Updated the customers model class. 2021-10-27 10:04:15 +02:00
Alex Tselegidis
07925c58ef Updated the consents model class. 2021-10-27 10:04:09 +02:00
Alex Tselegidis
a72a33abb1 Updated the appointments model class. 2021-10-27 10:04:01 +02:00
Alex Tselegidis
5f2e5f1d28 Updated the admins model class. 2021-10-27 10:03:52 +02:00
Alex Tselegidis
f5471b0f2b Renamed and updated the password helper 2021-10-24 22:00:59 +02:00
Alex Tselegidis
658c131f79 Renamed and updated the validation helper 2021-10-24 22:00:16 +02:00
Alex Tselegidis
584e624139 Added deprecated method stubs for backwards compatibility 2021-10-24 14:16:35 +02:00
Alex Tselegidis
fa6e48b344 Corrected property tag order 2021-10-24 14:13:20 +02:00
Alex Tselegidis
6417db8ca1 Added fallback support for the model class deprecations 2021-10-23 19:33:55 +02:00
Alex Tselegidis
bee96c172a Corrected typo in class comment 2021-10-23 19:32:55 +02:00
Alex Tselegidis
bc1380ca89 Added helper file with permission related functions. 2021-10-23 19:19:21 +02:00
Alex Tselegidis
a97b6a4e13 Added helper file with http related functions. 2021-10-23 19:08:08 +02:00
Alex Tselegidis
e55c68fcb4 Added @throws tag at the comments 2021-10-23 13:42:23 +02:00
Alex Tselegidis
d636f60cbc Added short argument explanation 2021-10-23 13:41:41 +02:00
Alex Tselegidis
0a6b596dec Added examples at the comments 2021-10-23 13:38:54 +02:00
Alex Tselegidis
c117eda101 Set the right @since value for the new helper files 2021-10-23 13:29:31 +02:00
Alex Tselegidis
6d5a961fc7 Added helper file with path related functions. 2021-10-23 13:28:01 +02:00
Alex Tselegidis
4a7cdd96b2 Added helper file with setting related functions. 2021-10-23 13:21:30 +02:00
Alex Tselegidis
30c08bf95a Changed the return comment 2021-10-23 13:20:39 +02:00
Alex Tselegidis
af656d70e2 Changed the return comment 2021-10-23 13:20:33 +02:00
Alex Tselegidis
d70e6f21ce Added helper file with session related functions. 2021-10-23 13:18:20 +02:00
Alex Tselegidis
7a85ae6fc8 Updated the get example. 2021-10-23 13:17:38 +02:00
Alex Tselegidis
aad8e38bea Added additional comment 2021-10-23 13:13:43 +02:00
Alex Tselegidis
863caa31fd Added helper file with environment related functions. 2021-10-23 13:11:19 +02:00
Alex Tselegidis
b14341c328 Validate $key argument with empty instead with is_null 2021-10-23 13:10:09 +02:00
Alex Tselegidis
31c324dd92 Updated the exception message. 2021-10-23 13:08:24 +02:00
Alex Tselegidis
8abeb4dbf2 Added new helper file with debugging related functions 2021-10-23 13:07:00 +02:00
Alex Tselegidis
85a6be1d7d Changed the exception instance to InvalidArgument exception. 2021-10-23 13:06:41 +02:00
Alex Tselegidis
1492963dee The config helper function can now also set a value. 2021-10-23 13:04:15 +02:00
Alex Tselegidis
727391aa8f Added default value to the config helper 2021-10-23 12:59:39 +02:00
Tthecreator
ff89857934
Update style of Client Form menu
Co-authored-by: Vitor Mattos <vitor@php.rio>
2021-10-20 22:18:40 +02:00
Thomas Saedt
9671def4ea Merge branch 'develop' into 1081_hide_data_fields 2021-10-20 22:12:47 +02:00
Alex Tselegidis
1664ac6f9f
Merge pull request #1119 from om-ha/patch-1
FIX Providers API incorrect `array_key_exists`
2021-10-18 13:58:42 +02:00
Alex Tselegidis
6606340da4 Update French translations (#1107). 2021-10-18 13:54:38 +02:00
Alex Tselegidis
6b179c3b58 When selecting the any provider option in the booking page then merge all the available hours of all providers that can serve the selected service (#1147). 2021-10-18 13:04:32 +02:00
Alex Tselegidis
86bc718782 Condier unavailable time periods that span into multiple days (#880). 2021-10-18 12:43:40 +02:00
Alex Tselegidis
03f5fed5a6 Merge branch 'lourdas-master' into develop 2021-10-04 09:38:20 +02:00
Alex Tselegidis
53acb6146c Mark required the fields of the settings page 2021-10-04 09:27:50 +02:00
Alex Tselegidis
0c0ac6a0b2 The backend appointment removal is using the notifications library 2021-10-04 09:26:12 +02:00
Alex Tselegidis
a210c32b73 Czech translation corrections 2021-10-04 09:25:44 +02:00
Vasileios Lourdas
0d708077ca Updated Greek language file.
Fixed a few typos and translated a couple of messages.
2021-09-26 20:01:24 +03:00
om-ha
a17c234698
FIX Providers API incorrect array_key_exists
- `array_key_exists` should search for they key `working_plan` within `$provider['settings']` and not `$provider['settings']['working_plan']`
2021-08-28 14:50:01 +03:00
Alex Tselegidis
49197b5c66 Use the right bootstrap CSS classes for the setting input field help blocks 2021-08-24 16:01:44 +03:00
Alex Tselegidis
591de3d35f Corrected model comments 2021-08-24 16:01:17 +03:00
Alex Tselegidis
7393c36462 Release v1.4.2 2021-07-27 11:31:43 +03:00
Alex Tselegidis
215c4f501e Release v1.4.2-beta.1 2021-07-19 18:25:36 +03:00
Alex Tselegidis
6103b6992d The timepicker sliders do not work when using an iOS device. #1026 2021-07-19 17:26:24 +03:00
Alex Tselegidis
5d513ea43f Resolve availability generation issue with 5 minute services. 2021-07-19 16:59:41 +03:00
Alex Tselegidis
9ddc820176 Set minimum service duration field value to honor the value of EVENT_MINIMUM_DURATION. #1068 2021-07-19 16:59:21 +03:00
Alex Tselegidis
5a039f2757 Missing Pacific (and potentially other) timezones (#980). 2021-07-19 16:07:26 +03:00
Alex Tselegidis
bdd45f448a
Merge pull request #1055 from LibreCodeCoop/pt_br_translate
Update pt_BR translations
2021-07-19 14:24:19 +03:00
Alex Tselegidis
ea8798d2a6 The model base class needs a constructor when running the app with PHP8.0 2021-07-19 14:03:40 +03:00
Alex Tselegidis
3c4e7923ce Removed duplicate row from the configuration file. 2021-07-19 13:42:29 +03:00
Alex Tselegidis
dfdbea6214 HTTP_ACCEPT_LANGUAGE is not set when executing the app from the console. 2021-06-14 10:21:43 +02:00
Thomas Saedt
bc87d5a573 [1081] added rudimentary translations for client form settings 2021-05-30 13:53:06 +02:00
Thomas Saedt
1bcbf9f71b [1081] Made show booking form field settings functional 2021-05-30 13:27:39 +02:00
Thomas S
ea2cdeff70 [1081] Added visual buttons to hide or show form fields 2021-05-29 20:58:08 +02:00
Thomas S
872640c46d [1081] Frontend hiding of fields 2021-05-28 15:39:14 +02:00
Thomas S
094b780fd8 [1081] Add new settings in db 2021-05-28 13:37:58 +02:00
Alex Tselegidis
4f0b2c6c8f Make sure admins do not get notified on appointment removals, if their notification setting is deactivated (#1074). 2021-05-17 12:57:06 +02:00
Vitor Mattos
ab07b585f0 Update translation 2021-04-16 20:51:31 -03:00
Vitor Mattos
de867ef4c5 Remove duplicated translate key 2021-04-16 20:33:14 -03:00
Vitor Mattos
ca57834262 New translation 2021-04-16 19:14:13 -03:00
Vitor Mattos
f6437ce1bc Update pt_BR translations 2021-04-16 14:08:59 -03:00
Winfried Mosler
95dfc866e1 fix calendar table events for roles other than admin 2021-04-07 10:52:09 +02:00
Alex Tselegidis
33693af996
Merge pull request #1022 from Mips2648/patch-1
fix notification to secretaries
2021-04-07 10:49:06 +02:00
Alex Tselegidis
f9bb741810 Merge branch 'add-ga4-support' of https://github.com/c0un7-z3r0/easyappointments into develop
# Conflicts:
#	application/language/german/translations_lang.php
2021-04-07 10:44:00 +02:00
Alex Tselegidis
25ca6a2349 Added additional translation files in the persian languages directory 2021-04-07 10:35:53 +02:00
Alex Tselegidis
65bc7a2092 Merge branch 'develop' of https://github.com/mhsenpc/easyappointments into develop
# Conflicts:
#	application/config/config.php
2021-04-07 10:35:00 +02:00
Alex Tselegidis
fc82005a41 German language corrections (#1009). 2021-04-07 10:32:15 +02:00
Alex Tselegidis
60254558a3 Merge branch 'master' of https://github.com/cbka/easyappointments into develop 2021-04-07 10:11:30 +02:00
Alex Tselegidis
1c763f3870 Support all-day events while syncing with Google Calendar (#1040). 2021-04-07 10:02:30 +02:00
Alex Tselegidis
718fbf97aa
Merge pull request #967 from bevanjkay/all-day-google-events
All day google events
2021-04-07 09:49:35 +02:00
David Kagerer
acbce19a50 feat: add ga4 property support
Since google analytics is using now GA4 the support for the new script was needed
2021-03-30 21:13:59 +02:00
cbka
015a01b58a
Update email.php 2021-03-27 19:56:40 +01:00
cbka
bf57e028e6
Update email.php 2021-03-27 19:40:36 +01:00
Alex Tselegidis
e79c2d558e Added comment at the end of the language files so that new keys can be easily inserted 2021-03-25 12:38:29 +01:00
Alex Tselegidis
0af112723d Added missing translation keys in language files 2021-03-25 12:34:46 +01:00
Alex Tselegidis
ecdb7a662e Czech language translation corrections 2021-03-25 12:08:55 +01:00
Alex Tselegidis
76672db959 Make sure that the duration of a service does not become less than the minimum acceptable value as otherwise it will make problems with the availability generation 2021-03-25 11:32:10 +01:00
Alex Tselegidis
e496105fac Added missing translation files into the language/*/ directories 2021-03-25 11:26:11 +01:00
Alex Tselegidis
0b604dc229 Added missing translation keys to that czech language file 2021-03-25 11:15:03 +01:00
Alex Tselegidis
b6a17d4e11 Missing language mappings would cause issues with the auto-detection of the user's language. 2021-03-22 19:18:38 +01:00
Mips2648
45273fe707
fix notification to secretaries 2021-03-12 19:48:19 +01:00
Alex Tselegidis
99a5423e41 Updated catalan translations files (thanks to Marc Folch) 2021-02-18 14:32:10 +01:00
Mohsen Shamohamadi
d6f96a6c17 Add support for Persian language 2021-02-07 17:33:58 +03:30
Alex Tselegidis
0b5938471e The availabilities API controller must use the Availability library (this change will also fix the PHP error, when processing a service with multiple attendants) (#990) 2021-01-27 13:40:01 +01:00
Alex Tselegidis
120421b3af Replaced the generation of the appointment hash with the use of CodeIgniter's random_string method, in order to avoid collisions (#986). 2021-01-21 14:10:13 +01:00
Alex Tselegidis
7c9137f69d Make sure the selected hour is checked before selecting a provider on behalf of the customer, if he selected the any-provider option (#982). 2021-01-20 15:21:59 +01:00
Alex Tselegidis
7718b32cfb Removed some breaks from the default company working plan 2021-01-08 12:36:50 +02:00
Alex Tselegidis
2c67f7ce26 Correctly check for the assigned providers when notifying secretaries (#966). 2021-01-08 12:07:08 +02:00
Bevan Kay
edace7b002 Add ability to sync all-day Google Calendar Events 2021-01-07 16:10:47 +11:00
Alex Tselegidis
5d73fafc31 Release v1.4.1 2020-12-17 16:54:58 +02:00
Alex Tselegidis
5a52bde05a Additional check for the provided user props via the API 2020-12-17 16:49:04 +02:00
Alex Tselegidis
cf7bad9f19 Always display events in the provider's timezone in the backend calendar pages 2020-12-14 20:41:21 +02:00
Alex Tselegidis
5512731c41 Added customer data in the book success page 2020-12-14 20:40:56 +02:00
Alex Tselegidis
5df1bd4902 Made the timezone and language fields required, in the backend customers page 2020-12-14 20:40:10 +02:00
Alex Tselegidis
b7ff6cbc16 Include the moment timezone support file in backend pages 2020-12-14 20:38:34 +02:00
Alex Tselegidis
17e1f77a69 Changed the class name for consistency 2020-12-14 20:37:30 +02:00
Alex Tselegidis
bae970d257 Sync appointment with customer's Google Calendar in the book success page needs the correct timezone 2020-12-14 20:37:08 +02:00
Alex Tselegidis
f77ceeff84 Corrected click event behavior of the captcha refresh button 2020-12-14 10:48:36 +02:00
Alex Tselegidis
0d5f673ecf User timezone must not be empied by default as it is required. 2020-12-14 09:53:16 +02:00
Alex Tselegidis
731fb52ab4 Display confirmation modal when disabling a connected Google Calendar Sync (#955). 2020-12-12 14:22:25 +02:00
Alex Tselegidis
2dc5439b5d The password must be provided when creating a new user (#954) 2020-12-11 21:18:33 +02:00
Alex Tselegidis
36def8c52c Corrections in the API endpoints (#950) 2020-12-11 21:16:49 +02:00
Alex Tselegidis
3381b998a1 Check for other services when calculating multiple attendants number availability (#948). 2020-12-11 12:44:29 +02:00
Alex Tselegidis
7bf1d536f3 Updated the facebook URL in the about page. 2020-12-11 09:55:54 +02:00
Alex Tselegidis
ae3e0b1dcb Google Calendar sync must not break when syncing all day events (#945). 2020-12-10 11:31:59 +02:00
Alex Tselegidis
9133aeedd6 Applied Captcha fixes in the booking page 2020-12-09 21:28:26 +02:00
Alex Tselegidis
29a0fadf32 Release v1.4.0 2020-12-09 16:16:03 +02:00
Alex Tselegidis
bde91f5a14 Ensure that multiple attendant services can be modified with proper availability. 2020-12-09 15:32:39 +02:00
Alex Tselegidis
75905752f7 Adding missing parent constructor call in Privacy.php controller 2020-12-09 14:55:27 +02:00
Alex Tselegidis
39d4f3185e Removed [AJAX] string from controller comments. 2020-12-09 14:46:27 +02:00
Alex Tselegidis
b87be634b4 Applied same default data for both console and UI installation 2020-12-09 14:45:55 +02:00
Alex Tselegidis
4252bc8d0b Corrected the modal header 2020-12-09 14:29:02 +02:00
Alex Tselegidis
8a68e97f94 Reformatted code files 2020-12-09 14:17:45 +02:00
Alex Tselegidis
cc44f3e0c6 Corrected timezone support when syncing events with Google Calendar 2020-12-09 14:07:14 +02:00
Alex Tselegidis
022644b59e Corrected method call argument 2020-12-09 14:07:01 +02:00
Alex Tselegidis
6fe10a919b Updated the cache bust token 2020-12-08 15:25:14 +02:00
Alex Tselegidis
6e2b649955 Changed the default encryption key value 2020-12-08 15:25:02 +02:00
Alex Tselegidis
ee1aa81b6e Typo 2020-12-08 14:49:17 +02:00
Alex Tselegidis
22ac631995 Updated copyright information in backend 2020-12-08 14:16:42 +02:00
Alex Tselegidis
e92902f332 Backend users and services page would register the tab content events again and again 2020-12-08 13:23:37 +02:00
Alex Tselegidis
0aa41d0927 Corrected config set for language in parent controller 2020-12-08 13:22:46 +02:00
Alex Tselegidis
0631dbadf9 Fixed the validate_username model method. 2020-12-08 11:00:31 +02:00
Alex Tselegidis
9655feca6c Corrected issue with table view and duplicate appointments 2020-12-08 10:17:24 +02:00