RAD Server Industry Template - Hospitality Survey Application - Setup Guide
RAD Server Industry Template - Hospitality Survey Application - Setup Guide
The template consists of four different projects that interconnect with each other. The projects
are:
You should deploy and run the projects in the following order:
1) The Hospitality Survey Setup app will help you set up your database, the tables and data,
and your EMS user accounts.
2) The Hospitality Survey EMS is the RAD Server side REST resource which both the
Hospitality Survey Client and the Hospitality Survey Admin interface with. It should be
deployable on Windows and Linux through IIS, Apache, or the standalone EMS server.
3) The Hospitality Survey Client is a RAD Studio client application for Android, iOS, macOS
and Windows. The client application should allow you to select a tenant from your RAD Server
and then log in as a user. Once logged in, it will download the survey data for your current
tenant and allow the survey to be filled out. Once the survey is complete it can be submitted
back to the server and a new survey can be started.
4) The Hospitality Survey Admin app is an AngularJS application for the web. You should be
able to log into the application with your Tenant ID and RAD Server user ID. The web app
should allow you to view statistics and graphs about the results of the survey questions and
each individual question and answer. You can also export a list of emails collected from the
surveys.
You will need two tenant IDs already set up in RAD Server to be able to complete the setup
process. You need 5 user account spaces available (you should delete your test user).
Set up a user:
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/EMS_Console_UI
The default tenant 1 used in the setup is as follows with a password of "secret":
00000000-0000-0000-0000-000000000001
Step 1:
You will need to set a path to your stores database. It will be created if it does not exist. The
default is:
C:\Users\Public\Documents\Embarcadero\EMS\HOSPITALITYSURVEY.IB
You will need to set a path to your EMSServer database. The default is:
C:\Users\Public\Documents\Embarcadero\EMS\EMSSERVER.IB
Step 2:
When you run Setup Users you will need to provide the user account as mentioned above.
Step 3:
Be sure to update the tenant IDs to to match your tenant IDs. You can skip this step if you don't
need to modify the existing survey questions. Otherwise customize them to your liking and
Re-Generate.
Step 4:
At this point the tenants, users, database, tables, and data should now be setup for the
template.
II. HospitalitySurveyEMS
Step 1:
Open the RADServerHospitalitySurvey project and configure the path to your EMS database
and your stores database in the TFDConnection component in both DataModules.
Step 2:
Run the project to deploy your edge module into the EMS Development Server.
III. HospitalitySurveyClient
Step 1:
Step 2:
Step 3:
Run the project to deploy your client to Windows. You should be able to select your tenant, log
into the store, log into a user account, and complete a survey.
IV. HospitalitySurveyAdmin
Step 1:
You should be able to open index.html in your browser and log in with your tenant and a
manager account (created in the Setup step).
If you selected the same tenant that you completed a survey in from the HospitalitySurveyClient
you should see your survey stats on the Dashboard and results in the Surveys tab.
You can also deploy the HospitalitySurveyAdmin files to the same web server as your EMS
Server module or a different web server as long as your CORS permissions are setup correctly.
Step 1: Set a path for your stores database. Set the path to the EMSServer database.
The stores database is created, used, and populated with data in Step 4.
Step 2: Setup the demo users on the EMS Server using the EMS API.
You will need your EMSServer Host, Port, and Tenant IDs in this step. The Setup will
connect to your EMSServer and create groups and users for the template.
You can customize the questions in your survey on Step 3. The fields are:
Pressing the Re-Generate button will create new INSERT queries on Step 4.
Step 4: Create the tables and insert the questions data into your stores database with the
Initialize All button.
This step contains the SQL setup queries for the stores database. There are three tables
which will be set up which are: SURVEYS, QUESTIONS, RESULTS
Each table will be dropped and re-created when the queries are run (any existing data in
the tables will be lost). In the third TMemo field the SQL queries from your questions
defined in Step 3 will appear.
Complete: After step 4 the databases and users should be setup and ready for you to use
the client and admin areas.
Your EMS database and users should be setup at this point. You should be able to
connect the Hospitality Survey EMS package to your new stores database and compile
the package.
Once your Hospitality Survey EMS package is running in the EMS Development Server
you should be able to open and compile the Hospitality Survey Client.
After you submit some survey results via the Hospitality Survey Client you should be
able to log into the Hospitality Survey Admin and see your results.
The end points mainly return the FireDAC JSON format which can be easily loaded in to a RAD
Studio client or access via standard JSON in a non-RAD Studio environment.
Endpoints:
GET /survey/ - Download the survey questions in FireDAC JSON format.
GET /tenants/ - Download a list of the server Tenants which are active in FireDAC
JSON format.
// SurveyModule.pas
[ResourceName('survey')]
//
procedure Get(const AContext: TEndpointContext; const ARequest: TEndpointRequest; const
AResponse: TEndpointResponse);
//
[ResourceSuffix('{query}/*')]
procedure GetData(const AContext: TEndpointContext; const ARequest: TEndpointRequest;
const AResponse: TEndpointResponse);
//
[ResourceSuffix('{query}')]
procedure PostData(const AContext: TEndpointContext; const ARequest: TEndpointRequest;
const AResponse: TEndpointResponse);
//
//
if ARequest.Params.Values['query'] = 'results' then
if ARequest.Params.Values['query'] = 'stats' then
if ARequest.Params.Values['query'] = 'details' then
if ARequest.Params.Values['query'] = 'emails' then
//
//
// TenantModule.pas
[ResourceName('tenants')]
procedure Get(const AContext: TEndpointContext; const ARequest: TEndpointRequest; const
AResponse: TEndpointResponse);
User permissions:
User permissions are governed by the {$DEFINE GROUPPERMISSIONS}. You can comment
or uncomment this line for dev and live deployments. User permissions are ignored when
{$DEFINE GROUPPERMISSIONS} is commented out.
The survey is dynamically generated based on the questions that are downloaded from the
Hospitality Survey EMS server. Each question is assigned to a TFrame which displays that type
of question.
Architecture:
The architecture of the app is built in a rapid application development style using TTabControl
for handling pages and individual frames for each page. TActionList is used to consolidate much
of the code in the MainForm.
Forms:
uMainForm.pas - Contains the main form of the application including the TTabControl with the
design time frames.
uTenantListForm.pas - Contains a separate form for selecting the active Tenant ID.
DataModules:
uTenantsDM.pas - Contains the non visual components for downloading the Tenant list.
Dynamic Frames:
uComboBoxFrame.pas - Contains the combo box survey question type.
uCompleteFrame.pas - Contains the complete button for the survey.
uEditFrame.pas - Contains the edit survey question type.
uRatingBarFrame.pas - Contains the star rating track bar survey question type.
uSurveyHeaderFrame.pas - Contains the header for the top of the survey.
uYesNoFrame.pas - Contains the Yes/No survey question type.
If you want to make changes to the design time frames be sure to edit the frame itself and not
the version of it that is embedded in the MainForm. This will keep your changes consolidated in
one place. If you changes don't update in the MainForm you can delete the Frame from the
MainForm and re-add it. Be sure to add it to the correct Tab and set to Align Client after you add
the frame.
Credits:
Restaurant Image
http://www.freeimages.com/photo/restaurant-1233046
http://www.freeimages.com/search/restaurant
Note: You must log in with your Tenant ID as the Store ID and not the Tenant Name.
Installation:
Within the js/admin.js file you should configure the $scope.ServerURL variable to point to the
host where you RAD Server install is located. The default is: http://localhost:8080/
Within the js/admin.js file you can configure the CORS settings for dev and live versions within
the $scope.getHeader function. By default it is setup for development. When you want to switch
to the live version (and enable user permissions) you can uncomment the line containing the
X-Embarcadero-Session-Token and comment out the line without it. Switch back and forth
between the two as needed.
There is a similar setting in the Hospitality Survey EMS server for configuring permissions for
dev or live.
The Hospitality Survey EMS endpoint returns FireDAC tables as JSON. This allows
interchangable compatibility between RAD Studio and clients like AngularJS. Here is an
example of walking through the FireDAC table JSON tree to get to the records:
data["FDBS"]["Manager"]["TableList"][0]["RowList"]
Admin Dashboard: